Profundizando en el impacto de seguridad del Sentinel Value en el motor Chrome V8
El valor centinela es un tipo de valor especial en algoritmos, a menudo utilizado como condición de terminación en bucles o algoritmos recursivos. En el código fuente de Chrome existen varios valores centinela. Investigaciones anteriores han demostrado que se puede lograr la ejecución de código arbitrario dentro de la sandbox de Chrome mediante la filtración del objeto TheHole. Posteriormente, el equipo de Google corrigió las vulnerabilidades relacionadas.
Sin embargo, también existen otros objetos nativos en V8 que no deberían ser revelados a JavaScript. Este artículo discutirá el objeto Uninitialized Oddball, cuyo método de elusión apareció por primera vez en el Issue1352549. Es importante señalar que este método aún se puede utilizar en la última versión de V8 y no ha sido corregido.
Este método tiene cierta universalidad:
Issue1216437(CVE-2021-30551) presentó por primera vez un poc que revela un oddball interno no inicializado.
Issue1314616(CVE-2022-1486) también reveló directamente UninitializedOddball.
El impacto del Issue1352549(NoCVE) merece atención.
Estos casos indican que es necesario revisar el software que podría verse afectado por PatchGap. Actualmente, Skype aún no ha solucionado esta vulnerabilidad.
La mayoría de los objetos nativos en V8 están definidos en el archivo v8/src/roots/roots.h, y están dispuestos de manera adyacente en la memoria. Una vez que estos objetos nativos, que no deberían filtrarse, se filtran a JavaScript, se podría lograr la ejecución arbitraria de código dentro de la sandbox.
Para verificar este método, podemos modificar la función nativa de V8, para filtrar Uninitialized Oddball a JavaScript. En concreto, se puede modificar el desplazamiento relativo al isolate en la función %TheHole(), de modo que devuelva Uninitialized Oddball.
Utilizando este método se puede eludir la protección HardenType, logrando una lectura y escritura relativamente arbitrarias. Al analizar el código JavaScript optimizado, se puede observar que al verificar obj.prop no se valida el valor de la clave obj.prop, simplemente se calcula el desplazamiento según la semántica de JavaScript y se obtiene el valor del arreglo, lo que provoca una confusión de tipos.
Debido a que uninitialized_oddball está ordenado más alto y es más primitivo en la memoria de V8, es más fácil de falsificar que el objeto TheHole. Una vez que se repararon las mitigaciones relacionadas con TheHole, este método se convirtió en la opción preferida para eludir.
Se sugiere agregar una verificación del mapa de la matriz al devolver los elementos de la matriz en la función optimizada, para evitar calcular directamente el desplazamiento y devolver valores.
Es importante señalar que Skype aún no ha corregido esta vulnerabilidad. En sistemas x86, debido a la falta de compresión de direcciones, la lectura y escritura arbitrarias son relativas a todo el proceso. Aunque Skype ha habilitado ASLR, debido al tamaño del archivo, los hackers solo necesitan leer y escribir en direcciones fijas, lo que les da una alta probabilidad de acceder al contenido de los archivos de Skype. Esto reduce significativamente la dificultad para completar una cadena de explotación completa.
Este PatchGap no solo está relacionado con el Issue1352549, la divulgación de un nuevo método de bypass también ha reducido significativamente la dificultad de explotar vulnerabilidades como el Issue1314616 y el Issue1216437. Los hackers casi no necesitan investigar adicionalmente para explotar completamente cualquier vulnerabilidad de uninitialized_oddball que haya sido filtrada anteriormente.
En V8 también existen otros valores Sentinel que pueden presentar riesgos de seguridad similares. Se recomienda considerar la inclusión de valores Sentinel como %TheHole/uninitialized_Oddball como variables en las pruebas de fuzz para descubrir otras posibles primitivas de explotación.
Independientemente de si este tipo de problemas se consideran oficialmente problemas de seguridad, acortan significativamente el período en el que los hackers pueden explotar completamente. Necesitamos seguir prestando atención y estudiando este campo para mejorar la seguridad de software como Chrome.
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
3
Republicar
Compartir
Comentar
0/400
GateUser-00be86fc
· hace3h
Oye, v8 ha expuesto un pequeño fallo de nuevo.
Ver originalesResponder0
Blockblind
· hace3h
Este bug ha estado sin arreglar tanto tiempo, ¡es impresionante!
Ver originalesResponder0
ImpermanentSage
· hace3h
¡Vaya! Otra vez una vulnerabilidad de ejecución de código.
Análisis profundo de los riesgos de seguridad del Valor Sentinel del motor Chrome V8
Profundizando en el impacto de seguridad del Sentinel Value en el motor Chrome V8
El valor centinela es un tipo de valor especial en algoritmos, a menudo utilizado como condición de terminación en bucles o algoritmos recursivos. En el código fuente de Chrome existen varios valores centinela. Investigaciones anteriores han demostrado que se puede lograr la ejecución de código arbitrario dentro de la sandbox de Chrome mediante la filtración del objeto TheHole. Posteriormente, el equipo de Google corrigió las vulnerabilidades relacionadas.
Sin embargo, también existen otros objetos nativos en V8 que no deberían ser revelados a JavaScript. Este artículo discutirá el objeto Uninitialized Oddball, cuyo método de elusión apareció por primera vez en el Issue1352549. Es importante señalar que este método aún se puede utilizar en la última versión de V8 y no ha sido corregido.
Este método tiene cierta universalidad:
Issue1216437(CVE-2021-30551) presentó por primera vez un poc que revela un oddball interno no inicializado.
Issue1314616(CVE-2022-1486) también reveló directamente UninitializedOddball.
El impacto del Issue1352549(NoCVE) merece atención.
Estos casos indican que es necesario revisar el software que podría verse afectado por PatchGap. Actualmente, Skype aún no ha solucionado esta vulnerabilidad.
La mayoría de los objetos nativos en V8 están definidos en el archivo v8/src/roots/roots.h, y están dispuestos de manera adyacente en la memoria. Una vez que estos objetos nativos, que no deberían filtrarse, se filtran a JavaScript, se podría lograr la ejecución arbitraria de código dentro de la sandbox.
Para verificar este método, podemos modificar la función nativa de V8, para filtrar Uninitialized Oddball a JavaScript. En concreto, se puede modificar el desplazamiento relativo al isolate en la función %TheHole(), de modo que devuelva Uninitialized Oddball.
Utilizando este método se puede eludir la protección HardenType, logrando una lectura y escritura relativamente arbitrarias. Al analizar el código JavaScript optimizado, se puede observar que al verificar obj.prop no se valida el valor de la clave obj.prop, simplemente se calcula el desplazamiento según la semántica de JavaScript y se obtiene el valor del arreglo, lo que provoca una confusión de tipos.
Debido a que uninitialized_oddball está ordenado más alto y es más primitivo en la memoria de V8, es más fácil de falsificar que el objeto TheHole. Una vez que se repararon las mitigaciones relacionadas con TheHole, este método se convirtió en la opción preferida para eludir.
Se sugiere agregar una verificación del mapa de la matriz al devolver los elementos de la matriz en la función optimizada, para evitar calcular directamente el desplazamiento y devolver valores.
Es importante señalar que Skype aún no ha corregido esta vulnerabilidad. En sistemas x86, debido a la falta de compresión de direcciones, la lectura y escritura arbitrarias son relativas a todo el proceso. Aunque Skype ha habilitado ASLR, debido al tamaño del archivo, los hackers solo necesitan leer y escribir en direcciones fijas, lo que les da una alta probabilidad de acceder al contenido de los archivos de Skype. Esto reduce significativamente la dificultad para completar una cadena de explotación completa.
Este PatchGap no solo está relacionado con el Issue1352549, la divulgación de un nuevo método de bypass también ha reducido significativamente la dificultad de explotar vulnerabilidades como el Issue1314616 y el Issue1216437. Los hackers casi no necesitan investigar adicionalmente para explotar completamente cualquier vulnerabilidad de uninitialized_oddball que haya sido filtrada anteriormente.
En V8 también existen otros valores Sentinel que pueden presentar riesgos de seguridad similares. Se recomienda considerar la inclusión de valores Sentinel como %TheHole/uninitialized_Oddball como variables en las pruebas de fuzz para descubrir otras posibles primitivas de explotación.
Independientemente de si este tipo de problemas se consideran oficialmente problemas de seguridad, acortan significativamente el período en el que los hackers pueden explotar completamente. Necesitamos seguir prestando atención y estudiando este campo para mejorar la seguridad de software como Chrome.