Chrome v8 HardenProtect bypass: usando o Valor Sentinel para executar código arbitrário

Sentinel Value e a contornagem do HardenProtect do Chrome v8

Valor sentinel é um valor especial em algoritmos, comumente usado como condição de término para loops ou algoritmos recursivos. Este tipo de valor especial é amplamente utilizado no código-fonte do Chrome. Pesquisas recentes indicam que a divulgação de certos objetos de valor sentinel pode permitir a execução de código arbitrário dentro do sandbox do Chrome.

Este artigo irá explorar métodos para contornar o mecanismo HardenProtect do Chrome v8 utilizando objetos Uninitialized Oddball. Este método foi inicialmente proposto por membros do Project0 na Issue1352549 e ainda está disponível na versão mais recente do V8, com a Google ainda não tendo corrigido isso.

Vale a pena notar que este método possui uma forte versatilidade:

  1. O Issue1216437(CVE-2021-30551) apresentou pela primeira vez o poc que vaza internal uninitialized oddball.

  2. Issue1314616(CVE-2022-1486) também revelou diretamente o objeto UninitializedOddball.

  3. Issue1352549( não apresenta CVE) e demonstra a cadeia completa de exploração desse método.

Estes casos mostram que este método de contorno pode afetar várias versões de software. Até agora, softwares como o Skype ainda não corrigiram essa vulnerabilidade.

Valor Sentinel no V8

O código-fonte do V8 define uma grande quantidade de objetos nativos, incluindo vários valores Sentinel. Esses objetos estão dispostos adjacentes na memória. Uma vez que um objeto nativo que não deve ser vazado é exposto ao JavaScript, pode-se realizar a execução de qualquer código dentro da sandbox.

Para validar este método, podemos modificar a função V8 %TheHole() para que retorne um objeto Oddball Não Inicializado.

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

Contornar HardenType

O código abaixo demonstra como utilizar objetos Uninitialized Oddball vazados para realizar leituras arbitrárias:

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

let uninitialized_oddball = %GetUninitialized(); let ab = new ArrayBuffer(8); let f64 = new Float64Array(ab); let u32 = new Uint32Array(ab);

para (deixe i = 0; i < 0x10000; i++) { read({prop: 1.1}, 0);
}

%OptimizeFunctionOnNextCall(read);

let val = read({prop: uninitialized_oddball}, 0x1234); f64[0] = val; console.log(u32[0].toString(16), u32[1].toString(16));

O código de montagem da função read otimizado mostra que a função apenas verificou a propriedade prop do obj, sem verificar o valor de obj.prop, e calculou diretamente o deslocamento, causando confusão de tipos e permitindo leitura arbitrária.

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

Sugestão de solução: ao retornar elementos de um array na função otimizada, adicionar uma verificação ao map do array para evitar cálculos diretos de deslocamento.

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

Aviso de PatchGap

Este método de contorno não apenas afeta vulnerabilidades históricas, mas também pode impactar o software atual. Por exemplo, o Skype ainda não corrigiu este problema. Na plataforma x86, devido à falta de compressão de endereços, o intervalo de leitura e escrita arbitrária é maior.

Este PatchGap não só envolve o Issue1352549, como também reduz drasticamente a dificuldade de exploração de problemas semelhantes como o Issue1314616 e o Issue1216437. Recomenda-se que os fabricantes realizem uma verificação completa das vulnerabilidades relacionadas.

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

Resumo

Este artigo apresenta um método para realizar leituras arbitrárias no V8 usando Uninitialized Oddball. Existem outros valores Sentinel no V8 que podem apresentar riscos de segurança semelhantes. Recomenda-se uma investigação adicional:

  1. É possível a exploração de RCE V8 devido a vazamento de outros valores Sentinel?
  2. Adicionar o valor Sentinel como variável ao Fuzzer, explorando novos primitivas de exploração.
  3. Encarar os riscos de segurança que estes tipos de problemas podem trazer

Independentemente de a questão ser formalmente classificada como uma vulnerabilidade de segurança, ela pode encurtar significativamente o ciclo de exploração completo dos hackers. Espera-se que este artigo chame a atenção das partes relevantes.

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

Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da fuga 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

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

SENC-0.1%
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
  • 6
  • Republicar
  • Partilhar
Comentar
0/400
WinterWarmthCatvip
· 08-10 01:53
Post de detalhes fortes deve ser elogiado
Ver originalResponder0
StakeOrRegretvip
· 08-08 15:35
Descobri novamente uma vulnerabilidade no navegador.
Ver originalResponder0
LayerZeroHerovip
· 08-07 02:24
Uma vulnerabilidade um pouco legal.
Ver originalResponder0
Web3ProductManagervip
· 08-07 02:23
Caso extremo super arriscado aqui
Ver originalResponder0
GhostWalletSleuthvip
· 08-07 02:11
As vulnerabilidades são realmente difíceis de prevenir.
Ver originalResponder0
UnluckyLemurvip
· 08-07 02:04
Esta vulnerabilidade tem muita água por baixo.
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)