Investigación sobre los riesgos de seguridad causados por la filtración de Sentinel Value en el motor Chrome V8
Introducción
El valor centinela es un tipo de valor especial en algoritmos, que se utiliza comúnmente como condición de terminación en algoritmos de bucle o recursivos. Este valor especial se utiliza ampliamente en el código fuente de Chrome. Recientemente, investigadores lograron ejecutar código arbitrario en la sandbox a través de la filtración del objeto TheHole, lo que llevó a CVE-2021-38003 y CVE-2022-1364. El equipo de Google rápidamente corrigió estas dos vulnerabilidades.
Sin embargo, además del objeto TheHole, existen otros objetos nativos en V8 que no deberían filtrarse a JavaScript. Este artículo se centrará en el objeto Uninitialized Oddball y explicará cómo aprovecharlo para eludir el mecanismo HardenProtect de V8. Es importante señalar que este método de elusión aún es aplicable a la última versión de V8 y no ha sido corregido.
Valor Centinela en V8
La mayoría de los objetos nativos de V8 están definidos en el archivo v8/src/roots/roots.h, y estos objetos están dispuestos secuencialmente en la memoria. Una vez que estos objetos nativos que no deberían filtrarse en JavaScript se filtran, podría dar lugar a la ejecución de cualquier código dentro de la sandbox.
Para verificar esto, podemos modificar la función nativa de V8 para filtrar Oddball no inicializado en JavaScript. La forma específica es modificar el desplazamiento relativo al aislamiento en la función %TheHole() para que devuelva Oddball no inicializado.
Eludir la protección HardenType
El uso de objetos Uninitialized Oddball permite realizar lecturas y escrituras relativamente arbitrarias. En el código JavaScript optimizado, la función read no verifica el valor con la clave obj.prop, sino que calcula directamente el desplazamiento según la semántica de JavaScript para obtener el valor del array. Esto provoca una confusión de tipos durante el cálculo, lo que permite realizar lecturas arbitrarias.
Para cualquier operación de escritura, se puede referir al método de construcción en el Issue1352549 para su análisis. La solución de reparación sugerida es agregar una verificación del mapa del arreglo al devolver elementos del arreglo en la función optimizada, evitando calcular directamente el desplazamiento para devolver valores del arreglo.
Advertencia de PatchGap
Después de analizar el Issue1352549, descubrimos que algunos software pueden tener problemas de PatchGap. Es notable que, hasta ahora, Skype aún no ha corregido esta vulnerabilidad. En un entorno x86, la implementación de lectura y escritura arbitrarias puede variar, ya que no hay compresión de direcciones, lo que permite operar directamente en relación con todo el proceso.
El problema de PatchGap no solo involucra el Issue1352549, la publicación de un nuevo método de bypass también ha reducido drásticamente la dificultad de explotar vulnerabilidades como Issue1314616 y Issue1216437. Los hackers casi no necesitan ningún costo de investigación para llevar a cabo una explotación completa de cualquier fuga del vulnerabilidad uninitialized_oddball.
Resumen
Este artículo discute brevemente el método para realizar lecturas arbitrarias mediante la filtración de uninitialized_Oddball en el valor Sentinel. También existen muchos otros valores Sentinel en V8 que podrían causar problemas de seguridad similares. Esto nos da las siguientes conclusiones:
¿También se puede lograr fácilmente la ejecución remota de código de V8 a través de otras fugas uninitialized_Oddball?
Existe controversia sobre si este tipo de problemas debe considerarse una cuestión de seguridad formal.
Considerar agregar valores centinela como %TheHole/uninitialized_Oddball como variables en el fuzzer para explorar otros usos de los primitivos.
Independientemente de si este tipo de problemas se consideran oficialmente problemas de seguridad, acortan significativamente el ciclo que los hackers necesitan para lograr una explotación completa.
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.
25 me gusta
Recompensa
25
6
Republicar
Compartir
Comentar
0/400
FUD_Vaccinated
· 07-26 03:20
Otra vez Google, este agujero es demasiado frecuente 8
Ver originalesResponder0
MetaverseLandlord
· 07-24 11:22
¡Vaya, las vulnerabilidades de los navegadores de otros son tan avanzadas!
Ver originalesResponder0
SerNgmi
· 07-23 05:34
Verdaderamente, el v8 me está causando dolor de cabeza...
Ver originalesResponder0
GateUser-a606bf0c
· 07-23 05:34
¿Hmm? ¿Chrome está causando problemas de nuevo?
Ver originalesResponder0
StablecoinAnxiety
· 07-23 05:15
¡Qué emocionante es la brecha de seguridad del navegador!
Ver originalesResponder0
PonziDetector
· 07-23 05:11
¡Vaya, esta vulnerabilidad de V8 es bastante grave!
Exploración de la filtración de valores centinela del motor Chrome V8 y análisis de riesgos de seguridad
Investigación sobre los riesgos de seguridad causados por la filtración de Sentinel Value en el motor Chrome V8
Introducción
El valor centinela es un tipo de valor especial en algoritmos, que se utiliza comúnmente como condición de terminación en algoritmos de bucle o recursivos. Este valor especial se utiliza ampliamente en el código fuente de Chrome. Recientemente, investigadores lograron ejecutar código arbitrario en la sandbox a través de la filtración del objeto TheHole, lo que llevó a CVE-2021-38003 y CVE-2022-1364. El equipo de Google rápidamente corrigió estas dos vulnerabilidades.
Sin embargo, además del objeto TheHole, existen otros objetos nativos en V8 que no deberían filtrarse a JavaScript. Este artículo se centrará en el objeto Uninitialized Oddball y explicará cómo aprovecharlo para eludir el mecanismo HardenProtect de V8. Es importante señalar que este método de elusión aún es aplicable a la última versión de V8 y no ha sido corregido.
Valor Centinela en V8
La mayoría de los objetos nativos de V8 están definidos en el archivo v8/src/roots/roots.h, y estos objetos están dispuestos secuencialmente en la memoria. Una vez que estos objetos nativos que no deberían filtrarse en JavaScript se filtran, podría dar lugar a la ejecución de cualquier código dentro de la sandbox.
Para verificar esto, podemos modificar la función nativa de V8 para filtrar Oddball no inicializado en JavaScript. La forma específica es modificar el desplazamiento relativo al aislamiento en la función %TheHole() para que devuelva Oddball no inicializado.
Eludir la protección HardenType
El uso de objetos Uninitialized Oddball permite realizar lecturas y escrituras relativamente arbitrarias. En el código JavaScript optimizado, la función read no verifica el valor con la clave obj.prop, sino que calcula directamente el desplazamiento según la semántica de JavaScript para obtener el valor del array. Esto provoca una confusión de tipos durante el cálculo, lo que permite realizar lecturas arbitrarias.
Para cualquier operación de escritura, se puede referir al método de construcción en el Issue1352549 para su análisis. La solución de reparación sugerida es agregar una verificación del mapa del arreglo al devolver elementos del arreglo en la función optimizada, evitando calcular directamente el desplazamiento para devolver valores del arreglo.
Advertencia de PatchGap
Después de analizar el Issue1352549, descubrimos que algunos software pueden tener problemas de PatchGap. Es notable que, hasta ahora, Skype aún no ha corregido esta vulnerabilidad. En un entorno x86, la implementación de lectura y escritura arbitrarias puede variar, ya que no hay compresión de direcciones, lo que permite operar directamente en relación con todo el proceso.
El problema de PatchGap no solo involucra el Issue1352549, la publicación de un nuevo método de bypass también ha reducido drásticamente la dificultad de explotar vulnerabilidades como Issue1314616 y Issue1216437. Los hackers casi no necesitan ningún costo de investigación para llevar a cabo una explotación completa de cualquier fuga del vulnerabilidad uninitialized_oddball.
Resumen
Este artículo discute brevemente el método para realizar lecturas arbitrarias mediante la filtración de uninitialized_Oddball en el valor Sentinel. También existen muchos otros valores Sentinel en V8 que podrían causar problemas de seguridad similares. Esto nos da las siguientes conclusiones:
¿También se puede lograr fácilmente la ejecución remota de código de V8 a través de otras fugas uninitialized_Oddball?
Existe controversia sobre si este tipo de problemas debe considerarse una cuestión de seguridad formal.
Considerar agregar valores centinela como %TheHole/uninitialized_Oddball como variables en el fuzzer para explorar otros usos de los primitivos.
Independientemente de si este tipo de problemas se consideran oficialmente problemas de seguridad, acortan significativamente el ciclo que los hackers necesitan para lograr una explotación completa.