Análise e exploração das vulnerabilidades de segurança do Valor Sentinel do motor Chrome V8

Análise do Valor Sentinel no motor V8 do Google Chrome e seus riscos de segurança

O valor Sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término para loops ou recursões. O código fonte do Chrome contém vários valores Sentinel, alguns dos quais, se vazados para o ambiente JavaScript, podem causar problemas de segurança. Este artigo irá explorar métodos para contornar o mecanismo HardenProtect do Chrome V8 utilizando objetos Uninitialized Oddball vazados.

Valor Sentinel no V8

O arquivo roots.h do código-fonte V8 define uma grande quantidade de objetos nativos, que estão dispostos na memória em sequência. Se esses objetos nativos, que não deveriam ser expostos ao JavaScript, forem vazados, isso pode levar a uma fuga da sandbox. O vazamento do objeto TheHole no passado é um caso típico.

Para verificar o problema na versão mais recente do V8, pode-se modificar a função %TheHole() para que retorne um objeto Uninitialized Oddball:

javascript print(%DebugPrint(%TheHole())); // Saída: Valor não inicializado

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

Contornar a proteção HardenType

Usando Oddball não inicializado, é possível construir o seguinte código PoC para realizar leituras arbitrárias:

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

let uninitialized = %TheHole(); let arr = [1.1]; %PrepareFunctionForOptimization(ler); read(arr, 0); read(arr, 0); %OptimizeFunctionOnNextCall(ler); read(arr, 0);

print(ler(não inicializado, 0x1234n));

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

A função read otimizada pela descompilação mostra que não verifica estritamente o tipo Value de obj.prop, calculando diretamente o deslocamento de acordo com a semântica JavaScript e retornando elementos do array, o que leva a uma confusão de tipos que permite a leitura arbitrária.

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

A proposta de solução é adicionar uma verificação do array map ao retornar elementos do array da função otimizada, evitando o cálculo direto do valor de retorno de deslocamento.

Descoberta exclusiva sobre como contornar o Chrome v8 HardenProtect através da revelação do Valor Sentinel

Aviso de Risco PatchGap

A análise revelou que alguns softwares como o Skype podem ter problemas de PatchGap, que ainda não foram corrigidos. Os hackers podem explorar essa vulnerabilidade para completar uma cadeia de exploração em um curto espaço de tempo.

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

Além disso, após a divulgação do novo método de contorno, a dificuldade de exploração de algumas vulnerabilidades históricas (, como Issue1314616 e Issue1216437), diminuiu significativamente. Recomenda-se que os fabricantes reavaliem o risco de segurança associado a essas vulnerabilidades.

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

Resumo

Existem muitos outros valores Sentinel no V8 que valem a pena ser pesquisados mais a fundo. É aconselhável considerar a adição de variáveis como %TheHole/Uninitialized_Oddball ao Fuzzer, para explorar novos primitivos de exploração. Independentemente de esses tipos de problemas serem oficialmente classificados como problemas de segurança, eles podem encurtar significativamente o ciclo de exploração completo dos hackers.

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

SENC10.61%
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
  • 5
  • Repostar
  • Compartilhar
Comentário
0/400
ParanoiaKingvip
· 7h atrás
Mais um ponto de risco.
Ver originalResponder0
WenMoon42vip
· 7h atrás
Outra vez é Profundidade de pesquisa, huh?
Ver originalResponder0
CryptoSourGrapevip
· 7h atrás
Afinal, aqui também há buracos.
Ver originalResponder0
ForkItAllDayvip
· 7h atrás
Uma nova abordagem para o estouro de pilha
Ver originalResponder0
Fren_Not_Foodvip
· 7h atrás
Desviar de falhas é muito impressionante.
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)