Novo método de exploração de vulnerabilidades do Chrome v8: fuga de sandbox através da divulgação da implementação de Oddball não inicializada.

Contornar o HardenProtect do Chrome v8 através da exposição do Valor Sentinel

Introdução

O valor sentinel é um valor especial em algoritmos, geralmente utilizado como condição de término em algoritmos de loop ou recursivos. No código-fonte do Chrome, existem muitos valores sentinel. Anteriormente, houve pesquisas que apresentaram como executar código arbitrário dentro da sandbox ao vazar o objeto TheHole. A equipe do Google rapidamente atualizou os reparos relacionados.

Além do objeto TheHole, existem muitos outros objetos nativos no v8 que não devem vazar para o JS. Este artigo discutirá o objeto Uninitialized Oddball, cujo método ainda está disponível na versão mais recente do V8. Vale a pena notar que esse método possui certa universalidade e apareceu em várias vulnerabilidades.

Exclusivo: Revelado como contornar o Chrome v8 HardenProtect através da exposição do Sentinel Value

Valor Sentinel no V8

A maior parte dos objetos nativos do v8 está definida no arquivo v8/src/roots/roots.h, e esses objetos estão dispostos sequencialmente na memória. Uma vez que um objeto nativo que não deve ser vazado seja exposto ao Javascript, é possível executar qualquer código dentro do sandbox.

Para validar este método, podemos modificar a função nativa do v8 para vazar Uninitialized Oddball para o JavaScript. Especificamente, podemos modificar o deslocamento relativo do isolate na função %TheHole().

Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value

Contornar HardenType

A utilização de Uninitialized Oddball pode permitir leituras e gravações relativamente arbitrárias. A chave está na função de leitura do JavaScript otimizada, que apenas verifica se a propriedade prop do obj está correta, mas não verifica o valor com obj.prop como chave; em vez disso, calcula diretamente o deslocamento de acordo com a semântica do JavaScript, obtendo o valor do array. Isso resulta em confusão de tipos durante o cálculo, permitindo leituras arbitrárias.

Devido ao Uninitialized Oddball estar classificado como mais anterior e primitivo na memória v8, é mais fácil de falsificar em comparação com o objeto TheHole, sendo o método preferido para contornar as correções do TheHole.

A sugestão de solução é adicionar uma verificação do array map ao retornar elementos do array a partir da função otimizada, evitando o cálculo direto do deslocamento para retornar valores.

Revelação exclusiva de como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value

Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value

Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value

Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value

Aviso de Risco PatchGap

Além de prestar atenção às vulnerabilidades históricas, é importante observar as falhas que os fabricantes silenciosamente corrigem nos componentes básicos. Atualmente, o Skype ainda não corrigiu essa vulnerabilidade. A forma de exploração é ligeiramente diferente em x86 e x64, mas ambas podem permitir leitura e escrita arbitrárias.

Desta vez, o PatchGap não apenas envolve a Issue 1352549, mas a divulgação do novo método também reduziu significativamente a dificuldade de exploração de vulnerabilidades semelhantes. Os hackers quase não precisam de pesquisa para completar a exploração completa de qualquer vazamento do Uninitialized Oddball que antes era necessário.

Revelação exclusiva sobre como contornar o HardenProtect do Chrome através da divulgação do Sentinel Value

Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value

Resumo

No v8 existem muitos outros valores Sentinel, que podem apresentar problemas semelhantes. Isso nos dá algumas pistas:

  1. Outras fugas de Uninitialized Oddball também são fáceis de realizar RCE no v8.

  2. A questão se esses problemas devem ser formalmente considerados como questões de segurança ainda é controversa.

  3. Durante os testes de fuzz, talvez deva considerar adicionar vários valores Sentinel como variáveis.

De qualquer forma, este tipo de problema encurtará significativamente o ciclo de exploração completo dos hackers. Devemos manter vigilância sobre isso.

Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value

SENC-0.72%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 5
  • Compartilhar
Comentário
0/400
gas_fee_therapistvip
· 22h atrás
v8 novamente estragou tudo, a segurança está cada vez mais a bombear.
Ver originalResponder0
GreenCandleCollectorvip
· 22h atrás
Essa vulnerabilidade é bastante hardcore, não é?
Ver originalResponder0
LightningPacketLossvip
· 22h atrás
Este bug foi resolvido novamente. Precisamos consertar rapidamente nosso datacenter.
Ver originalResponder0
ChainMelonWatchervip
· 22h atrás
Ah, isso... o Irmão Fura-túneis lançou novo trabalho.
Ver originalResponder0
ImpermanentLossFanvip
· 22h atrás
Eu não acredito, a versão 8 ainda tem esse tipo de vulnerabilidade.
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)