Risco de segurança causado pela divulgação de Sentinel Value no motor Chrome V8
O valor Sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursão. No código-fonte do Chrome, existem vários valores Sentinel, alguns dos quais não devem vazar para o ambiente JavaScript. Este artigo irá explorar a exploração de vazamentos do objeto Uninitialized Oddball para contornar o mecanismo HardenProtect do motor Chrome V8.
Valor Sentinel no V8
A maior parte dos objetos nativos do V8 está definida no arquivo v8/src/roots/roots.h, e esses objetos estão dispostos adjacentes na memória. Uma vez que esses objetos nativos, que não deveriam ser expostos ao JavaScript, sejam vazados, isso pode levar à execução de código arbitrário dentro do sandbox.
Podemos vazar o Oddball Não Inicializado para o JavaScript modificando a função nativa do V8. Por exemplo, alterando o deslocamento da função %TheHole() para que retorne o objeto Oddball Não Inicializado.
Contornar a proteção HardenType
Usando um objeto Uninitialized Oddball vazado, é possível construir o seguinte código para realizar leituras relativamente arbitrárias:
javascript
function read(obj, idx) {
return obj[idx];
}
let arr = [1.1, 2.2, 3.3];
let uninitialized_oddball = %TheHole();
for (let i = 0; i < 100000; i++) {
read(arr, 0);
}
%OptimizeFunctionOnNextCall(ler);
let result = read(uninitialized_oddball, 0x12345);
%DebugPrint(resultado);
O código de montagem da função read otimizado mostra que, ao calcular o deslocamento do array, não foi verificado o tipo de valor de obj.prop, calculando diretamente de acordo com a semântica do JavaScript, o que resulta em confusão de tipos e permite leitura arbitrária.
A sugestão de correção é adicionar uma verificação ao map do array ao retornar elementos do array na função otimizada, evitando o cálculo direto do deslocamento para retornar valores.
Aviso de Risco PatchGap
A vulnerabilidade ainda não foi corrigida em alguns softwares que utilizam a versão antiga do motor V8, como o Skype(. Na plataforma x86, devido à ausência de compressão de endereços, a leitura e escrita arbitrárias podem ser feitas diretamente em relação a todo o processo.
A divulgação deste novo método de contorno reduziu a dificuldade de explorar as vulnerabilidades relacionadas. Os hackers quase não precisam de pesquisa adicional para completar a exploração total da vulnerabilidade Uninitialized Oddball.
![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-1e3fda77c04bceafdcc40413824a5d37.webp(
Resumo
Existem outros valores Sentinel no V8 que podem causar problemas de segurança semelhantes. Recomenda-se uma investigação adicional:
Outras fugas de Uninitialized Oddball também podem permitir RCE do V8
Deve-se considerar formalmente a inclusão deste tipo de questão como uma vulnerabilidade de segurança?
É necessário incluir o valor Sentinel como variável no teste Fuzzer?
De qualquer forma, este tipo de problema irá encurtar significativamente o período em que os hackers podem explorar completamente, o que merece grande atenção.
![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-ed89289bebf59d4b27f5bffb5511a8c5.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-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Revelação exclusiva sobre como contornar o HardenProtect do Chrome via vazamento do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.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-506159c94c9e0988552cbcbd13d971e1.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-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.
18 Curtidas
Recompensa
18
6
Compartilhar
Comentário
0/400
GateUser-bd883c58
· 08-04 04:05
Essa vulnerabilidade é tão hardcore que dá um pouco de medo.
Ver originalResponder0
SerumDegen
· 08-02 17:19
gm frens... outro vazamento de alpha avistado no v8, estamos todos rekt
Ver originalResponder0
ThatsNotARugPull
· 08-02 17:19
Esta panela Chrome leva-a. Já te mostraram o buraco.
Ver originalResponder0
RektButStillHere
· 08-02 17:09
Por que a proteção do sandbox é tão fraca?
Ver originalResponder0
CryptoNomics
· 08-02 17:01
*suspiro* mais uma exploração provando que a minha análise de regressão sobre o modelo de segurança do chrome era estatisticamente significativa... e ainda assim ninguém ouviu
Risco de segurança da violação do valor do Sentinel do motor V8 que contorna o HardenProtect
Risco de segurança causado pela divulgação de Sentinel Value no motor Chrome V8
O valor Sentinel é um valor especial em algoritmos, frequentemente utilizado como condição de término em algoritmos de loop ou recursão. No código-fonte do Chrome, existem vários valores Sentinel, alguns dos quais não devem vazar para o ambiente JavaScript. Este artigo irá explorar a exploração de vazamentos do objeto Uninitialized Oddball para contornar o mecanismo HardenProtect do motor Chrome V8.
Valor Sentinel no V8
A maior parte dos objetos nativos do V8 está definida no arquivo v8/src/roots/roots.h, e esses objetos estão dispostos adjacentes na memória. Uma vez que esses objetos nativos, que não deveriam ser expostos ao JavaScript, sejam vazados, isso pode levar à execução de código arbitrário dentro do sandbox.
Podemos vazar o Oddball Não Inicializado para o JavaScript modificando a função nativa do V8. Por exemplo, alterando o deslocamento da função %TheHole() para que retorne o objeto Oddball Não Inicializado.
Contornar a proteção HardenType
Usando um objeto Uninitialized Oddball vazado, é possível construir o seguinte código para realizar leituras relativamente arbitrárias:
javascript function read(obj, idx) { return obj[idx]; }
let arr = [1.1, 2.2, 3.3]; let uninitialized_oddball = %TheHole();
for (let i = 0; i < 100000; i++) { read(arr, 0);
}
%OptimizeFunctionOnNextCall(ler);
let result = read(uninitialized_oddball, 0x12345); %DebugPrint(resultado);
O código de montagem da função read otimizado mostra que, ao calcular o deslocamento do array, não foi verificado o tipo de valor de obj.prop, calculando diretamente de acordo com a semântica do JavaScript, o que resulta em confusão de tipos e permite leitura arbitrária.
A sugestão de correção é adicionar uma verificação ao map do array ao retornar elementos do array na função otimizada, evitando o cálculo direto do deslocamento para retornar valores.
Aviso de Risco PatchGap
A vulnerabilidade ainda não foi corrigida em alguns softwares que utilizam a versão antiga do motor V8, como o Skype(. Na plataforma x86, devido à ausência de compressão de endereços, a leitura e escrita arbitrárias podem ser feitas diretamente em relação a todo o processo.
A divulgação deste novo método de contorno reduziu a dificuldade de explorar as vulnerabilidades relacionadas. Os hackers quase não precisam de pesquisa adicional para completar a exploração total da vulnerabilidade Uninitialized Oddball.
![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-1e3fda77c04bceafdcc40413824a5d37.webp(
Resumo
Existem outros valores Sentinel no V8 que podem causar problemas de segurança semelhantes. Recomenda-se uma investigação adicional:
De qualquer forma, este tipo de problema irá encurtar significativamente o período em que os hackers podem explorar completamente, o que merece grande atenção.
![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-ed89289bebf59d4b27f5bffb5511a8c5.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-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Revelação exclusiva sobre como contornar o HardenProtect do Chrome via vazamento do Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.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-506159c94c9e0988552cbcbd13d971e1.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-e9e2000fd501b69ee3ee643a459a26dd.webp(