Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/eddinos2/cve-2026-78938
Análisis de VulnerabilidadesExplotaciónSeguridad WebExplotación de Binarios
GitHubeddinos2/cve-2026-78938

CVE-2026-78938

Análisis de causa raíz y exploit funcional para CVE-2026-78938, una confusión de tipos en V8 TurboFan que conduce a lectura/escritura arbitraria dentro del heap comprimido. Incluye PoC de crash y primitivas direccionadas en tiempo de ejecución.

Ver Repositorio
hace 1 díaAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-78938 — Confusión de tipos en CheckMaps con migración de instancias en V8 TurboFan

Análisis de causa raíz y exploit para CVE-2026-78938, una confusión de tipos en la eliminación de cargas de TurboFan en V8 que se corrigió en Chrome 152.0.7977.64 (V8 15.2.124.18). El fallo se reportó como explotado en estado salvaje.

El exploit convierte el fallo en un Float64Array fuera de límites y desde ahí en addrof / fakeobj y lectura/escritura arbitraria sobre el heap comprimido de V8. Todo lo posterior a la escritura inicial se localiza en tiempo de ejecución; no hay desplazamientos de heap codificados en la etapa de R/W.

  • Afectado: Chrome 152.0.7977.54 (V8 15.2.124.13, commit 8ec91943)
  • Corregido: Chrome 152.0.7977.64/.65 (V8 15.2.124.18, commit 6aacaf62)
  • Commit de corrección: 50597b0bb48a — "[compiler] Invalidate tracked fields on CheckMaps with instance migration"

Probado en macOS arm64 contra un d8 compilado localmente de ambas versiones.

Contenido

archivoqué es
pocs/crash.jsDisparador mínimo. SIGBUS en la compilación vulnerable, salida limpia en la corregida.
pocs/rw_final.jsExploit completo, etapa 1: disparador + array OOB. Congelado — ver "Reproducción" abajo.
pocs/logic_final.jsExploit completo, etapa 2: addrof/fakeobj/R\W arbitraria, cargado en tiempo de ejecución por la etapa 1.
WRITEUP.mdAnálisis completo de causa raíz y notas de explotación.

Reproducción

Compila las dos versiones de d8 (consulta WRITEUP.md para los commits exactos y los argumentos de GN), luego desde la raíz del repositorio:

root@kitploit:~
# PoC de crash: SIGBUS en vulnerable, limpio en corregido
out/vuln/d8    --allow-natives-syntax --homomorphic-ic --max-valid-polymorphic-map-count=4 pocs/crash.js
out/patched/d8 --allow-natives-syntax --homomorphic-ic --max-valid-polymorphic-map-count=4 pocs/crash.js

# R/W completo: funciona en vulnerable, aborta limpiamente en corregido
out/vuln/d8 --allow-natives-syntax --homomorphic-ic --max-valid-polymorphic-map-count=4 pocs/rw_final.js

Salida esperada en la compilación vulnerable:

root@kitploit:~
[+] OOB Float64Array len=0x7f000004
[+] after write: victim2.z = 2.5
[+] fakeobj(hn|1) typeof=number
[+] ALL PRIMITIVES VERIFIED

Dos cosas importan:

  1. Las banderas son obligatorias. --homomorphic-ic --max-valid-polymorphic-map-count=4 dan forma a la retroalimentación de mapas polimórficos para que se tome la ruta de migración en código optimizado. Sin ellas, el disparador no hace nada silenciosamente.
  2. pocs/rw_final.js está congelado por bytes. La única escritura corruptora aterriza en un desplazamiento relativo al heap que depende de dónde se asigna el array víctima, lo que a su vez depende de los bytes exactos y la ruta del script. Editar el archivo (o renombrarlo) invalida el desplazamiento incorporado; WRITEUP.md documenta cómo recalibrarlo. pocs/logic_final.js se carga después de que se dispara el trigger, por lo que puede editarse libremente.

Notas

  • La primitiva demostrada es lectura/escritura arbitraria dentro del sandbox de V8 (el heap comprimido). Obtener ejecución de código requiere además una salida del sandbox (p. ej., corromper la región de código RWX de una instancia de Wasm), lo cual está fuera del alcance de este análisis.
  • Todas las direcciones en el exploit se descubren en tiempo de ejecución. El único valor incorporado es el desplazamiento de escritura único en pocs/rw_final.js, por las razones anteriores.

Este repositorio es con fines educativos y de investigación defensiva. El fallo está corregido en Chrome actual; los detalles son públicos en el árbol de fuentes de V8.

Descargar herramienta