Análise Profundidade das Vulnerabilidades de Segurança do Valor Sentinel do Motor Chrome V8

robot
Geração de resumo em curso

Discussão aprofundada sobre os riscos de segurança do Sentinel Value no motor Chrome V8

O valor sentinel é um valor especial em algoritmos, geralmente utilizado como condição de término em algoritmos de loop ou recursivos. O código-fonte do Chrome utiliza amplamente o valor sentinel. Recentemente, pesquisadores de segurança descobriram que era possível executar código arbitrário dentro do sandbox do Chrome através da exposição do objeto TheHole. A equipe do Google rapidamente corrigiu essa vulnerabilidade.

No entanto, existem outros objetos nativos no V8 que não devem ser expostos ao JavaScript. Este artigo se concentrará no objeto Uninitialized Oddball, cuja exposição pode levar a riscos de segurança mais amplos. Atualmente, esse método ainda pode ser usado na versão mais recente do V8, e o Google ainda não corrigiu esse problema.

É importante notar que este método possui uma forte universalidade:

  1. O poc que vaza oddball interno não inicializado foi proposto pela primeira vez no CVE-2021-30551.

  2. O poc do CVE-2022-1486 também revelou diretamente UninitializedOddball.

  3. Issue1352549( ainda não atribuiu CVE) que exibe o código de exploração completo.

Estes casos demonstram plenamente a necessidade de realizar uma verificação abrangente do software que pode ser afetado. Até ao momento, o Skype ainda não corrigiu a vulnerabilidade.

Valor Sentinel no V8

A maioria dos objetos nativos do V8 está definida no arquivo v8/src/roots/roots.h, e esses objetos estão dispostos de forma adjacente na memória. Uma vez que um objeto nativo que não deveria ser vazado é exposto ao JavaScript, pode-se potencialmente executar qualquer código dentro da sandbox.

Para validar a eficácia deste método na versão mais recente do V8, podemos modificar a função nativa do V8 para vazar o Oddball Não Inicializado para o JavaScript. O método específico é modificar o deslocamento relativo do isolate na função %TheHole() para que ela retorne o Oddball Não Inicializado.

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

Contornar a proteção HardenType

Ao simplificar o código fornecido no Issue1352549, podemos implementar a leitura relativamente arbitrária na versão V8 11.0.0:

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

Quando %TheHole() retorna UninitializedOddball, a função read otimizada em JavaScript calculará diretamente o deslocamento de acordo com a semântica do JavaScript, sem verificar o Value de obj.prop, resultando em confusão de tipos e permitindo leituras arbitrárias.

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

Semelhante ao objeto TheHole, o uninitialized_oddball é classificado antes na memória V8 e é mais primitivo, tornando-o mais fácil de falsificar. Depois que as medidas de mitigação do TheHole foram contornadas, esse método tornou-se a solução de contorno preferida.

A solução recomendada é verificar o mapa do array ao retornar elementos do array na função otimizada, evitando calcular diretamente o deslocamento para retornar valores do array.

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

Aviso de PatchGap

Após a análise do Issue1352549, descobrimos que o Skype ainda não corrigiu essa vulnerabilidade. No ambiente x86, a leitura e escrita arbitrárias são ligeiramente diferentes: devido à ausência de compressão de endereços, a leitura e escrita arbitrárias são feitas diretamente em relação a todo o processo.

Embora o Skype tenha ativado o ASLR, devido ao tamanho do arquivo, colocando-o diretamente na memória de 4GB, um atacante só precisa ler e escrever em endereços específicos para ter uma grande probabilidade de ler e escrever o conteúdo do arquivo do Skype. Combinando métodos tradicionais como a análise PE, completar toda a cadeia de exploração de vulnerabilidades não é uma tarefa difícil.

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

Desta vez, o PatchGap não se limita ao Issue1352549; a divulgação do novo método de bypass também diminuiu significativamente a dificuldade de exploração de vulnerabilidades semelhantes ao CVE-2022-1486 e CVE-2021-30551. Os atacantes quase não precisam de pesquisa adicional para explorar completamente qualquer vulnerabilidade que vaze 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 exploração da leitura arbitrária de primitivas através da divulgação do Uninitialized_Oddball no valor Sentinel. Existem outros valores Sentinel no V8, que frequentemente causam falhas durante os testes. Dado que Uninitialized_Oddball e TheHole podem permitir a contornagem de etapas no V8, temos motivos para suspeitar que outros valores Sentinel também possam causar problemas semelhantes.

Isso nos dá a seguinte revelação:

  1. Outros vazamentos uninitialized_Oddball podem também permitir a execução remota de código (RCE) no V8.

  2. O Google rapidamente corrigiu a exploração do TheHole, mas a utilização do garbage collection para contornar o ASLR, que foi deixada de lado a longo prazo, indica que ainda existe uma fronteira vaga sobre se tais problemas são considerados questões de segurança formal.

  3. Se considerado um problema de segurança formal, é necessário incluir valores Sentinel como %TheHole/uninitialized_Oddball como variáveis no fuzzer para descobrir outras utilizações de primitivas.

De qualquer forma, esse tipo de problema encurtará significativamente o ciclo de tempo para que os atacantes consigam uma exploração completa.

Descoberta exclusiva de 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

Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através do vazamento 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
  • 4
  • Partilhar
Comentar
0/400
BloodInStreetsvip
· 12m atrás
comprar na baixa não é tão bom quanto comprar em casa… as brechas são mais profundas do que o mercado
Ver originalResponder0
GateUser-afe07a92vip
· 07-12 17:35
O que está a fazer o Google? Isso também vazou.
Ver originalResponder0
SelfRuggervip
· 07-12 17:34
Parece que a V8 vai ter grandes novidades este ano.
Ver originalResponder0
SchrodingerGasvip
· 07-12 17:16
Dormiu a noite toda e ainda está a trabalhar o v8, quem vai pagar este gás?
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)