Análise Profundidade do Risco de Segurança do Valor Sentinel do Chrome V8

robot
Geração do resumo em andamento

Uma análise aprofundada do impacto da Sentinel Value na segurança do Chrome V8 Engine

O valor sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em loops ou algoritmos recursivos. No código-fonte do Chrome, existem vários valores sentinel. Pesquisas anteriores indicaram que a divulgação do objeto TheHole pode permitir a execução de qualquer código dentro do sandbox do Chrome. A equipe do Google posteriormente corrigiu as vulnerabilidades relacionadas.

No entanto, existem outros objetos nativos no V8 que não devem ser expostos ao JavaScript. Este artigo discutirá o objeto Uninitialized Oddball, que teve seu método de contorno introduzido pela primeira vez no Issue1352549. É importante notar que esse método ainda pode ser utilizado na versão mais recente do V8 e ainda não foi corrigido.

Este método tem uma certa universalidade:

  1. Issue1216437(CVE-2021-30551) apresentou pela primeira vez um poc que revela internal uninitialized oddball.

  2. Issue1314616(CVE-2022-1486) também vazou diretamente UninitializedOddball.

  3. A emissão 1352549(NoCVE) merece atenção.

Estes casos mostram que é necessário reavaliar o software que pode ser afetado pelo PatchGap. Atualmente, o Skype ainda não corrigiu essa vulnerabilidade.

A maioria dos objetos nativos no V8 é definida no arquivo v8/src/roots/roots.h, e eles são dispostos adjacentes na memória. Uma vez que esses objetos nativos, que não deveriam vazar, sejam expostos ao JavaScript, pode-se realizar a execução de código arbitrário dentro do sandbox.

Para validar este método, podemos modificar a função nativa do V8, permitindo que o Uninitialized Oddball vaze para o JavaScript. Especificamente, podemos modificar o deslocamento relativo do %TheHole() em relação ao isolate, para que retorne o Uninitialized Oddball.

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

Usando este método, é possível contornar a proteção HardenType, permitindo leituras e gravações relativamente arbitrárias. Ao analisar o código JavaScript otimizado, pode-se perceber que, ao verificar obj.prop, não há validação do Value que tem como chave obj.prop, calculando diretamente o deslocamento de acordo com a semântica do JavaScript e obtendo o valor do array, resultando assim em uma confusão de tipos.

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

Devido ao uninitialized_oddball estar classificado anteriormente e ser mais primitivo na memória V8, é mais fácil de falsificar do que o objeto TheHole. Depois que as mitigações relacionadas ao TheHole foram corrigidas, esse método tornou-se a escolha preferida para contornar.

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

Sugere-se que, ao retornar elementos de um array na função otimizada, se acrescente uma verificação do map do array, evitando o cálculo direto do deslocamento para retornar valores.

É importante notar que o Skype ainda não corrigiu essa vulnerabilidade. Em sistemas x86, devido à falta de compressão de endereços, a leitura e escrita arbitrárias são relativas a todo o processo. Embora o Skype tenha ativado o ASLR, devido ao tamanho do arquivo, os hackers só precisam ler e escrever em endereços fixos, o que aumenta significativamente a probabilidade de acessar o conteúdo dos arquivos do Skype. Isso reduz bastante a dificuldade de completar uma cadeia de exploração completa.

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

Este PatchGap não só envolve a Issue1352549, mas a divulgação de um novo método de bypass também reduziu significativamente a dificuldade de exploração de vulnerabilidades como a Issue1314616 e a Issue1216437. Os hackers quase não precisam de pesquisa adicional para explorar completamente qualquer vulnerabilidade anterior relacionada ao vazamento de uninitialized_oddball.

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

Existem também vários outros valores Sentinel no V8, que podem apresentar riscos de segurança semelhantes. Recomenda-se considerar a inclusão de valores Sentinel como %TheHole/uninitialized_Oddball como variáveis nos testes de fuzz, a fim de descobrir outras potenciais primitivas de exploração.

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

Independentemente de estas questões serem formalmente consideradas problemas de segurança, elas encurtam significativamente o ciclo em que os hackers podem explorar completamente. Precisamos continuar a monitorizar e investigar esta área para melhorar a segurança de softwares como o Chrome.

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 HardenProtect do Chrome v8 através da divulgação do Sentinel Value

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

SENC2.76%
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
  • 3
  • Repostar
  • Compartilhar
Comentário
0/400
GateUser-00be86fcvip
· 08-11 01:16
Oi, o v8 expôs uma pequena vulnerabilidade novamente.
Ver originalResponder0
Blockblindvip
· 08-11 01:15
Este bug ficou tanto tempo sem ser corrigido, é impressionante!
Ver originalResponder0
ImpermanentSagevip
· 08-11 00:55
Caramba, é mais uma vulnerabilidade de execução de código.
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)