Valor Centinela y el bypass de HardenProtect de Chrome v8
El valor centinela es un valor especial en los algoritmos, que se utiliza comúnmente como condición de terminación en algoritmos de bucle o recursivos. Este tipo de valores especiales se utiliza ampliamente en el código fuente de Chrome. Investigaciones recientes han demostrado que es posible ejecutar código arbitrario dentro de la sandbox de Chrome al filtrar ciertos objetos de valor centinela.
Este artículo explorará un método para eludir el mecanismo HardenProtect de Chrome v8 utilizando un objeto Uninitialized Oddball. Este método fue propuesto por primera vez por un miembro de Project0 en el Issue1352549 y todavía se puede utilizar en la última versión de V8; Google aún no ha corregido esto.
Cabe destacar que este método tiene una gran versatilidad:
Se presentó por primera vez en CVE-2021-30551( el poc que filtra internal uninitialized oddball.
Issue1314616)CVE-2022-1486( también filtró directamente el objeto UninitializedOddball.
Issue1352549) no tiene CVE( que muestre la cadena de explotación completa de este método.
Estos casos indican que este método de evasión puede afectar a varias versiones de software. Hasta ahora, software como Skype aún no ha solucionado esta vulnerabilidad.
Valor centinela en V8
En el código fuente de V8 se definen una gran cantidad de objetos nativos, incluidos varios valores centinela. Estos objetos están dispuestos de manera adyacente en la memoria. Una vez que se expone un objeto nativo que no debería ser divulgado a JavaScript, podría lograrse la ejecución de cualquier código dentro de la sandbox.
Para verificar este método, podemos modificar la función %TheHole)( de V8 para que devuelva un objeto Oddball no inicializado.
![Revelación exclusiva sobre cómo el valor centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp(
Eludir HardenType
El siguiente código muestra cómo utilizar un objeto Oddball no inicializado filtrado para realizar lecturas arbitrarias:
javascript
function read)obj, idx( {
return obj);
}
let uninitialized_oddball = %GetUninitialized[idx](;
let ab = new ArrayBuffer)8(;
let f64 = new Float64Array)ab(;
let u32 = new Uint32Array)ab(;
for )let i = 0; i < 0x10000; i++( {
read){prop: 1.1}, 0(;
}
%OptimizeFunctionOnNextCall)read(;
let val = read){prop: uninitialized_oddball}, 0x1234(;
f64) = val;
console.log[0]u32(.toString[0]16(, u32).toString[1]16();
El código ensamblador de la función read optimizada muestra que la función solo verifica la propiedad prop de obj, sin comprobar el valor de obj.prop y calcula directamente el desplazamiento, lo que causa confusión de tipos y permite la lectura arbitraria.
![Revelación exclusiva sobre cómo el valor Sentinel se filtró para eludir Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
Sugerencia de solución: Al devolver elementos del array en la función optimizada, añadir una verificación del mapa del array para evitar calcular el desplazamiento directamente.
![Exclusiva revelación sobre cómo el valor centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
Advertencia de PatchGap
Este método de evasión no solo afecta a vulnerabilidades históricas, sino que también puede afectar al software actual. Por ejemplo, Skype aún no ha solucionado este problema. En la plataforma x86, debido a la falta de compresión de direcciones, el rango de lectura y escritura arbitraria es mayor.
Este parche PatchGap no solo aborda el Issue1352549, sino que también ha reducido significativamente la dificultad de explotación de problemas similares como el Issue1314616 y el Issue1216437. Se recomienda a los fabricantes que realicen una revisión exhaustiva de las vulnerabilidades relacionadas.
![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
Resumen
Este artículo presenta un método para realizar lecturas arbitrarias en V8 utilizando Uninitialized Oddball. En V8 también hay otros valores centinela, que pueden presentar riesgos de seguridad similares. Se sugiere investigar más a fondo:
¿Se puede lograr RCE de V8 a través de la filtración de otros valores de Sentinel?
Agregar el valor de Sentinel como variable al Fuzzer, para descubrir nuevos primitivos de explotación.
Afrontar los riesgos de seguridad que pueden surgir de este tipo de problemas
Independientemente de si el problema se clasifica oficialmente como una vulnerabilidad de seguridad, podría acortar significativamente el ciclo de explotación completo para los hackers. Espero que este artículo llame la atención de las partes relevantes.
![Revelación exclusiva sobre cómo eludir Chrome v8 HardenProtect a través de la filtración de Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
![Exclusiva revelación sobre cómo el valor de centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
![Revelación exclusiva sobre cómo el valor de Sentinel se filtra para eludir Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(
![Revelación exclusiva sobre cómo el valor de Sentinel se filtró para eludir Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
14 me gusta
Recompensa
14
6
Republicar
Compartir
Comentar
0/400
WinterWarmthCat
· hace2h
Publicación de detalles fuertes debe ser elogiada
Ver originalesResponder0
StakeOrRegret
· 08-08 15:35
Se ha descubierto otra vulnerabilidad en el navegador.
Ver originalesResponder0
LayerZeroHero
· 08-07 02:24
Una vulnerabilidad un poco genial
Ver originalesResponder0
Web3ProductManager
· 08-07 02:23
Caso extremo super arriesgado aquí
Ver originalesResponder0
GhostWalletSleuth
· 08-07 02:11
Las vulnerabilidades son realmente difíciles de prevenir.
Chrome v8 HardenProtect bypass: implementación de ejecución de código arbitrario utilizando el Valor Centinela
Valor Centinela y el bypass de HardenProtect de Chrome v8
El valor centinela es un valor especial en los algoritmos, que se utiliza comúnmente como condición de terminación en algoritmos de bucle o recursivos. Este tipo de valores especiales se utiliza ampliamente en el código fuente de Chrome. Investigaciones recientes han demostrado que es posible ejecutar código arbitrario dentro de la sandbox de Chrome al filtrar ciertos objetos de valor centinela.
Este artículo explorará un método para eludir el mecanismo HardenProtect de Chrome v8 utilizando un objeto Uninitialized Oddball. Este método fue propuesto por primera vez por un miembro de Project0 en el Issue1352549 y todavía se puede utilizar en la última versión de V8; Google aún no ha corregido esto.
Cabe destacar que este método tiene una gran versatilidad:
Se presentó por primera vez en CVE-2021-30551( el poc que filtra internal uninitialized oddball.
Issue1314616)CVE-2022-1486( también filtró directamente el objeto UninitializedOddball.
Issue1352549) no tiene CVE( que muestre la cadena de explotación completa de este método.
Estos casos indican que este método de evasión puede afectar a varias versiones de software. Hasta ahora, software como Skype aún no ha solucionado esta vulnerabilidad.
Valor centinela en V8
En el código fuente de V8 se definen una gran cantidad de objetos nativos, incluidos varios valores centinela. Estos objetos están dispuestos de manera adyacente en la memoria. Una vez que se expone un objeto nativo que no debería ser divulgado a JavaScript, podría lograrse la ejecución de cualquier código dentro de la sandbox.
Para verificar este método, podemos modificar la función %TheHole)( de V8 para que devuelva un objeto Oddball no inicializado.
![Revelación exclusiva sobre cómo el valor centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-263e5651876fc00c4e0af0cfcd350210.webp(
Eludir HardenType
El siguiente código muestra cómo utilizar un objeto Oddball no inicializado filtrado para realizar lecturas arbitrarias:
javascript function read)obj, idx( { return obj); }
let uninitialized_oddball = %GetUninitialized[idx](; let ab = new ArrayBuffer)8(; let f64 = new Float64Array)ab(; let u32 = new Uint32Array)ab(;
for )let i = 0; i < 0x10000; i++( { read){prop: 1.1}, 0(;
}
%OptimizeFunctionOnNextCall)read(;
let val = read){prop: uninitialized_oddball}, 0x1234(; f64) = val; console.log[0]u32(.toString[0]16(, u32).toString[1]16();
El código ensamblador de la función read optimizada muestra que la función solo verifica la propiedad prop de obj, sin comprobar el valor de obj.prop y calcula directamente el desplazamiento, lo que causa confusión de tipos y permite la lectura arbitraria.
![Revelación exclusiva sobre cómo el valor Sentinel se filtró para eludir Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-26c26345e3ec4effeea2e3e6b7cd8772.webp(
Sugerencia de solución: Al devolver elementos del array en la función optimizada, añadir una verificación del mapa del array para evitar calcular el desplazamiento directamente.
![Exclusiva revelación sobre cómo el valor centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-4c091ca0e153e953eb168e99762ff7cc.webp(
Advertencia de PatchGap
Este método de evasión no solo afecta a vulnerabilidades históricas, sino que también puede afectar al software actual. Por ejemplo, Skype aún no ha solucionado este problema. En la plataforma x86, debido a la falta de compresión de direcciones, el rango de lectura y escritura arbitraria es mayor.
Este parche PatchGap no solo aborda el Issue1352549, sino que también ha reducido significativamente la dificultad de explotación de problemas similares como el Issue1314616 y el Issue1216437. Se recomienda a los fabricantes que realicen una revisión exhaustiva de las vulnerabilidades relacionadas.
![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
Resumen
Este artículo presenta un método para realizar lecturas arbitrarias en V8 utilizando Uninitialized Oddball. En V8 también hay otros valores centinela, que pueden presentar riesgos de seguridad similares. Se sugiere investigar más a fondo:
Independientemente de si el problema se clasifica oficialmente como una vulnerabilidad de seguridad, podría acortar significativamente el ciclo de explotación completo para los hackers. Espero que este artículo llame la atención de las partes relevantes.
![Revelación exclusiva sobre cómo eludir Chrome v8 HardenProtect a través de la filtración de Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
![Exclusiva revelación sobre cómo el valor de centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
![Revelación exclusiva sobre cómo el valor de Sentinel se filtra para eludir Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(
![Revelación exclusiva sobre cómo el valor de Sentinel se filtró para eludir Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(