
CVE-2026-6307 PoC: Longinus - 2 Boundaries in One Bug https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
Better Known as 'Longinus': 2 Boundaries in One Bug
Repository: https://github.com/J4ck3LSyN-Gen2/CVE-2026-6307-Longinus
Detailed Report: OS-IS-CVE-2026-6307-07-2026.md
Technical Write-up: Nebula Security - Longinus: 2 Boundaries in One Bug
[!WARNING] This code is provided AS IS for educational and research purposes only. Do not use this PoC on production systems, shared environments, or any unauthorized targets.
- This exploit demonstrates a critical remote code execution (RCE) vulnerability (CVE-2026-6307) that can fully compromise the Chrome renderer sandbox.
- Running or hosting this code may trigger antivirus detections, security monitoring alerts, or legal consequences if misused.
- The authors and repository maintainers assume no liability for any damage, misuse, or illegal activity resulting from this code.
- Use exclusively in isolated lab environments with proper authorization. Intended for defensive research, vulnerability analysis, and blue-team testing only.
This repository contains a Proof-of-Concept (PoC) for CVE-2026-6307 ("Longinus"), a high-severity type confusion vulnerability in Google V8's TurboFan compiler. The bug arises from an incomplete equality comparison in FrameStateFunctionInfo during JS-to-WebAssembly call inlining, specifically omitting the signature_ field of JSToWasmFrameStateFunctionInfo.
This flaw enables incorrect merging of FrameState nodes with differing return types (externref vs i64). During lazy deoptimization, the deoptimizer misinterprets return registers, yielding powerful arbitrary read/write primitives:
addrof(target) - Leak the address of a JavaScript object as a BigInt.fakeobj(addr) - Materialize a fake JavaScript object at an arbitrary address.These primitives pierce both the V8 heap sandbox and renderer sandbox boundaries in a single vulnerability when combined with appropriate follow-on techniques.
Impact: Remote Code Execution (RCE) inside the sandboxed renderer process via malicious JavaScript (e.g., a crafted webpage).
FrameState nodes that embed JSToWasmFrameStateFunctionInfo.==) for FrameStateFunctionInfo does not compare the WebAssembly function signature (signature_).FrameStates with mismatched return kinds.externref misinterpreted as i64 → pointer bits leaked as BigInt (addrof).i64 misinterpreted as externref → integer bits materialized as tagged reference (fakeobj).See the full Nebula Security write-up and the attached analysis report for diagrams, TurboFan IR snippets, and deoptimizer behavior.
d8 binary from around March–June 2026).--allow-natives-syntax --expose-wasmd8 with --turbo-dynamic-map-checks or similar for debugging.# Using d8 shell
./d8 --allow-natives-syntax --expose-wasm poc.js
Expected Behavior (on vulnerable build):
addrof leak of a dummy object.fakeobj materialization (identity check passes).Note: Full RCE requires additional engineering (offset calculation, WASM/GC interaction, sandbox escape). This PoC focuses on the core primitives.
The included .yar rule can be used in security tooling to identify the PoC pattern in scripts or memory.
Disclaimer: This repository is provided for educational, defensive, and research purposes only. Do not use on unauthorized systems. The authors assume no liability for misuse.
For questions, contributions, or variant development, open an issue or PR.
Last updated: July 2026
| File | Description |
|---|
poc.js | Core PoC demonstrating addrof and fakeobj primitives + basic read/write demo. |
gen.py | Helper script for generating PoC variants or payload scaffolding. |
val.py | Validation and testing utilities for primitives. |
cve-2026-6307_d8_execution.yml | Configuration / workflow for running the PoC in a V8 d8 shell. |
cve-2026-6307_longinus_poc.yar | YARA rule for detecting the PoC signature or related patterns. |