A divulgação do Valor Sentinel do motor V8 gera riscos de segurança. Oddball não inicializado torna-se um novo vetor de ataque.

robot
Geração de resumo em curso

Análise do problema de segurança causado pela divulgação de Sentinel Value no motor Chrome v8

O valor Sentinel é um valor especial em algoritmos, geralmente usado como condição de término em algoritmos de loop ou recursivos. No código-fonte do Chrome, existem vários valores Sentinel, e alguns deles, se forem expostos ao ambiente JavaScript, podem causar problemas de segurança.

Estudos anteriores mostraram que a divulgação do objeto TheHole pode permitir a execução de código arbitrário dentro do sandbox do Chrome. A equipe do Google rapidamente corrigiu o CVE relacionado. No entanto, além do objeto TheHole, existem outros objetos nativos no v8 que não devem ser divulgados para o JS. Este artigo discutirá o objeto Uninitialized Oddball, cuja técnica de contorno ainda pode ser usada na versão mais recente do V8.

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

  1. No CVE-2021-30551, o POC inicial era a divulgação de um oddball interno não inicializado.

  2. No CVE-2022-1486, o POC também revelou diretamente o UninitializedOddball.

  3. Issue1352549( apresentou o código de exploração completo para o CVE) não atribuído.

Estes casos demonstram que a revelação do Uninitialized Oddball pode levar a sérios problemas de segurança.

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 sequencialmente na memória. Se objetos nativos que não devem ser expostos forem expostos ao JavaScript, pode-se conseguir a execução de qualquer código dentro do sandbox.

Para verificar isso, podemos modificar a função nativa do V8, vazando o Oddball Não Inicializado para o JavaScript. Especificamente, podemos modificar o deslocamento relativo do %TheHole() em relação ao isolate, de modo que retorne o Oddball Não Inicializado.

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

Contornar a proteção HardenType

Aproveitar o Uninitialized Oddball permite realizar leituras relativamente arbitrárias. O código chave é o seguinte:

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

let uninitialized_oddball = %TheHole(); let ab = new ArrayBuffer(8); let fa = new Float64Array(ab); let ia = new BigInt64Array(ab);

let evil = [1.1, 2.2, 3.3]; evil.prop = 1;

%PrepareFunctionForOptimization(read); ler(mal, 0); ler(mal, 1); %OptimizeFunctionOnNextCall(ler); ler(mal, 0);

let val = read(uninitialized_oddball, "prop"); fa[0] = val; console.log(ia[0]);

No código de montagem otimizado, será calculado diretamente o deslocamento segundo a semântica do JavaScript e retornado o valor do array, sem verificar se obj.prop é o Valor da chave. Isso leva a uma confusão de tipos, permitindo a leitura arbitrária.

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

Devido ao Uninitialized Oddball estar mais à frente e ser mais primitivo na memória V8, é mais fácil de falsificar do que o objeto TheHole, sendo o método preferido para contornar o HardenType.

A solução de correção sugerida é adicionar uma verificação do map do array ao retornar os elementos do array da função otimizada, evitando o cálculo direto do deslocamento para retornar os valores do array.

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

Aviso de PatchGap

Após a análise do Issue1352549, descobriu-se que alguns softwares podem ter problemas de PatchGap. Por exemplo, o Skype ainda não corrigiu essa vulnerabilidade. Na plataforma x86, devido à ausência 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 dos arquivos, os hackers só precisam ler e escrever em um endereço fixo, o que aumenta muito a probabilidade de ler e escrever o conteúdo dos arquivos do Skype. Combinando com métodos tradicionais como a análise PE, é possível completar toda a cadeia de exploração de vulnerabilidades.

Esta atualização do PatchGap não só envolve a Issue1352549, como também reduzirá significativamente a dificuldade de exploração de vulnerabilidades semelhantes a CVE-2022-1486 e CVE-2021-30551. Os hackers quase não precisam de pesquisa adicional para conseguir uma exploração completa.

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

Resumo

Este artigo discute brevemente o método para realizar leituras arbitrárias através da exploração da revelação de Uninitialized Oddball. Existem muitos outros valores Sentinel no V8, que podem apresentar riscos de segurança semelhantes. Isso nos dá a seguinte reflexão:

  1. Outras falhas de Uninitialized Oddball podem também permitir facilmente a execução remota de código (RCE) no V8.

  2. A questão de saber se tais problemas devem ser formalmente considerados como questões de segurança ainda é controversa.

  3. É necessário incluir %TheHole/Uninitialized Oddball como variáveis no Fuzzer para explorar novos primitivas de exploração?

De qualquer forma, este tipo de problema irá encurtar significativamente o ciclo de exploração completa por parte dos hackers, merecendo a nossa elevada atenção.

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

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

SENC5.91%
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
  • Partilhar
Comentar
0/400
HallucinationGrowervip
· 07-27 06:25
Caramba, como é que ainda pode vazar?
Ver originalResponder0
CodeAuditQueenvip
· 07-27 06:24
Outro vetor de ataque de variante CVE, tsk tsk
Ver originalResponder0
WhaleWatchervip
· 07-27 06:19
O Google está a brincar com fogo? A voltar atrás na história.
Ver originalResponder0
BearMarketSurvivorvip
· 07-27 06:19
Realmente, é um bug que nunca se acaba.
Ver originalResponder0
CryptoAdventurervip
· 07-27 06:14
Já é hora de pagar o imposto de inteligência? Quem entende, entende.
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)