Exploração de como contornar o mecanismo HardenProtect do Chrome v8 através da divulgação do Valor Sentinel
Introdução
O valor sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursivos. Este valor especial é amplamente utilizado no código-fonte do Chrome. Pesquisas recentes indicam que, ao vazar o objeto TheHole, é possível explorar certas vulnerabilidades de execução de código arbitrário dentro do sandbox do Chrome. Este artigo irá explorar outro objeto relacionado - Uninitialized Oddball, e como ele pode ser utilizado para contornar os mecanismos de segurança do Chrome.
É importante notar que a versão mais recente do motor V8 ainda apresenta este problema. Este método possui uma considerável versatilidade, podendo afetar a dificuldade de exploração de várias vulnerabilidades históricas.
Valor Sentinel no V8
No código-fonte do V8, muitos objetos nativos são definidos e estão dispostos adjacentes na memória. Se esses objetos forem expostos incorretamente ao ambiente JavaScript, isso pode levar a uma fuga de sandbox. O vazamento do objeto TheHole mencionado anteriormente é um caso típico.
Podemos verificar isso modificando a função nativa do V8. Por exemplo, modificando o deslocamento da função %TheHole() para que retorne um objeto Uninitialized Oddball.
Contornar a proteção HardenType
A utilização de objetos Uninitialized Oddball permite realizar leituras de memória relativamente arbitrárias. A chave está no fato de que o código JavaScript otimizado não verifica corretamente as propriedades do objeto, calculando diretamente o deslocamento e acessando elementos de array de acordo com a semântica JavaScript, resultando em confusão de tipos.
A solução proposta é adicionar uma verificação do array map ao otimizar a função que retorna elementos de um array, evitando o cálculo direto do deslocamento.
Aviso de Risco PatchGap
A análise revelou que alguns softwares podem ter problemas de PatchGap, que ainda não foram corrigidos. Tomando o Skype como exemplo, devido ao seu arquivo ser grande e ser carregado diretamente na memória, um atacante pode explorar isso através de leitura e escrita em endereços fixos.
A divulgação deste novo método de contorno pode reduzir a dificuldade de exploração de algumas vulnerabilidades históricas. Recomenda-se que as partes relevantes reavaliem o software e as vulnerabilidades afetadas.
Resumo
Este artigo discute brevemente a possibilidade de realizar leituras arbitrárias através da divulgação de valores Sentinel como Uninitialized Oddball. Existem outros valores Sentinel no V8 que também podem apresentar riscos de segurança semelhantes. Isso nos alerta:
Outras vazamentos de Uninitialized Oddball podem levar a uma fuga do sandbox V8
A segurança do posicionamento desses problemas ainda não está clara.
Pode-se considerar adicionar o valor Sentinel como variável nos testes de fuzzer.
De qualquer forma, este tipo de problema pode encurtar significativamente o ciclo de exploração completo dos atacantes, o que merece grande atenção.
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.
A vulnerabilidade de vazamento de Sentinel Value no motor Chrome V8 permite a fuga do sandbox.
Exploração de como contornar o mecanismo HardenProtect do Chrome v8 através da divulgação do Valor Sentinel
Introdução
O valor sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursivos. Este valor especial é amplamente utilizado no código-fonte do Chrome. Pesquisas recentes indicam que, ao vazar o objeto TheHole, é possível explorar certas vulnerabilidades de execução de código arbitrário dentro do sandbox do Chrome. Este artigo irá explorar outro objeto relacionado - Uninitialized Oddball, e como ele pode ser utilizado para contornar os mecanismos de segurança do Chrome.
É importante notar que a versão mais recente do motor V8 ainda apresenta este problema. Este método possui uma considerável versatilidade, podendo afetar a dificuldade de exploração de várias vulnerabilidades históricas.
Valor Sentinel no V8
No código-fonte do V8, muitos objetos nativos são definidos e estão dispostos adjacentes na memória. Se esses objetos forem expostos incorretamente ao ambiente JavaScript, isso pode levar a uma fuga de sandbox. O vazamento do objeto TheHole mencionado anteriormente é um caso típico.
Podemos verificar isso modificando a função nativa do V8. Por exemplo, modificando o deslocamento da função %TheHole() para que retorne um objeto Uninitialized Oddball.
Contornar a proteção HardenType
A utilização de objetos Uninitialized Oddball permite realizar leituras de memória relativamente arbitrárias. A chave está no fato de que o código JavaScript otimizado não verifica corretamente as propriedades do objeto, calculando diretamente o deslocamento e acessando elementos de array de acordo com a semântica JavaScript, resultando em confusão de tipos.
A solução proposta é adicionar uma verificação do array map ao otimizar a função que retorna elementos de um array, evitando o cálculo direto do deslocamento.
Aviso de Risco PatchGap
A análise revelou que alguns softwares podem ter problemas de PatchGap, que ainda não foram corrigidos. Tomando o Skype como exemplo, devido ao seu arquivo ser grande e ser carregado diretamente na memória, um atacante pode explorar isso através de leitura e escrita em endereços fixos.
A divulgação deste novo método de contorno pode reduzir a dificuldade de exploração de algumas vulnerabilidades históricas. Recomenda-se que as partes relevantes reavaliem o software e as vulnerabilidades afetadas.
Resumo
Este artigo discute brevemente a possibilidade de realizar leituras arbitrárias através da divulgação de valores Sentinel como Uninitialized Oddball. Existem outros valores Sentinel no V8 que também podem apresentar riscos de segurança semelhantes. Isso nos alerta:
De qualquer forma, este tipo de problema pode encurtar significativamente o ciclo de exploração completo dos atacantes, o que merece grande atenção.