Análisis profundo de las vulnerabilidades de seguridad del Valor Sentinel del motor Chrome V8

robot
Generación de resúmenes en curso

Profundizando en los riesgos de seguridad del Valor Centinela en el motor Chrome V8

El valor centinela es un valor especial en los algoritmos, que generalmente se utiliza como condición de terminación en algoritmos de bucle o recursivos. En el código fuente de Chrome, se utiliza ampliamente el valor centinela. Recientemente, los investigadores de seguridad descubrieron que se puede lograr la ejecución de código arbitrario dentro del sandbox de Chrome mediante la filtración del objeto TheHole. El equipo de Google rápidamente solucionó esta vulnerabilidad.

Sin embargo, en V8 también existen otros objetos nativos que no deberían filtrarse a JavaScript. Este artículo se centrará en el objeto Oddball no inicializado, cuya filtración podría dar lugar a riesgos de seguridad más amplios. Actualmente, este método aún está disponible en la última versión de V8 y Google no ha abordado este problema.

Es importante destacar que este método tiene una gran versatilidad:

  1. Se presentó por primera vez el poc de la filtración de internal uninitialized oddball en CVE-2021-30551.

  2. El poc de CVE-2022-1486 también filtró directamente UninitializedOddball.

  3. Issue1352549( aún no ha asignado CVE) que muestra el código de explotación completo.

Estos casos demuestran claramente la necesidad de realizar un examen exhaustivo del software que podría verse afectado. Hasta ahora, Skype no ha corregido esta vulnerabilidad.

Valor Sentinel en V8

La mayoría de los objetos nativos de V8 se definen en el archivo v8/src/roots/roots.h, y estos objetos se organizan de manera contigua en la memoria. Una vez que se filtran objetos nativos que no deberían ser expuestos a JavaScript, podría lograrse la ejecución de código arbitrario dentro de la sandbox.

Para verificar la eficacia de este método en la última versión de V8, podemos modificar la función nativa de V8 para filtrar Uninitialized Oddball en JavaScript. El método específico es modificar el desplazamiento relativo de isolate en la función %TheHole() para que devuelva Uninitialized Oddball.

Revelación exclusiva sobre cómo el valor del centinela se filtró para eludir Chrome v8 HardenProtect

Eludir la protección HardenType

A través de la simplificación del código proporcionado en el Issue1352549, podemos lograr la lectura relativamente arbitraria en la versión V8 11.0.0:

Revelación exclusiva sobre cómo el valor Sentinel se utiliza para eludir Chrome v8 HardenProtect

Cuando %TheHole() devuelve UninitializedOddball, la función read optimizada de JavaScript calculará directamente el desplazamiento según la semántica de JavaScript, sin comprobar el valor de obj.prop, lo que provocará confusión de tipos y permitirá la lectura arbitraria.

Revelación exclusiva sobre cómo el valor de centinela filtrado elude Chrome v8 HardenProtect

Similar al objeto TheHole, uninitialized_oddball se encuentra más adelante en la memoria de V8 y es más primitivo, lo que lo hace más fácil de falsificar. Después de que se eludieron las mitigaciones de TheHole, este método se convirtió en la opción de bypass preferida.

La solución recomendada es aumentar la verificación del mapa del array al devolver los elementos del array en la función optimizada, evitando calcular directamente el desplazamiento para devolver los valores del array.

Revelación exclusiva sobre cómo el valor de Sentinel se filtró para eludir Chrome v8 HardenProtect

Advertencia de PatchGap

Después de analizar el Issue1352549, descubrimos que Skype aún no ha solucionado esta vulnerabilidad. En el entorno x86, la lectura y escritura arbitrarias son ligeramente diferentes: debido a la falta de compresión de direcciones, la lectura y escritura arbitrarias son directamente relativas a todo el proceso.

Aunque Skype ha habilitado ASLR, debido a que el archivo es bastante grande y se coloca directamente en 4 GB de memoria, el atacante solo necesita leer y escribir en direcciones específicas, lo que aumenta considerablemente la probabilidad de acceder al contenido del archivo de Skype. Combinando métodos tradicionales como el análisis de PE, no es difícil completar toda la cadena de explotación de vulnerabilidades.

Revelación exclusiva sobre cómo el valor de Sentinel se filtra para eludir Chrome v8 HardenProtect

Esta vez, PatchGap no solo involucra el Issue1352549, la divulgación del nuevo método de bypass también ha reducido significativamente la dificultad de explotación de vulnerabilidades similares a CVE-2022-1486 y CVE-2021-30551. Los atacantes prácticamente no necesitan investigar adicionalmente para explotar completamente cualquier vulnerabilidad que filtre uninitialized_oddball.

Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect

Resumen

Este artículo discute brevemente cómo se puede lograr la lectura arbitraria de primitivos mediante la divulgación de uninitialized_Oddball en el valor Sentinel. También existen otros valores Sentinel en V8, y a menudo se encuentran fallos durante las pruebas. Dado que Uninitialized_Oddball y TheHole pueden facilitar la elusión de restricciones en V8, tenemos razones para sospechar que otros valores Sentinel también podrían causar problemas similares.

Esto nos da la siguiente lección:

  1. ¿Se puede lograr fácilmente la RCE de V8 también a través de otras filtraciones uninitialized_Oddball?

  2. Google rápidamente arregló la vulnerabilidad de TheHole, pero el uso del recolector de basura para lograr una evasión de ASLR sigue sin resolverse a largo plazo, lo que indica que todavía existe una frontera difusa sobre si este tipo de problemas se consideran problemas de seguridad formal.

  3. Si se considera como un problema de seguridad formal, ¿es necesario incluir valores centinela como %TheHole/uninitialized_Oddball como variables en el fuzzer para descubrir otras primitivas de explotación?

De todos modos, este tipo de problemas acortará significativamente el período en que un atacante puede lograr una explotación completa.

Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect

Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect

Revelación exclusiva sobre cómo el valor del centinela se filtró para eludir Chrome v8 HardenProtect

Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 3
  • Compartir
Comentar
0/400
GateUser-afe07a92vip
· hace23h
¿Qué está haciendo Google? Esto también se filtró.
Ver originalesResponder0
SelfRuggervip
· hace23h
Parece que V8 va a tener grandes cosas este año.
Ver originalesResponder0
SchrodingerGasvip
· 07-12 17:16
Después de dormir toda la noche, v8 sigue trabajando, ¿quién va a pagar este gas?
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)