Nueva forma de explotación de vulnerabilidades de Chrome v8: fuga de la implementación de Oddball no inicializada para escapar de la sandbox

Eludir el HardenProtect de Chrome v8 mediante la filtración del Valor Centinela

Introducción

El valor centinela es un valor especial en un algoritmo, que generalmente se utiliza como condición de terminación en algoritmos de bucle o recursivos. En el código fuente de Chrome hay muchos valores centinela. Anteriormente, se realizó una investigación que mostró cómo se podía ejecutar código arbitrario dentro de la sandbox mediante la filtración del objeto TheHole. El equipo de Google rápidamente actualizó los arreglos relacionados.

Además del objeto TheHole, en V8 hay muchos otros objetos nativos que no deberían filtrarse en JS. Este artículo discutirá el objeto Uninitialized Oddball, que actualmente todavía se puede utilizar en la última versión de V8. Cabe destacar que este método tiene cierta generalidad y ha aparecido en múltiples vulnerabilidades.

Revelación exclusiva sobre cómo eludir Chrome v8 HardenProtect a través de la filtración de Sentinel Value

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 se filtran objetos nativos que no deberían ser revelados a Javascript, se puede lograr la ejecución de cualquier código dentro de la sandbox.

Para verificar este método, podemos modificar la función nativa de v8 para filtrar Uninitialized Oddball en JavaScript. Específicamente, se puede modificar el desplazamiento relativo del %TheHole() en relación con el isolate.

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

Eludir HardenType

El uso de Uninitialized Oddball permite realizar lecturas y escrituras relativamente arbitrarias. La clave está en que en la función read de JavaScript optimizada, solo se verifica si la propiedad prop de obj es correcta, pero no se verifica el valor con clave obj.prop, sino que se calcula directamente el desplazamiento según la semántica de JavaScript para obtener el valor del arreglo. Esto provoca confusión de tipos durante el cálculo, permitiendo lecturas arbitrarias.

Debido a que Uninitialized Oddball tiene un orden más alto y es más primitivo en la memoria v8, es más fácil de falsificar en comparación con el objeto TheHole, lo que lo convierte en el método preferido para eludir la corrección de TheHole.

La propuesta de solución es agregar una verificación del mapa del arreglo al devolver elementos del arreglo en la función optimizada, para evitar calcular directamente el desplazamiento y devolver valores.

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

Revelación exclusiva sobre cómo el valor 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 de centinela filtrado elude Chrome v8 HardenProtect

Aviso de Riesgo de PatchGap

Además de prestar atención a las vulnerabilidades históricas, también hay que tener en cuenta las vulnerabilidades que los fabricantes corrigen sigilosamente en los componentes básicos. Actualmente, Skype aún no ha corregido esta vulnerabilidad. La forma de explotación es ligeramente diferente en x86 y x64, pero ambas permiten lectura y escritura arbitraria.

Esta vez, PatchGap no solo involucra el Issue1352549, la divulgación del nuevo método también ha reducido considerablemente la dificultad de explotar vulnerabilidades similares. Los hackers casi no necesitan investigar para completar la explotación completa de cualquier fuga de la vulnerabilidad Uninitialized Oddball anterior.

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

Revelación exclusiva sobre cómo eludir Chrome v8 HardenProtect mediante la filtración de Sentinel Value

Resumen

En v8 hay muchos otros valores Sentinel, que pueden presentar problemas similares. Esto nos da algunas pistas:

  1. ¿Es también fácil de implementar la divulgación de otros Uninitialized Oddball para RCE de v8?

  2. La controversia sobre si tales problemas deben considerarse oficialmente como problemas de seguridad sigue existiendo.

  3. Durante las pruebas de fuzz, quizás se deba considerar la inclusión de varios valores centinela como variables.

De todos modos, este tipo de problemas acortará significativamente el ciclo de explotación completo de los hackers. Debemos estar alerta ante esto.

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

SENC-0.57%
Ver originales
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.
  • Recompensa
  • 5
  • Compartir
Comentar
0/400
gas_fee_therapistvip
· 08-05 17:35
v8 otra vez falló, la seguridad se está volviendo cada vez más bomba.
Ver originalesResponder0
GreenCandleCollectorvip
· 08-05 17:34
Esta vulnerabilidad es bastante dura, ¿verdad?
Ver originalesResponder0
LightningPacketLossvip
· 08-05 17:32
Este bug ya ha sido solucionado. ¡Tenemos que reparar nuestra sala de servidores rápidamente!
Ver originalesResponder0
ChainMelonWatchervip
· 08-05 17:32
Ah, esto... el hermano de hacer agujeros ha lanzado algo nuevo.
Ver originalesResponder0
ImpermanentLossFanvip
· 08-05 17:31
Vaya, la v8 tiene este tipo de vulnerabilidad.
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)