Explorando las vulnerabilidades de seguridad causadas por la filtración de Sentinel Value en el motor Chrome V8
El valor centinela es un valor utilizado como una marca especial en algoritmos, generalmente como condición de terminación en bucles o recursiones. En el código fuente del motor Chrome V8 existen múltiples valores centinela, algunos de los cuales no deben filtrarse al entorno de JavaScript. Este artículo discutirá el método para eludir el mecanismo HardenProtect de Chrome V8 a través de la filtración del objeto Oddball no inicializado.
Valor Sentinel en V8
En el archivo roots.h del código fuente de V8 se definen numerosos objetos nativos que están dispuestos de manera adyacente en la memoria. Una vez que estos objetos se filtran a JavaScript, pueden causar una fuga de la sandbox.
Podemos verificar esto modificando la función nativa de V8. Por ejemplo, modificando el desplazamiento de la función %TheHole() para que devuelva un objeto Uninitialized Oddball en lugar del objeto TheHole.
Eludir la protección de HardenType
El uso de objetos Uninitialized Oddball puede lograr la lectura de memoria relativamente arbitraria. La clave radica en la función de lectura de JavaScript optimizada que solo verifica si la propiedad prop del objeto es correcta, pero no verifica el valor asociado a obj.prop como clave. Esto lleva a una confusión de tipos durante el proceso de cálculo, lo que permite la lectura arbitraria.
Al analizar el código ensamblador optimizado, se puede ver que cuando se pasa un uninitialized_oddball, el programa calculará directamente el desplazamiento y leerá los datos, sin realizar una verificación de tipo. Este método es más fácil de construir y aprovechar en comparación con el objeto TheHole.
La solución recomendada es agregar una verificación del mapa del arreglo al devolver los elementos del arreglo desde la función optimizada, evitando devolver los valores del arreglo directamente mediante cálculos de desplazamiento.
Advertencia de seguridad de PatchGap
Además de prestar atención a las vulnerabilidades históricas conocidas, también debemos estar atentos a los problemas que los fabricantes han corregido en silencio en los componentes básicos. Tras el análisis, se descubrió que el software de Skype todavía no ha solucionado esta vulnerabilidad. En la plataforma x86, debido a la falta de compresión de direcciones, el rango de lectura y escritura arbitraria es mayor, lo que casi permite leer y escribir todo el espacio del proceso.
Este PatchGap no solo involucra el Issue1352549, sino que también incluye vulnerabilidades similares como el Issue1314616 y el Issue1216437. Después de que se hicieran públicos los nuevos métodos de bypass, la dificultad para explotar estas vulnerabilidades se redujo drásticamente, permitiendo a los atacantes completar una cadena de explotación completa casi sin necesidad de investigación adicional.
Resumen
Este artículo explora brevemente el método para realizar lecturas arbitrarias mediante la filtración de Uninitialized Oddball. También existen otros múltiples valores Sentinel en V8 que podrían causar problemas similares. Esto nos sugiere que:
Otras fugas de uninitialized_Oddball pueden también llevar a la evasión de la sandbox V8.
Existe controversia sobre si estos problemas deben considerarse como vulnerabilidades de seguridad formales.
Considerar incluir el valor centinela como variable en las pruebas de confusión para descubrir nuevos métodos de explotación.
De todos modos, este tipo de problemas acortará significativamente el período en el que un atacante puede lograr una explotación completa, lo cual merece una atención considerable.
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.
12 me gusta
Recompensa
12
4
Compartir
Comentar
0/400
MoonBoi42
· hace13h
Un poco nervioso, hay demasiadas vulnerabilidades.
Análisis de los riesgos de seguridad y la explotación de la filtración del valor centinela del motor Chrome V8
Explorando las vulnerabilidades de seguridad causadas por la filtración de Sentinel Value en el motor Chrome V8
El valor centinela es un valor utilizado como una marca especial en algoritmos, generalmente como condición de terminación en bucles o recursiones. En el código fuente del motor Chrome V8 existen múltiples valores centinela, algunos de los cuales no deben filtrarse al entorno de JavaScript. Este artículo discutirá el método para eludir el mecanismo HardenProtect de Chrome V8 a través de la filtración del objeto Oddball no inicializado.
Valor Sentinel en V8
En el archivo roots.h del código fuente de V8 se definen numerosos objetos nativos que están dispuestos de manera adyacente en la memoria. Una vez que estos objetos se filtran a JavaScript, pueden causar una fuga de la sandbox.
Podemos verificar esto modificando la función nativa de V8. Por ejemplo, modificando el desplazamiento de la función %TheHole() para que devuelva un objeto Uninitialized Oddball en lugar del objeto TheHole.
Eludir la protección de HardenType
El uso de objetos Uninitialized Oddball puede lograr la lectura de memoria relativamente arbitraria. La clave radica en la función de lectura de JavaScript optimizada que solo verifica si la propiedad prop del objeto es correcta, pero no verifica el valor asociado a obj.prop como clave. Esto lleva a una confusión de tipos durante el proceso de cálculo, lo que permite la lectura arbitraria.
Al analizar el código ensamblador optimizado, se puede ver que cuando se pasa un uninitialized_oddball, el programa calculará directamente el desplazamiento y leerá los datos, sin realizar una verificación de tipo. Este método es más fácil de construir y aprovechar en comparación con el objeto TheHole.
La solución recomendada es agregar una verificación del mapa del arreglo al devolver los elementos del arreglo desde la función optimizada, evitando devolver los valores del arreglo directamente mediante cálculos de desplazamiento.
Advertencia de seguridad de PatchGap
Además de prestar atención a las vulnerabilidades históricas conocidas, también debemos estar atentos a los problemas que los fabricantes han corregido en silencio en los componentes básicos. Tras el análisis, se descubrió que el software de Skype todavía no ha solucionado esta vulnerabilidad. En la plataforma x86, debido a la falta de compresión de direcciones, el rango de lectura y escritura arbitraria es mayor, lo que casi permite leer y escribir todo el espacio del proceso.
Este PatchGap no solo involucra el Issue1352549, sino que también incluye vulnerabilidades similares como el Issue1314616 y el Issue1216437. Después de que se hicieran públicos los nuevos métodos de bypass, la dificultad para explotar estas vulnerabilidades se redujo drásticamente, permitiendo a los atacantes completar una cadena de explotación completa casi sin necesidad de investigación adicional.
Resumen
Este artículo explora brevemente el método para realizar lecturas arbitrarias mediante la filtración de Uninitialized Oddball. También existen otros múltiples valores Sentinel en V8 que podrían causar problemas similares. Esto nos sugiere que:
Otras fugas de uninitialized_Oddball pueden también llevar a la evasión de la sandbox V8.
Existe controversia sobre si estos problemas deben considerarse como vulnerabilidades de seguridad formales.
Considerar incluir el valor centinela como variable en las pruebas de confusión para descubrir nuevos métodos de explotación.
De todos modos, este tipo de problemas acortará significativamente el período en el que un atacante puede lograr una explotación completa, lo cual merece una atención considerable.