CVE-2026-6307 PoC:Longinus - 一个漏洞中的两个边界(https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
又称 'Longinus': 一个漏洞突破两道边界
仓库: https://github.com/J4ck3LSyN-Gen2/CVE-2026-6307-Longinus
详细报告: OS-IS-CVE-2026-6307-07-2026.md
技术分析: Nebula Security - Longinus: 2 Boundaries in One Bug
[!WARNING] 本代码按原样(AS IS)提供,仅供教育和研究目的使用。 请勿在生产系统、共享环境或任何未授权目标上使用此 PoC。
- 该漏洞利用程序演示了一个严重的远程代码执行(RCE)漏洞(CVE-2026-6307),可完全攻陷 Chrome 渲染器沙箱。
- 运行或托管此代码可能触发杀毒软件检测、安全监控警报,若被滥用还将导致法律后果。
- 作者和仓库维护者对因使用本代码造成的任何损害、滥用或非法活动不承担任何责任。
- 仅在获得适当授权的隔离实验室环境中使用。 仅供防御性研究、漏洞分析和蓝队测试使用。
本仓库包含 CVE-2026-6307("Longinus")的概念验证(PoC),这是 Google V8 TurboFan 编译器中的一个高危类型混淆漏洞。该漏洞源于 JS 到 WebAssembly 调用内联过程中 FrameStateFunctionInfo 的相等性比较不完整,具体遗漏了 JSToWasmFrameStateFunctionInfo 的 字段。
signature_该缺陷允许返回类型(externref 与 i64)不匹配的 FrameState 节点被错误合并。在惰性反优化期间,反优化器会错误解释返回寄存器,从而产生强大的任意读写原语:
addrof(target) - 以 BigInt 形式泄漏 JavaScript 对象的地址。fakeobj(addr) - 在任意地址物化一个伪 JavaScript 对象。结合适当的后续利用技术,这些原语可在单个漏洞中同时穿透 V8 堆沙箱 和渲染器沙箱边界。
影响: 通过恶意 JavaScript(例如精心构造的网页)在沙箱化的渲染器进程中实现远程代码执行(RCE)。
JSToWasmFrameStateFunctionInfo 的 FrameState 节点。FrameStateFunctionInfo 的相等运算符(==)不会比较 WebAssembly 函数签名(signature_)。FrameState 合并。externref 被误解释为 i64 → 指针位以 BigInt 形式泄漏(addrof)。i64 被误解释为 externref → 整型位被物化为带标签引用(fakeobj)。有关图表、TurboFan IR 片段和反优化器行为,请参阅 Nebula Security 的完整分析文章和随附的分析报告。
| File | Description |
|---|---|
poc.js | 核心 PoC,演示 addrof 和 fakeobj 原语 + 基本读/写演示。 |
gen.py | 用于生成 PoC 变体或载荷脚手架的辅助脚本。 |
val.py | 原语的验证和测试实用工具。 |
cve-2026-6307_d8_execution.yml | 在 V8 d8 shell 中运行 PoC 的配置/工作流。 |
cve-2026-6307_longinus_poc.yar | 用于检测 PoC 签名或相关模式的 YARA 规则。 |
d8 二进制文件)。--allow-natives-syntax --expose-wasm--turbo-dynamic-map-checks 或类似选项的调试版 d8 进行调试。# Using d8 shell
./d8 --allow-natives-syntax --expose-wasm poc.js
预期行为(在存在漏洞的构建版本上):
addrof 泄漏一个虚拟对象的地址。fakeobj(身份检查通过)。注意: 完整的 RCE 需要额外的工程实现(偏移计算、WASM/GC 交互、沙箱逃逸)。此 PoC 侧重于核心原语。
附带的 .yar 规则可用于安全工具中,以识别脚本或内存中的 PoC 模式。
免责声明: 本仓库仅供教育、防御和研究目的使用。请勿在未授权系统上使用。作者对滥用行为不承担任何责任。
如有问题、贡献或变体开发需求,请提交 issue 或 PR。
最后更新:2026 年 7 月