Riesgo de seguridad de la filtración del Valor Sentinel del motor V8 que elude HardenProtect

Riesgos de seguridad causados por la filtración del Valor Centinela en el motor Chrome V8

El valor centinela es un valor especial en algoritmos, a menudo utilizado como condición de terminación en algoritmos de bucle o recursivos. En el código fuente de Chrome hay múltiples valores centinela, algunos de los cuales no deben filtrarse en el entorno de JavaScript. Este artículo explorará cómo la filtración del objeto Oddball no inicializado puede eludir el mecanismo HardenProtect del motor Chrome V8.

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

Podemos filtrar Uninitialized Oddball en JavaScript al modificar la función nativa de V8. Por ejemplo, modificando el desplazamiento de la función %TheHole() para que devuelva un objeto Uninitialized Oddball.

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

Eludir la protección HardenType

Utilizando objetos Uninitialized Oddball filtrados, se puede construir el siguiente código para lograr una lectura relativamente arbitraria:

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

let arr = [1.1, 2.2, 3.3]; let uninitialized_oddball = %TheHole();

for (let i = 0; i < 100000; i++) { read(arr, 0);
}

%OptimizeFunctionOnNextCall(leer);

let result = read(uninitialized_oddball, 0x12345); %DebugPrint(resultado);

El código ensamblador de la función read optimizada muestra que al calcular el desplazamiento del array, no se verifica el tipo de valor de obj.prop, sino que se calcula directamente según la semántica de JavaScript, lo que provoca confusión de tipos y permite la lectura arbitraria.

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

La sugerencia de reparación es agregar una verificación del mapa del arreglo al devolver los elementos del arreglo en la función optimizada, para evitar calcular directamente el desplazamiento y devolver el valor.

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

Aviso de Riesgo de PatchGap

La vulnerabilidad aún no se ha corregido en algunos programas que utilizan versiones antiguas del motor V8, como Skype(. En la plataforma x86, debido a la falta de compresión de direcciones, la lectura y escritura arbitrarias se pueden realizar directamente en relación con todo el proceso.

La divulgación de este nuevo método de bypass ha reducido la dificultad de aprovechar las vulnerabilidades relacionadas. Los hackers pueden completar la explotación completa de la vulnerabilidad Uninitialized Oddball sin necesidad de investigación adicional.

![Revelación exclusiva sobre cómo eludir Chrome v8 HardenProtect a través de la filtración de Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(

Resumen

En V8 también existen otros valores Sentinel que pueden provocar problemas de seguridad similares. Se recomienda investigar más a fondo:

  1. ¿Se puede lograr RCE de V8 a través de otras filtraciones de Uninitialized Oddball?
  2. ¿Deberían estos problemas ser considerados oficialmente como vulnerabilidades de seguridad?
  3. ¿Es necesario incluir el valor centinela como variable en las pruebas de Fuzzer?

De todos modos, este tipo de problemas acortará significativamente el ciclo en el que los hackers pueden aprovecharse por completo, lo cual merece una alta atención.

![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(

![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(

![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(

![Revelación exclusiva sobre cómo el valor de Sentinel filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-506159c94c9e0988552cbcbd13d971e1.webp(

![Revelación exclusiva sobre cómo el valor de centinela filtrado elude Chrome v8 HardenProtect])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(

SENC-0.61%
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
  • 8
  • Republicar
  • Compartir
Comentar
0/400
GateUser-bd883c58vip
· 08-04 04:05
Este fallo es tan extremo que da un poco de miedo.
Ver originalesResponder0
SerumDegenvip
· 08-02 17:19
gm fren... otro alfa filtrado detectado en v8, todos estamos rekt
Ver originalesResponder0
ThatsNotARugPullvip
· 08-02 17:19
Esta olla Chrome, llévala. Ya te han mostrado el agujero.
Ver originalesResponder0
RektButStillHerevip
· 08-02 17:09
¿Por qué la protección de sandbox es tan mala?
Ver originalesResponder0
CryptoNomicsvip
· 08-02 17:01
*suspiro* otro exploit que prueba que mi análisis de regresión sobre el modelo de seguridad de chrome fue estadísticamente significativo... sin embargo, nadie escuchó
Ver originalesResponder0
MetaverseHobovip
· 08-02 16:58
Este agujero es demasiado atractivo, ¡directamente To the moon!
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)