
CVE-2026-6307 PoC: Longinus - 2 Boundaries in One Bug https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
Mejor conocido como 'Longinus': 2 límites en un solo bug
Repositorio: https://github.com/J4ck3LSyN-Gen2/CVE-2026-6307-Longinus
Informe detallado: OS-IS-CVE-2026-6307-07-2026.md
Write-up técnico: Nebula Security - Longinus: 2 Boundaries in One Bug
[!WARNING] Este código se proporciona TAL CUAL con fines exclusivamente educativos y de investigación. No utilice este PoC en sistemas de producción, entornos compartidos ni objetivos no autorizados.
- Este exploit demuestra una vulnerabilidad crítica de ejecución remota de código (RCE) (CVE-2026-6307) que puede comprometer por completo el sandbox del renderizador de Chrome.
- Ejecutar o alojar este código puede desencadenar detecciones de antivirus, alertas de monitoreo de seguridad o consecuencias legales si se utiliza indebidamente.
- Los autores y mantenedores del repositorio no asumen ninguna responsabilidad por daños, uso indebido o actividades ilegales derivadas de este código.
- Úselo exclusivamente en entornos de laboratorio aislados con la autorización adecuada. Destinado únicamente a investigación defensiva, análisis de vulnerabilidades y pruebas de equipo azul.
Este repositorio contiene un Proof-of-Concept (PoC) para CVE-2026-6307 ("Longinus"), una vulnerabilidad de confusión de tipos de alta severidad en el compilador TurboFan de Google V8. El bug surge de una comparación de igualdad incompleta en FrameStateFunctionInfo durante el inlining de llamadas JS-to-WebAssembly, específicamente al omitir el campo signature_ de JSToWasmFrameStateFunctionInfo.
Esta falla permite una fusión incorrecta de nodos FrameState con tipos de retorno diferentes (externref vs i64). Durante la desoptimización diferida (lazy deoptimization), el desoptimizador interpreta erróneamente los registros de retorno, generando potentes primitivas arbitrarias de lectura/escritura:
addrof(target) - Filtra la dirección de un objeto JavaScript como BigInt.fakeobj(addr) - Materializa un objeto JavaScript falso en una dirección arbitraria.Estas primitivas atraviesan tanto el sandbox del heap de V8 como los límites del sandbox del renderizador en una sola vulnerabilidad cuando se combinan con técnicas complementarias apropiadas.
Impacto: Ejecución remota de código (RCE) dentro del proceso de renderizado en sandbox mediante JavaScript malicioso (p. ej., una página web manipulada).
FrameState que incorporan JSToWasmFrameStateFunctionInfo.==) de FrameStateFunctionInfo no compara la firma de la función WebAssembly (signature_).FrameStates con tipos de retorno no coincidentes.externref malinterpretado como i64 → bits de puntero filtrados como BigInt (addrof).i64 malinterpretado como externref → bits enteros materializados como referencia etiquetada (tagged reference) (fakeobj).Consulte el write-up completo de Nebula Security y el informe de análisis adjunto para ver diagramas, fragmentos de IR de TurboFan y el comportamiento del desoptimizador.
d8 correspondiente de aproximadamente marzo–junio de 2026).--allow-natives-syntax --expose-wasmd8 de depuración con --turbo-dynamic-map-checks o similar para depurar.# Usando el shell d8
./d8 --allow-natives-syntax --expose-wasm poc.js
Comportamiento esperado (en una compilación vulnerable):
addrof de un objeto dummy.fakeobj (la verificación de identidad pasa).Nota: El RCE completo requiere ingeniería adicional (cálculo de offsets, interacción WASM/GC, escape del sandbox). Este PoC se centra en las primitivas principales.
La regla .yar incluida puede utilizarse en herramientas de seguridad para identificar el patrón del PoC en scripts o memoria.
Aviso legal: Este repositorio se proporciona únicamente con fines educativos, defensivos y de investigación. No lo utilice en sistemas no autorizados. Los autores no asumen ninguna responsabilidad por el uso indebido.
Para preguntas, contribuciones o desarrollo de variantes, abra un issue o un PR.
Última actualización: julio de 2026
| Archivo | Descripción |
|---|
poc.js | PoC principal que demuestra las primitivas addrof y fakeobj + demo básica de lectura/escritura. |
gen.py | Script auxiliar para generar variantes del PoC o andamiaje de payloads. |
val.py | Utilidades de validación y pruebas para las primitivas. |
cve-2026-6307_d8_execution.yml | Configuración / flujo de trabajo para ejecutar el PoC en un shell V8 d8. |
cve-2026-6307_longinus_poc.yar | Regla YARA para detectar la firma del PoC o patrones relacionados. |