Análise de exploração da vulnerabilidade Sentinel Value do motor Chrome V8: RCE alcançado sem necessidade de pesquisa adicional

robot
Geração de resumo em curso

Análise da Exploração da Vulnerabilidade de Valor Sentinel no Motor Chrome V8

O valor sentinel é um valor especial em algoritmos, normalmente utilizado como condição de término em algoritmos de loop ou recursão. Existe uma grande quantidade de valores sentinel no código-fonte do Chrome. Estudos anteriores mostraram que, ao vazar o objeto TheHole, é possível executar qualquer código dentro da sandbox do Chrome. A equipe do Google posteriormente corrigiu as vulnerabilidades relacionadas.

No entanto, existem outros objetos nativos em V8 que não devem ser expostos ao JS. Este artigo discute o objeto Uninitialized Oddball, cuja divulgação pode levar a métodos de contorno de sandbox que ainda estão disponíveis na versão mais recente do V8.

É importante notar que este método tem uma certa universalidade:

  1. CVE-2021-30551 O PoC inicial é a divulgação de um oddball interno não inicializado.

  2. O PoC do CVE-2022-1486 também vazou diretamente UninitializedOddball.

  3. Issue1352549 ( não alocado CVE) descreve detalhadamente o método de exploração.

Estes casos mostram que a possibilidade de ataques utilizando a exploração de Uninitialized Oddball merece atenção.

Valor Sentinel no V8

A maior parte dos objetos nativos do V8 é definida no arquivo v8/src/roots/roots.h, e eles estão dispostos de forma adjacente na memória. Uma vez que esses objetos nativos, que não deveriam ser divulgados, são expostos ao JavaScript, pode-se potencialmente executar qualquer código dentro do sandbox.

Para verificar isso, pode-se modificar o valor de retorno da função nativa %TheHole() do V8 para Uninitialized Oddball.

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

Contornar a proteção HardenType

A Issue1352549 fornece o código completo de contorno. A lógica central simplificada é a seguinte:

javascript function read(obj, idx) { return obj[idx]; }

let uninitialized = %TheHole(); let arr = [1.1]; let res = read(uninitialized, 0x12345); %DebugPrint(res);

Este código ainda pode realizar leituras relativas em versões mais recentes do V8 11.0.0.

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

Analisando o código de montagem da função read otimizada, pode-se perceber que ela apenas verifica se a propriedade prop do obj está correta, mas não verifica o Value do obj.prop como chave. Isso leva a uma confusão de tipos durante o cálculo, permitindo a leitura arbitrária.

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

Quando uninitialized_oddball é passado, começa a calcular a partir do obj a partir de uma instrução específica, completando a leitura arbitrária na instrução vmovsd xmm0,[r9+r11*8+0x7], com os dados armazenados no registrador xmm0.

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

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

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

Aviso PatchGap

Durante a investigação de software que pode ter a vulnerabilidade PatchGap, foi descoberto que o Skype ainda não corrigiu essa falha. Na arquitetura x86, devido à ausência de compressão de endereços, a leitura e escrita arbitrárias são diretamente em relação a todo o processo.

Embora o Skype tenha ativado o ASLR, devido ao seu tamanho de arquivo, colocado diretamente na memória de 4GB, um atacante só precisa ler e gravar em um endereço fixo, tendo uma grande probabilidade de ler e gravar o conteúdo do arquivo do Skype. Combinando isso com métodos tradicionais como a análise PE, é possível completar toda a cadeia de exploração de vulnerabilidades.

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

Desta vez, o PatchGap não apenas envolve o Issue1352549, mas também reduziu significativamente a dificuldade de exploração de problemas semelhantes como o Issue1314616 e o Issue1216437. Os hackers quase não precisam de pesquisa adicional para conseguir uma exploração completa de qualquer vazamento do uninitialized_oddball.

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

Resumo

Este artigo apresenta um método para realizar leitura arbitrária através da revelação de uninitialized_Oddball no valor Sentinel. Existem outros valores Sentinel no V8 que podem causar problemas semelhantes. Isso nos dá a seguinte lição:

  1. Outras vazamentos uninitialized_Oddball podem também possibilitar facilmente RCE do V8.

  2. Existe ainda controvérsia sobre se tais questões devem ser formalmente tratadas como questões de segurança.

  3. No fuzzer, pode-se considerar adicionar valores sentinel como %TheHole/uninitialized_Oddball como variáveis para explorar outras utilizações primitivas.

De qualquer forma, esse tipo de problema irá encurtar significativamente o ciclo para os hackers explorarem completamente.

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

SENC1.24%
Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • 5
  • Republicar
  • Partilhar
Comentar
0/400
CoffeeNFTradervip
· 07-22 08:13
Mais uma vulnerabilidade de segurança, que preocupação!
Ver originalResponder0
Hash_Banditvip
· 07-21 21:23
a mineração do motor js acabou de se tornar real...exploração de dificuldade no máximo
Ver originalResponder0
ConsensusDissentervip
· 07-20 00:25
Outro buraco negro de código apareceu, é assustador.
Ver originalResponder0
Blockblindvip
· 07-20 00:19
O v8 também tem uma falha tão grande? Estou a rir até morrer.
Ver originalResponder0
BlockchainTalkervip
· 07-20 00:12
na verdade, fiquei surpreso que o V8 ainda tem dificuldades com isto... p.s. onde está a minha isolamento de runtime, família?
Ver originalResponder0
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)