Vazamento de Valor Sentinel e Bypass do HardenProtect do Chrome V8
No código fonte do Chrome existem muitos valores Sentinel, que geralmente são usados como condições de terminação em loops ou recursões. Pesquisas recentes mostram que o vazamento de certos valores Sentinel pode levar à execução de código arbitrário dentro do sandbox do Chrome.
Além do objeto TheHole conhecido, existem outros objetos nativos no V8 que não devem vazar para o ambiente JavaScript. Este artigo foca nos objetos Uninitialized Oddball, cuja exploração ainda pode ser aplicada na versão mais recente do V8 e ainda não foi corrigida.
É importante notar que este método tem uma ampla aplicabilidade. Em várias vulnerabilidades relatadas, a divulgação de Uninitialized Oddball pode levar à execução remota de código. Isso destaca a necessidade de uma auditoria completa do software que pode ser afetado pelo PatchGap.
A maioria dos objetos nativos no V8 está definida no arquivo v8/src/roots/roots.h, e estão dispostos de forma adjacente na memória. Uma vez que esses objetos sejam expostos incorretamente ao JavaScript, pode-se potencialmente executar código arbitrário dentro do sandbox.
Para validar este método, podemos modificar a função nativa do V8 para que retorne um objeto Oddball não inicializado. Desta forma, conseguimos realizar a leitura de memória praticamente arbitrária na versão mais recente do V8.
O núcleo deste método de contorno está no fato de que a função JavaScript otimizada, ao acessar elementos de um array, não verifica adequadamente as informações de tipo do array, mas calcula diretamente o deslocamento para obter o valor. Isso leva a uma confusão de tipos, permitindo a leitura arbitrária.
A solução de reparação sugerida é adicionar uma verificação do map do array ao retornar elementos do array na função otimizada, evitando retornar valores do array diretamente através do cálculo de deslocamento.
Além disso, precisamos prestar atenção ao problema de PatchGap que pode existir na cadeia de suprimentos de software. Alguns softwares amplamente utilizados podem ainda não ter corrigido essas vulnerabilidades, o que fornece aos atacantes uma possível porta de entrada.
Em geral, existem vários valores Sentinel no V8, cuja divulgação pode levar a problemas de segurança. Direções futuras de pesquisa podem incluir: explorar o impacto de outras divulgações de Uninitialized Oddball, avaliar a viabilidade de introduzir valores Sentinel como variáveis em testes de fuzzing, e examinar de forma mais abrangente os problemas de segurança relacionados. Independentemente de tais problemas serem formalmente classificados como vulnerabilidades de segurança, eles podem significativamente reduzir o tempo que um atacante leva para realizar uma exploração completa.
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.
9 Curtidas
Recompensa
9
5
Repostar
Compartilhar
Comentário
0/400
LiquidatedDreams
· 15h atrás
Outra onda de buracos... por que o Chrome em modo relaxado não é corrigido?
Ver originalResponder0
GasWaster
· 15h atrás
Caixa tem tantas falhas, o palhaço da família.
Ver originalResponder0
GasOptimizer
· 15h atrás
A vulnerabilidade de recursão representa 89,4% da probabilidade de acidentes de segurança.
Ver originalResponder0
FallingLeaf
· 15h atrás
A vulnerabilidade é tão grande que o navegador já não é seguro.
Vazamento de Valor Sentinel do motor Chrome V8 leva a risco de fuga da sandbox
Vazamento de Valor Sentinel e Bypass do HardenProtect do Chrome V8
No código fonte do Chrome existem muitos valores Sentinel, que geralmente são usados como condições de terminação em loops ou recursões. Pesquisas recentes mostram que o vazamento de certos valores Sentinel pode levar à execução de código arbitrário dentro do sandbox do Chrome.
Além do objeto TheHole conhecido, existem outros objetos nativos no V8 que não devem vazar para o ambiente JavaScript. Este artigo foca nos objetos Uninitialized Oddball, cuja exploração ainda pode ser aplicada na versão mais recente do V8 e ainda não foi corrigida.
É importante notar que este método tem uma ampla aplicabilidade. Em várias vulnerabilidades relatadas, a divulgação de Uninitialized Oddball pode levar à execução remota de código. Isso destaca a necessidade de uma auditoria completa do software que pode ser afetado pelo PatchGap.
A maioria dos objetos nativos no V8 está definida no arquivo v8/src/roots/roots.h, e estão dispostos de forma adjacente na memória. Uma vez que esses objetos sejam expostos incorretamente ao JavaScript, pode-se potencialmente executar código arbitrário dentro do sandbox.
Para validar este método, podemos modificar a função nativa do V8 para que retorne um objeto Oddball não inicializado. Desta forma, conseguimos realizar a leitura de memória praticamente arbitrária na versão mais recente do V8.
O núcleo deste método de contorno está no fato de que a função JavaScript otimizada, ao acessar elementos de um array, não verifica adequadamente as informações de tipo do array, mas calcula diretamente o deslocamento para obter o valor. Isso leva a uma confusão de tipos, permitindo a leitura arbitrária.
A solução de reparação sugerida é adicionar uma verificação do map do array ao retornar elementos do array na função otimizada, evitando retornar valores do array diretamente através do cálculo de deslocamento.
Além disso, precisamos prestar atenção ao problema de PatchGap que pode existir na cadeia de suprimentos de software. Alguns softwares amplamente utilizados podem ainda não ter corrigido essas vulnerabilidades, o que fornece aos atacantes uma possível porta de entrada.
Em geral, existem vários valores Sentinel no V8, cuja divulgação pode levar a problemas de segurança. Direções futuras de pesquisa podem incluir: explorar o impacto de outras divulgações de Uninitialized Oddball, avaliar a viabilidade de introduzir valores Sentinel como variáveis em testes de fuzzing, e examinar de forma mais abrangente os problemas de segurança relacionados. Independentemente de tais problemas serem formalmente classificados como vulnerabilidades de segurança, eles podem significativamente reduzir o tempo que um atacante leva para realizar uma exploração completa.