Exploração da vulnerabilidade Sentinel Value do motor V8: contornando a proteção para executar código arbitrário

robot
Geração de resumo em curso

Explorar a utilização do Sentinel Value para contornar o mecanismo de proteção do Chrome V8

Valor sentinel é um valor especial em algoritmos, geralmente usado como condição de término para algoritmos de loop ou recursão. No código-fonte do Chrome, existem vários valores sentinel. Estudos anteriores mostraram que, ao vazar o objeto TheHole, é possível realizar execução de código arbitrário dentro do sandbox para certas CVEs. A equipe do Google rapidamente atualizou os CVEs relevantes no GitHub cerca de uma semana após publicarmos sobre a elisão dessa mitigação.

A partir do código-fonte do Chrome, pode-se ver que há uma correção de mitigação para a execução de código arbitrário relacionada ao objeto TheHole. No entanto, na verdade, existem muitos outros objetos nativos no V8 que não deveriam ser expostos ao JS. Este artigo discutirá o objeto Uninitialized Oddball, que teve seu método de contorno inicialmente apresentado no Issue1352549. Vale ressaltar que, atualmente, esse método ainda pode ser utilizado na versão mais recente do V8, e o Google ainda não fez uma correção para isso.

Este método possui uma forte versatilidade:

  1. Issue1216437(CVE-2021-30551) foi o primeiro a apresentar o POC que vaza internal uninitialized oddball.

  2. Issue1314616(CVE-2022-1486)中的 POC 也直接泄露了 UninitializedOddball。

  3. A emissão 1352549( No CVE ) não pode ser ignorada.

Isto tudo demonstra a necessidade de reavaliar o software que pode ser afetado pelo PatchGap.

Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgaçã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 eles estão organizados de forma adjacente na memória. Uma vez que esses objetos nativos, que não devem ser vazados, sejam vazados para o JavaScript, isso pode levar à execução de código arbitrário dentro do sandbox.

Para validar a eficácia deste método na versão mais recente do V8, podemos modificar a função nativa do V8 %TheHole() para que retorne Uninitialized Oddball.

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

Contornar HardenType

O código completo é fornecido no Issue1352549, e após a sua extração e simplificação, ainda podemos realizar leituras relativamente arbitrárias no V8 11.0.0.

Ao descompilar a função read do JavaScript otimizada, pode-se ver que, ao verificar obj.prop, não se verifica o Value com obj.prop como chave, mas sim que se calcula diretamente o deslocamento para obter o valor do array de acordo com a semântica do JavaScript. Isso leva a uma confusão de tipos durante o cálculo, permitindo a leitura arbitrária.

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

Quando uninitialized_oddball é passado, começa-se a calcular a partir de obj, e a leitura arbitrária é concluída na instrução vmovsd xmm0,[r9+r11*8+0x7], com os dados armazenados no registrador xmm0.

Uma vez que uninitialized_oddball está classificado como mais primitivo e mais à frente na memória do V8, é mais fácil de forjar, sendo o método preferido para contornar. Para escrita arbitrária, consulte a análise de construção do Issue1352549.

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

A sugestão de correção é adicionar uma verificação do array map quando a função otimizada retornar elementos do array, evitando calcular diretamente o deslocamento para retornar os valores do array.

Aviso PatchGap

Após a análise do Issue1352549, investigámos o software que poderia ter PatchGap e descobrimos que o Skype ainda não corrigiu essa vulnerabilidade. A leitura e escrita arbitrária em x86 é ligeiramente diferente, pois não há compressão de endereços, sendo diretamente relativa a todo o processo.

Na utilização do Skype, embora o ASLR tenha sido ativado, devido ao tamanho excessivo do arquivo, os hackers podem facilmente ler e escrever em um endereço fixo, o que pode levar à leitura e gravação do conteúdo do arquivo do Skype. Combinando isso com a análise de PE e outras abordagens tradicionais, não é difícil completar toda a cadeia de exploração da vulnerabilidade.

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

Desta vez, o PatchGap não só envolve o Issue1352549, como a divulgação do novo método de contorno também levou a uma grande redução na dificuldade de exploração de problemas semelhantes ao Issue1314616 e Issue1216437. Os hackers praticamente não precisam de custos de pesquisa para conseguir uma exploração completa de qualquer vazamento anterior da vulnerabilidade uninitialized_oddball.

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

Resumo

Este artigo discute brevemente a implementação de leitura arbitrária através da exposição do uninitialized_Oddball. Existem muitos outros valores Sentinel no V8, e é fácil encontrar falhas que não são int3 durante os testes. Uma vez que Uninitialized_Oddball e TheHole podem contornar as proteções do V8, outros valores Sentinel podem também ter problemas semelhantes.

Isso nos dá algumas ideias:

  1. Outros uninitialized_Oddball vazamentos podem também permitir facilmente a RCE do V8.

  2. O Google rapidamente corrigiu a bypass do TheHole, mas o problema de contornar o ASLR utilizando a coleta de lixo permanece em suspenso há muito tempo, o que indica que ainda existe uma fronteira obscura sobre se questões semelhantes são consideradas um problema de segurança formal.

  3. Se considerado um problema de segurança formal, é necessário no fuzzer considerar a inclusão de valores Sentinel como %TheHole/uninitialized_Oddball como variáveis, para explorar outras primitivas de exploração.

Independentemente de tais questões serem formalmente consideradas problemas de segurança, elas irão encurtar significativamente o ciclo em que os hackers podem explorar completamente.

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 exposição do Sentinel Value

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

Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 6
  • Partilhar
Comentar
0/400
OptionWhisperervip
· 9h atrás
Esta vulnerabilidade é grave, pequenos detalhes podem ser fatais.
Ver originalResponder0
OnchainFortuneTellervip
· 9h atrás
Este bug fantástico.
Ver originalResponder0
ExpectationFarmervip
· 10h atrás
As vulnerabilidades são realmente difíceis de prevenir!
Ver originalResponder0
MysteryBoxBustervip
· 10h atrás
o v8 estragou-se novamente, está quente!
Ver originalResponder0
BlockchainFriesvip
· 10h atrás
Fiquei tonto só de olhar para o título.
Ver originalResponder0
alpha_leakervip
· 10h atrás
Código executado, bull! Irmão do bug
Ver originalResponder0
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)