Aplicação do valor sentinel no Chrome V8 e seu impacto na segurança
O valor sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursão. O código-fonte do motor Chrome V8 faz uso extensivo de valores sentinel. Recentemente, pesquisadores de segurança descobriram que a divulgação de certos objetos de valor sentinel pode permitir a execução de código arbitrário dentro do sandbox do Chrome.
Existem vários objetos nativos no V8 que não devem ser vazados para o ambiente JavaScript. Além do objeto TheHole que foi exposto anteriormente, o vazamento do objeto Uninitialized Oddball também pode levar a problemas de segurança. Esse método apareceu pela primeira vez no Issue1352549 e ainda está disponível na versão mais recente do V8, que ainda não foi corrigido pelo Google.
Este método tem uma forte versatilidade:
O CVE-2021-3055 foi divulgado pela primeira vez no Issue1216437( com um POC que vaza o oddball interno não inicializado.
Issue1314616)CVE-2022-1486( também revelou diretamente o objeto UninitializedOddball.
Issue1352549) sem CVE( fornece completamente o método de exploração.
Estes casos mostram que a exploração da vulnerabilidade do valor Sentinel pode afetar várias versões de software.
A maioria dos objetos nativos do V8 está definida no arquivo v8/src/roots/roots.h, disposta de forma adjacente na memória. Uma vez que esses objetos vazem para o ambiente JavaScript, pode ser possível realizar uma fuga do sandbox.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp(
Para verificar este método, pode-se modificar a função nativa %TheHole)( do V8 para vazar objetos Oddball não inicializados.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da exposição do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
Usando esse método, é possível contornar a proteção HardenType do V8. A chave está no fato de que a função read do JavaScript otimizada não verifica adequadamente as propriedades do objeto, resultando em confusão de tipos que permite leituras e gravações arbitrárias.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
A proposta de solução é adicionar uma verificação do map do array ao retornar elementos do array na função otimizada, evitando o cálculo direto do deslocamento para retornar valores.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(
É importante notar que softwares como Skype podem ainda ter esse tipo de vulnerabilidade. Na plataforma x86, devido à falta de compressão de endereços, o espaço de leitura e escrita arbitrária é maior. Um atacante pode explorar essa vulnerabilidade para implementar uma cadeia de exploração completa.
Além do Uninitialized Oddball, existem vários valores Sentinel no V8 que podem apresentar riscos semelhantes. Recomenda-se investigar mais a fundo os problemas de segurança causados por vazamentos de outros valores Sentinel e considerar a inclusão de cenários relevantes nos testes de fuzz.
Independentemente de tais questões serem formalmente classificadas como vulnerabilidades de segurança, elas podem significativamente encurtar o período em que um atacante pode realizar uma exploração completa, o que merece grande atenção.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(
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.
12 Curtidas
Recompensa
12
5
Repostar
Compartilhar
Comentário
0/400
LowCapGemHunter
· 08-05 12:29
Encontramos uma vulnerabilidade novamente, v8 venha consertar.
Ver originalResponder0
DegenWhisperer
· 08-04 10:02
Ah, como é que o Google não consertou? Comida ruim!
Ver originalResponder0
ApyWhisperer
· 08-04 09:59
Chrome ficou até à lua, ainda crocante.
Ver originalResponder0
MidsommarWallet
· 08-04 09:49
É de novo a culpa do chrome = = É só isso de segurança?
Ver originalResponder0
token_therapist
· 08-04 09:46
Não há vulnerabilidades com poder de ataque, só estou sem nada para fazer.
A divulgação do valor Sentinel do motor Chrome V8 leva ao risco de fuga da sandbox.
Aplicação do valor sentinel no Chrome V8 e seu impacto na segurança
O valor sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursão. O código-fonte do motor Chrome V8 faz uso extensivo de valores sentinel. Recentemente, pesquisadores de segurança descobriram que a divulgação de certos objetos de valor sentinel pode permitir a execução de código arbitrário dentro do sandbox do Chrome.
Existem vários objetos nativos no V8 que não devem ser vazados para o ambiente JavaScript. Além do objeto TheHole que foi exposto anteriormente, o vazamento do objeto Uninitialized Oddball também pode levar a problemas de segurança. Esse método apareceu pela primeira vez no Issue1352549 e ainda está disponível na versão mais recente do V8, que ainda não foi corrigido pelo Google.
Este método tem uma forte versatilidade:
O CVE-2021-3055 foi divulgado pela primeira vez no Issue1216437( com um POC que vaza o oddball interno não inicializado.
Issue1314616)CVE-2022-1486( também revelou diretamente o objeto UninitializedOddball.
Issue1352549) sem CVE( fornece completamente o método de exploração.
Estes casos mostram que a exploração da vulnerabilidade do valor Sentinel pode afetar várias versões de software.
A maioria dos objetos nativos do V8 está definida no arquivo v8/src/roots/roots.h, disposta de forma adjacente na memória. Uma vez que esses objetos vazem para o ambiente JavaScript, pode ser possível realizar uma fuga do sandbox.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp(
Para verificar este método, pode-se modificar a função nativa %TheHole)( do V8 para vazar objetos Oddball não inicializados.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da exposição do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
Usando esse método, é possível contornar a proteção HardenType do V8. A chave está no fato de que a função read do JavaScript otimizada não verifica adequadamente as propriedades do objeto, resultando em confusão de tipos que permite leituras e gravações arbitrárias.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Revelação exclusiva sobre como contornar o HardenProtect do Chrome v8 através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
A proposta de solução é adicionar uma verificação do map do array ao retornar elementos do array na função otimizada, evitando o cálculo direto do deslocamento para retornar valores.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(
É importante notar que softwares como Skype podem ainda ter esse tipo de vulnerabilidade. Na plataforma x86, devido à falta de compressão de endereços, o espaço de leitura e escrita arbitrária é maior. Um atacante pode explorar essa vulnerabilidade para implementar uma cadeia de exploração completa.
Além do Uninitialized Oddball, existem vários valores Sentinel no V8 que podem apresentar riscos semelhantes. Recomenda-se investigar mais a fundo os problemas de segurança causados por vazamentos de outros valores Sentinel e considerar a inclusão de cenários relevantes nos testes de fuzz.
Independentemente de tais questões serem formalmente classificadas como vulnerabilidades de segurança, elas podem significativamente encurtar o período em que um atacante pode realizar uma exploração completa, o que merece grande atenção.
![Revelação exclusiva sobre como contornar o Chrome v8 HardenProtect através da divulgação do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(