
CVE-2018-17463 es un tipo de vulnerabilidad desordenada en el motor JavaScript V8 de Chrome que permite a los atacantes ejecutar un código arbitrario al explotar los efectos secundarios inadecuados en la operación JSCreateObject JSCreateOns de Turbofan.
Este análisis destaca las herramientas y métodos utilizados para explotar esta vulnerabilidad.
1. Herramientas de configuración y depuración del entorno
- V8
d8caparazón: Vulnerabilidad que depende de Chromed8Depurar el shell para probar los fragmentos de JavaScript, verifique el diseño de la memoria del objeto y active la optimización de JIT.- Logotipo como
--allow-natives-syntaxHabilitar funciones de tiempo de ejecución (por ejemplo,%DebugPrint) Analice gráficos y propiedades de objetos.
- Logotipo como
- Turbocompresor: Esta herramienta de visualización mapea la representación intermedia (IR) de Turbofan durante la fase de optimización. Ayuda a determinar el exceso
CheckMapElimine los nodos, lo que resulta en una confusión de tipo.
2. Análisis de memoria y desarrollo primitivo
- viento: Crucial para la depuración de bajo nivel, WindBG verifica el objeto Heap (p. Ej.
FixedArrayVs.NameDictionary) Verificar la corrupción de la memoria.- Puntos de interrupción en las funciones de tiempo de ejecución V8 (p. Ej.
Runtime_DebugPrint) Seguimiento del período de transición del objetoObject.createoperaciones.
- Puntos de interrupción en las funciones de tiempo de ejecución V8 (p. Ej.
- Addrof y falseobj original:
- además: La dirección del objeto filtrado es confundiendo el valor doble del atributo con el puntero del objeto.
- Artículos falsos: Escriba datos controlados en la memoria aprovechando las propiedades superpuestas en el código de optimización.
Estas primitivas usanFloat64ArrayyBigUint64ArrayConvierta entre dobles y enteros de 64 bits.
3. Obtenga cualquier lectura/escritura
- Corrupción de arraybuffer: Destruyendo
ArrayBuffer'backing_storePointer, el atacante redirige el acceso a la memoria. segundoArrayBufferPermitir lectura/escritura arbitrariaTypedArrayVista, puede manipular la estructura del montón V8.
4. Bypass NX usando WebAssembly
- WebAssembly (WASM): Prestar el área de memoria RWX (Read-write-ofecute) de la instancia de WASM para ejecutar ShellCode. usar:
- aprobar
memory.read64. - Escribir shellcode (por ejemplo,
calc.exeCarga útil) Usarmemory.write. - Llame a la función WASM para activar la ejecución.
- aprobar
5. Recoja parches y medidas de mitigación
Probar la vulnerabilidad parche– Use detalles de vulnerabilidad pública para apuntar a sistemas no capturados. Herramientas similares git El historial de origen de V8 se analizó para revertir las correcciones de ingeniería e identificar las condiciones de activación.
El uso de CVE-2018-17463 requiere un análisis del compilador (Turbolizer), la memoria forense de memoria (WindBG) y el control preciso del montón V8 (por addrOf/fakeObj).
La región RWX de Webassembly proporciona el vector de ejecución del código final. Esta situación subraya la importancia del modelado del efecto secundario en los compiladores JIT y el papel del lenguaje seguro para la memoria en la mitigación de tales problemas.
Para defensores, herramientas, etc. Sandbox de V8 y Compresión del puntero (Mitigación posterior) destaca los esfuerzos continuos para mantener el motor del navegador libre de características similares.









