Análise da vulnerabilidade Sentinel Value no motor Chrome V8
O valor Sentinel é um valor especial em algoritmos, geralmente usado como condição de término para loops ou recursões. Existem vários valores Sentinel no motor Chrome V8, e se vazarem para o ambiente JavaScript, podem levar à fuga de sandbox. Este artigo explorará como contornar o mecanismo de proteção HardenProtect do Chrome V8 ao vazar o objeto Uninitialized Oddball.
Valor Sentinel no V8
O código-fonte do V8 define vários objetos nativos que estão dispostos adjacentes na memória. Se esses objetos forem vazados para o JavaScript, isso pode levar à execução de qualquer código dentro da sandbox. Estudos anteriores mostraram que o vazamento do objeto TheHole pode realizar isso, e o objeto Uninitialized Oddball discutido neste artigo também apresenta esse risco.
Podemos validar o Uninitialized Oddball no JavaScript modificando a função nativa do V8. O método específico é alterar o deslocamento relativo ao isolate na função %TheHole() para que retorne o objeto Uninitialized Oddball.
Contornar a proteção HardenType
Usar o objeto Uninitialized Oddball pode contornar a proteção HardenType do V8, permitindo leituras e gravações relativamente arbitrárias. A chave está no fato de que o código JavaScript otimizado não verifica o tipo dos elementos do array, mas calcula diretamente o deslocamento e lê os valores de acordo com a semântica do JavaScript, causando confusão de tipos.
Na arquitetura x86, devido à falta de compressão de endereços, a leitura e escrita arbitrárias são relativas a todo o processo. Isso significa que em certos softwares como Skype, um atacante pode explorar isso para ler e escrever em áreas de memória específicas, completando assim toda a cadeia de exploração de vulnerabilidades.
Impacto na segurança
A divulgação deste método de exploração reduz significativamente a dificuldade de exploração de vulnerabilidades semelhantes. Os atacantes quase não precisam de pesquisa adicional para realizar uma exploração completa, o que representa uma ameaça para muitos softwares que ainda não foram corrigidos.
Além disso, existem outros valores Sentinel no V8 que também podem causar problemas semelhantes. Isso nos alerta para:
Outras revelações de valores Sentinel podem também permitir a execução remota de código no V8 de forma fácil?
Deveríamos classificar este tipo de problemas como vulnerabilidades de segurança?
Deve-se considerar a inclusão de vários valores Sentinel como variáveis no âmbito dos testes de fuzz?
De qualquer forma, este tipo de problema irá encurtar significativamente o período em que um atacante pode explorar totalmente a vulnerabilidade, o que merece a máxima atenção de pesquisadores de segurança e desenvolvedores.
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
7
Repostar
Compartilhar
Comentário
0/400
GateUser-afe07a92
· 2h atrás
Caramba, a v8 tem uma falha novamente.
Ver originalResponder0
CryptoCross-TalkClub
· 08-10 04:39
Esta vulnerabilidade é tão fictícia quanto os níveis de parar a perda dos ursos que se deitam nas principais exchanges.
Ver originalResponder0
PoetryOnChain
· 08-10 02:07
Há outra vez uma vulnerabilidade.
Ver originalResponder0
FudVaccinator
· 08-10 02:06
Mais um buraco V8, pessoal, vamos lá!
Ver originalResponder0
MelonField
· 08-10 01:58
A vulnerabilidade é bastante grave, esta vez o Google foi condenado.
Ver originalResponder0
just_here_for_vibes
· 08-10 01:57
Esse bug é simplesmente explosivo... Muito impressionante
Detalhes da vulnerabilidade Sentinel Value do motor Chrome V8: vazamento de objetos Oddball não inicializados e fuga de sandbox
Análise da vulnerabilidade Sentinel Value no motor Chrome V8
O valor Sentinel é um valor especial em algoritmos, geralmente usado como condição de término para loops ou recursões. Existem vários valores Sentinel no motor Chrome V8, e se vazarem para o ambiente JavaScript, podem levar à fuga de sandbox. Este artigo explorará como contornar o mecanismo de proteção HardenProtect do Chrome V8 ao vazar o objeto Uninitialized Oddball.
Valor Sentinel no V8
O código-fonte do V8 define vários objetos nativos que estão dispostos adjacentes na memória. Se esses objetos forem vazados para o JavaScript, isso pode levar à execução de qualquer código dentro da sandbox. Estudos anteriores mostraram que o vazamento do objeto TheHole pode realizar isso, e o objeto Uninitialized Oddball discutido neste artigo também apresenta esse risco.
Podemos validar o Uninitialized Oddball no JavaScript modificando a função nativa do V8. O método específico é alterar o deslocamento relativo ao isolate na função %TheHole() para que retorne o objeto Uninitialized Oddball.
Contornar a proteção HardenType
Usar o objeto Uninitialized Oddball pode contornar a proteção HardenType do V8, permitindo leituras e gravações relativamente arbitrárias. A chave está no fato de que o código JavaScript otimizado não verifica o tipo dos elementos do array, mas calcula diretamente o deslocamento e lê os valores de acordo com a semântica do JavaScript, causando confusão de tipos.
Na arquitetura x86, devido à falta de compressão de endereços, a leitura e escrita arbitrárias são relativas a todo o processo. Isso significa que em certos softwares como Skype, um atacante pode explorar isso para ler e escrever em áreas de memória específicas, completando assim toda a cadeia de exploração de vulnerabilidades.
Impacto na segurança
A divulgação deste método de exploração reduz significativamente a dificuldade de exploração de vulnerabilidades semelhantes. Os atacantes quase não precisam de pesquisa adicional para realizar uma exploração completa, o que representa uma ameaça para muitos softwares que ainda não foram corrigidos.
Além disso, existem outros valores Sentinel no V8 que também podem causar problemas semelhantes. Isso nos alerta para:
Outras revelações de valores Sentinel podem também permitir a execução remota de código no V8 de forma fácil?
Deveríamos classificar este tipo de problemas como vulnerabilidades de segurança?
Deve-se considerar a inclusão de vários valores Sentinel como variáveis no âmbito dos testes de fuzz?
De qualquer forma, este tipo de problema irá encurtar significativamente o período em que um atacante pode explorar totalmente a vulnerabilidade, o que merece a máxima atenção de pesquisadores de segurança e desenvolvedores.