Risco de segurança da violação do valor do Sentinel do motor V8 que contorna o HardenProtect

Risco de segurança causado pela divulgação de Sentinel Value no motor Chrome V8

O valor Sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursão. No código-fonte do Chrome, existem vários valores Sentinel, alguns dos quais não devem vazar para o ambiente JavaScript. Este artigo irá explorar a exploração de vazamentos do objeto Uninitialized Oddball para contornar o mecanismo HardenProtect do motor Chrome V8.

Valor Sentinel no V8

A maior parte dos objetos nativos do V8 está definida no arquivo v8/src/roots/roots.h, e esses objetos estão dispostos adjacentes na memória. Uma vez que esses objetos nativos, que não deveriam ser expostos ao JavaScript, sejam vazados, isso pode levar à execução de código arbitrário dentro do sandbox.

Podemos vazar o Oddball Não Inicializado para o JavaScript modificando a função nativa do V8. Por exemplo, alterando o deslocamento da função %TheHole() para que retorne o objeto Oddball Não Inicializado.

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

Contornar a proteção HardenType

Usando um objeto Uninitialized Oddball vazado, é possível construir o seguinte código para realizar leituras relativamente arbitrárias:

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

let arr = [1.1, 2.2, 3.3]; let uninitialized_oddball = %TheHole();

for (let i = 0; i < 100000; i++) { read(arr, 0);
}

%OptimizeFunctionOnNextCall(ler);

let result = read(uninitialized_oddball, 0x12345); %DebugPrint(resultado);

O código de montagem da função read otimizado mostra que, ao calcular o deslocamento do array, não foi verificado o tipo de valor de obj.prop, calculando diretamente de acordo com a semântica do JavaScript, o que resulta em confusão de tipos e permite leitura arbitrária.

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 ao map do array ao retornar elementos do array na função otimizada, evitando o cálculo direto do deslocamento para retornar valores.

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

Aviso de Risco PatchGap

A vulnerabilidade ainda não foi corrigida em alguns softwares que utilizam a versão antiga do motor V8, como o Skype(. Na plataforma x86, devido à ausência de compressão de endereços, a leitura e escrita arbitrárias podem ser feitas diretamente em relação a todo o processo.

A divulgação deste novo método de contorno reduziu a dificuldade de explorar as vulnerabilidades relacionadas. Os hackers quase não precisam de pesquisa adicional para completar a exploração total da vulnerabilidade Uninitialized Oddball.

![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(

Resumo

Existem outros valores Sentinel no V8 que podem causar problemas de segurança semelhantes. Recomenda-se uma investigação adicional:

  1. Outras fugas de Uninitialized Oddball também podem permitir RCE do V8
  2. Deve-se considerar formalmente a inclusão deste tipo de questão como uma vulnerabilidade de segurança?
  3. É necessário incluir o valor Sentinel como variável no teste Fuzzer?

De qualquer forma, este tipo de problema irá encurtar significativamente o período em que os hackers podem explorar completamente, o que merece grande atenção.

![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(

![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(

![Revelação exclusiva sobre como contornar o HardenProtect do Chrome via vazamento do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(

![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(

![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(

SENC0.03%
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
  • 6
  • Compartilhar
Comentário
0/400
GateUser-bd883c58vip
· 08-04 04:05
Essa vulnerabilidade é tão hardcore que dá um pouco de medo.
Ver originalResponder0
SerumDegenvip
· 08-02 17:19
gm frens... outro vazamento de alpha avistado no v8, estamos todos rekt
Ver originalResponder0
ThatsNotARugPullvip
· 08-02 17:19
Esta panela Chrome leva-a. Já te mostraram o buraco.
Ver originalResponder0
RektButStillHerevip
· 08-02 17:09
Por que a proteção do sandbox é tão fraca?
Ver originalResponder0
CryptoNomicsvip
· 08-02 17:01
*suspiro* mais uma exploração provando que a minha análise de regressão sobre o modelo de segurança do chrome era estatisticamente significativa... e ainda assim ninguém ouviu
Ver originalResponder0
MetaverseHobovip
· 08-02 16:58
Este bug é tão irritante que faz-nos até à lua.
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)