Tutoriales

Desarrollo del navegador Chrome, Parte 3: Análisis y utilización

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 d8 caparazón: Vulnerabilidad que depende de Chrome d8 Depurar 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-syntax Habilitar funciones de tiempo de ejecución (por ejemplo, %DebugPrint) Analice gráficos y propiedades de objetos.
  • 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 CheckMap Elimine 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. FixedArray Vs. 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 objeto Object.create operaciones.
  • 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 usan Float64Array y BigUint64Array Convierta entre dobles y enteros de 64 bits.

3. Obtenga cualquier lectura/escritura

  • Corrupción de arraybuffer: Destruyendo ArrayBuffer' backing_store Pointer, el atacante redirige el acceso a la memoria. segundo ArrayBuffer Permitir lectura/escritura arbitraria TypedArray Vista, 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:
    1. aprobar memory.read64.
    2. Escribir shellcode (por ejemplo, calc.exe Carga útil) Usar memory.write.
    3. Llame a la función WASM para activar la ejecución.

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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba