Investigação sobre os riscos de segurança causados pela fuga de Sentinel Value no motor Chrome V8
O valor Sentinel é um valor utilizado como um marcador especial em algoritmos, geralmente como uma condição de término em loops ou recursões. No código-fonte do motor Chrome V8, existem vários valores Sentinel, alguns dos quais não devem ser expostos ao ambiente JavaScript. Este artigo discutirá métodos para contornar o mecanismo HardenProtect do Chrome V8 através da exposição de objetos Uninitialized Oddball.
Valor Sentinel no V8
O arquivo roots.h do código fonte V8 define uma grande quantidade de objetos nativos, que estão dispostos de forma adjacente na memória. Uma vez que esses objetos sejam vazados para o JavaScript, isso pode levar a uma fuga do sandbox.
Podemos verificar isso modificando a função nativa do V8. Por exemplo, alterando o deslocamento da função %TheHole() para que retorne um objeto Uninitialized Oddball em vez do objeto TheHole.
Contornar a proteção HardenType
A utilização de objetos Uninitialized Oddball permite realizar leituras de memória relativamente arbitrárias. A chave está na função read do JavaScript otimizada, que apenas verifica se a propriedade prop do objeto está correta, mas não verifica o valor com a chave obj.prop. Isso leva a uma confusão de tipos durante o processo de cálculo, permitindo assim leituras arbitrárias.
Ao analisar o código de montagem otimizado, pode-se ver que, ao passar uninitialized_oddball, o programa calcula diretamente o deslocamento e lê os dados, sem realizar uma verificação de tipo. Este método é mais fácil de construir e utilizar em comparação com o objeto TheHole.
A solução recomendada é adicionar uma verificação ao map do array ao retornar os elementos do array na função otimizada, evitando retornar valores do array diretamente através do cálculo de deslocamento.
Aviso de Segurança PatchGap
Além de nos concentrarmos nas vulnerabilidades históricas conhecidas, também precisamos estar atentos aos problemas que os fabricantes silenciosamente corrigem nos componentes básicos. Após análise, descobrimos que o software Skype ainda não corrigiu essa vulnerabilidade. Na plataforma x86, devido à falta de compressão de endereços, o intervalo de leitura e escrita é maior, podendo quase ler e escrever todo o espaço de processo.
Esta atualização do PatchGap não só envolve a Issue1352549, mas também inclui vulnerabilidades semelhantes como a Issue1314616 e a Issue1216437. Após a divulgação do novo método de contorno, a dificuldade de exploração dessas vulnerabilidades foi significativamente reduzida, permitindo que os atacantes quase não precisem de pesquisa adicional para completar uma cadeia de exploração completa.
Resumo
Este artigo explora brevemente o método para leitura arbitrária através da divulgação de Uninitialized Oddball. Existem também vários outros valores Sentinel no V8, que podem causar problemas semelhantes. Isso nos alerta:
Outras vazamentos uninitialized_Oddball podem igualmente levar à fuga da sandbox V8.
A questão de saber se tais problemas devem ser considerados vulnerabilidades de segurança formais ainda é controversa.
Considerar a inclusão de um valor Sentinel como variável nos testes de fuzzing, para descobrir novos métodos de exploração.
De qualquer forma, este tipo de problema irá encurtar significativamente o ciclo de tempo necessário para que um atacante consiga explorar completamente, e merece uma atenção elevada.
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.
12 gostos
Recompensa
12
5
Partilhar
Comentar
0/400
PaperHandsCriminal
· 3h atrás
Mecanismo Crocante V8 Eu explodi novamente
Ver originalResponder0
MoonBoi42
· 19h atrás
Estou um pouco ansioso, há muitos buracos.
Ver originalResponder0
SleepyArbCat
· 08-02 05:40
O gato que está tão cansado que só consegue programar...zZz
Ver originalResponder0
ChainDetective
· 08-02 05:38
Caramba, vulnerabilidade do motor v8, está garantido.
Análise da vulnerabilidade de segurança e exploração da exposição de Valor Sentinel do motor Chrome V8
Investigação sobre os riscos de segurança causados pela fuga de Sentinel Value no motor Chrome V8
O valor Sentinel é um valor utilizado como um marcador especial em algoritmos, geralmente como uma condição de término em loops ou recursões. No código-fonte do motor Chrome V8, existem vários valores Sentinel, alguns dos quais não devem ser expostos ao ambiente JavaScript. Este artigo discutirá métodos para contornar o mecanismo HardenProtect do Chrome V8 através da exposição de objetos Uninitialized Oddball.
Valor Sentinel no V8
O arquivo roots.h do código fonte V8 define uma grande quantidade de objetos nativos, que estão dispostos de forma adjacente na memória. Uma vez que esses objetos sejam vazados para o JavaScript, isso pode levar a uma fuga do sandbox.
Podemos verificar isso modificando a função nativa do V8. Por exemplo, alterando o deslocamento da função %TheHole() para que retorne um objeto Uninitialized Oddball em vez do objeto TheHole.
Contornar a proteção HardenType
A utilização de objetos Uninitialized Oddball permite realizar leituras de memória relativamente arbitrárias. A chave está na função read do JavaScript otimizada, que apenas verifica se a propriedade prop do objeto está correta, mas não verifica o valor com a chave obj.prop. Isso leva a uma confusão de tipos durante o processo de cálculo, permitindo assim leituras arbitrárias.
Ao analisar o código de montagem otimizado, pode-se ver que, ao passar uninitialized_oddball, o programa calcula diretamente o deslocamento e lê os dados, sem realizar uma verificação de tipo. Este método é mais fácil de construir e utilizar em comparação com o objeto TheHole.
A solução recomendada é adicionar uma verificação ao map do array ao retornar os elementos do array na função otimizada, evitando retornar valores do array diretamente através do cálculo de deslocamento.
Aviso de Segurança PatchGap
Além de nos concentrarmos nas vulnerabilidades históricas conhecidas, também precisamos estar atentos aos problemas que os fabricantes silenciosamente corrigem nos componentes básicos. Após análise, descobrimos que o software Skype ainda não corrigiu essa vulnerabilidade. Na plataforma x86, devido à falta de compressão de endereços, o intervalo de leitura e escrita é maior, podendo quase ler e escrever todo o espaço de processo.
Esta atualização do PatchGap não só envolve a Issue1352549, mas também inclui vulnerabilidades semelhantes como a Issue1314616 e a Issue1216437. Após a divulgação do novo método de contorno, a dificuldade de exploração dessas vulnerabilidades foi significativamente reduzida, permitindo que os atacantes quase não precisem de pesquisa adicional para completar uma cadeia de exploração completa.
Resumo
Este artigo explora brevemente o método para leitura arbitrária através da divulgação de Uninitialized Oddball. Existem também vários outros valores Sentinel no V8, que podem causar problemas semelhantes. Isso nos alerta:
Outras vazamentos uninitialized_Oddball podem igualmente levar à fuga da sandbox V8.
A questão de saber se tais problemas devem ser considerados vulnerabilidades de segurança formais ainda é controversa.
Considerar a inclusão de um valor Sentinel como variável nos testes de fuzzing, para descobrir novos métodos de exploração.
De qualquer forma, este tipo de problema irá encurtar significativamente o ciclo de tempo necessário para que um atacante consiga explorar completamente, e merece uma atenção elevada.