Análisis de explotación de la vulnerabilidad Sentinel Value del motor Chrome V8: RCE alcanzable sin investigación adicional

robot
Generación de resúmenes en curso

Análisis de la explotación de la vulnerabilidad Sentinel Value en el motor Chrome V8

El valor centinela es un valor especial en algoritmos, que se utiliza generalmente como condición de terminación en algoritmos de bucle o recursivos. En el código fuente de Chrome hay una gran cantidad de valores centinela. Investigaciones anteriores han demostrado que es posible ejecutar código arbitrario dentro de la sandbox de Chrome mediante la filtración del objeto TheHole. El equipo de Google luego corrigió las vulnerabilidades relacionadas.

Sin embargo, también hay otros objetos nativos en V8 que no deberían filtrarse a JS. Este artículo discute el objeto Uninitialized Oddball, cuyo método de elusión de sandbox que causa la filtración aún se puede utilizar en la última versión de V8.

Cabe destacar que este método tiene cierta universalidad:

  1. CVE-2021-30551 La PoC inicial es la filtración de un oddball interno no inicializado.

  2. En el PoC de CVE-2022-1486 también se filtró directamente UninitializedOddball.

  3. Issue1352549 ( no asignado CVE) detalla el método de explotación.

Estos casos indican que la posibilidad de ataques utilizando la filtración de Uninitialized Oddball merece atención.

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 se disponen secuencialmente en la memoria. Una vez que estos objetos nativos, que no deberían filtrarse, se filtran a JavaScript, se puede lograr la ejecución de código arbitrario dentro de la sandbox.

Para verificar esto, se puede modificar el valor de retorno de la función nativa %TheHole() de V8 a Uninitialized Oddball.

Revelación exclusiva sobre cómo el valor centinela permite eludir Chrome v8 HardenProtect

Eludir la protección HardenType

El problema 1352549 proporciona el código completo para el bypass. La lógica central simplificada es la siguiente:

javascript function read(obj, idx) { return obj[idx]; }

let uninitialized = %TheHole(); let arr = [1.1]; let res = read(uninitialized, 0x12345); %DebugPrint(res);

Este código todavía puede lograr lecturas relativamente arbitrarias en la última versión V8 11.0.0.

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

Al analizar el código ensamblador de la función read optimizada, se puede observar que solo verifica si la propiedad prop del objeto obj es correcta, pero no verifica el valor de obj.prop como clave. Esto provoca una confusión de tipos durante el cálculo, permitiendo una lectura arbitraria.

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

Cuando se pasa un uninitialized_oddball, se comienza a calcular desde obj a partir de una instrucción específica, completando la lectura arbitraria en la instrucción vmovsd xmm0,[r9+r11*8+0x7], y los datos se guardan en el registro xmm0.

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

El método de corrección sugerido es agregar una verificación del mapa de arrays al devolver elementos del array en la función optimizada, evitando el cálculo directo del desplazamiento para devolver los valores del array.

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

Advertencia de PatchGap

Al investigar el software que podría tener PatchGap, se descubrió que Skype aún no ha corregido esta vulnerabilidad. En la arquitectura x86, debido a la falta de compresión de direcciones, la lectura y escritura arbitrarias son directamente relativas a todo el proceso.

Aunque Skype activó ASLR, debido a que su archivo es bastante grande y se coloca directamente en 4GB de memoria, un atacante solo necesita leer y escribir en una dirección fija, lo que tiene una gran probabilidad de leer y escribir en el contenido del archivo de Skype. Combinando métodos tradicionales como el análisis PE, se puede completar toda la cadena de explotación de la vulnerabilidad.

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

Esta vez, PatchGap no solo está relacionado con el Issue1352549, sino que también ha reducido drásticamente la dificultad de explotación de problemas similares como el Issue1314616 y el Issue1216437. Los hackers casi no necesitan investigación adicional para llevar a cabo una explotación completa de cualquier fuga del agujero no inicializado uninitialized_oddball.

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

Resumen

Este artículo presenta un método para realizar lecturas arbitrarias a través de la filtración de uninitialized_Oddball en el valor Sentinel. También existen otros valores Sentinel en V8 que pueden causar problemas similares. Esto nos da la siguiente reflexión:

  1. ¿La filtración de otros uninitialized_Oddball también puede facilitar la RCE de V8?

  2. Existe controversia sobre si este tipo de problemas debería ser tratado formalmente como un problema de seguridad.

  3. En el fuzzer se puede considerar agregar valores centinela como %TheHole/uninitialized_Oddball como variables para explorar otros usos de los primitivos.

De todos modos, este tipo de problemas acortará significativamente el ciclo de tiempo que los hackers necesitan para lograr una explotación completa.

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

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

SENC-0.2%
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
  • Republicar
  • Compartir
Comentar
0/400
CoffeeNFTradervip
· 07-22 08:13
Otra vulnerabilidad de seguridad, ¡un gran susto!
Ver originalesResponder0
Hash_Banditvip
· 07-21 21:23
la minería del motor js se ha vuelto real...la dificultad de explotación se ha maxificado
Ver originalesResponder0
ConsensusDissentervip
· 07-20 00:25
Otra vez ha salido un agujero negro de código, es muy aterrador.
Ver originalesResponder0
Blockblindvip
· 07-20 00:19
¿V8 también tiene una vulnerabilidad tan grande? Me muero de risa.
Ver originalesResponder0
BlockchainTalkervip
· 07-20 00:12
en realidad sorprendido de que V8 todavía tenga problemas con esto... p.d. ¿dónde está mi aislamiento de tiempo de ejecución familia?
Ver originalesResponder0
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)