
CVE-2026-6307 PoC: Longinus - 2 Boundaries in One Bug https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
通称 'Longinus': 1つのバグで2つの境界
リポジトリ: 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 を本番環境、共有環境、または許可のないターゲットに対して使用しないでください。
- このエクスプロイトは、Chrome レンダラーサンドボックスを完全に侵害し得る重大なリモートコード実行(RCE)脆弱性(CVE-2026-6307)を実証するものです。
- このコードの実行またはホスティングは、誤用された場合、アンチウイルスによる検出、セキュリティ監視アラート、または法的結果を引き起こす可能性があります。
- 著者およびリポジトリ保守者は、このコードに起因するいかなる損害、誤用、または違法行為についても一切の責任を負いません。
- 適切な許可を得た隔離されたラボ環境でのみ使用してください。 防御的研究、脆弱性分析、およびブルーチームテスト専用です。
このリポジトリには、Google V8 の TurboFan コンパイラにおける重大度の高い型混乱脆弱性である CVE-2026-6307("Longinus")の**概念実証(PoC)**が含まれています。このバグは、JS-to-WebAssembly 呼び出しインライン化中の FrameStateFunctionInfo における不完全な等価比較に起因し、具体的には JSToWasmFrameStateFunctionInfo の signature_ フィールドが比較対象から除外されています。
この欠陥により、戻り値の型が異なる(externref と i64)FrameState ノードの誤ったマージが可能になります。遅延デオプティマイゼーション中に、デオプティマイザが戻り値レジスタを誤解釈し、強力な任意読み取り/書き込みプリミティブが得られます:
addrof(target) - JavaScript オブジェクトのアドレスを BigInt としてリークします。fakeobj(addr) - 任意のアドレスに偽の JavaScript オブジェクトを実体化します。これらのプリミティブは、適切な後続テクニックと組み合わせることで、V8 ヒープサンドボックスとレンダラーサンドボックスの両方の境界を単一の脆弱性で突破します。
影響: 悪意のある JavaScript(例: 細工されたウェブページ)を介した、サンドボックス化されたレンダラープロセス内でのリモートコード実行(RCE)。
JSToWasmFrameStateFunctionInfo を埋め込んだ FrameState ノードを生成します。FrameStateFunctionInfo の等価演算子(==)は、WebAssembly 関数署名(signature_)を比較しません。FrameState をマージします。externref が i64 と誤解釈される → ポインタビットが BigInt としてリークされる(addrof)。i64 が externref と誤解釈される → 整数ビットがタグ付き参照として実体化される(fakeobj)。図、TurboFan IR スニペット、デオプティマイザの動作については、Nebula Security の完全な解説記事と添付の分析レポートを参照してください。
d8 バイナリ)。--allow-natives-syntax --expose-wasm--turbo-dynamic-map-checks などを使用したデバッグ d8。# d8 シェルを使用
./d8 --allow-natives-syntax --expose-wasm poc.js
期待される動作(脆弱なビルドの場合):
addrof リークが成功する。fakeobj の実体化が成功する(同一性チェックを通過)。注記: 完全な RCE にはさらなるエンジニアリング(オフセット計算、WASM/GC 相互作用、サンドボックスエスケープ)が必要です。この PoC はコアプリミティブに焦点を当てています。
同梱の .yar ルールは、スクリプトまたはメモリ内の PoC パターンを識別するためにセキュリティツールで使用できます。
免責事項: このリポジトリは教育、防御、および研究目的のみで提供されます。許可のないシステムで使用しないでください。著者は誤用に対する一切の責任を負いません。
質問、貢献、またはバリアント開発については、Issue または PR を開いてください。
最終更新: 2026年7月
| ファイル | 説明 |
|---|
poc.js | addrof と fakeobj プリミティブ + 基本的な読み取り/書き込みデモを示すコア PoC。 |
gen.py | PoC のバリアント生成またはペイロード足場のためのヘルパースクリプト。 |
val.py | プリミティブの検証およびテスト用ユーティリティ。 |
cve-2026-6307_d8_execution.yml | V8 の d8 シェルで PoC を実行するための設定 / ワークフロー。 |
cve-2026-6307_longinus_poc.yar | PoC のシグネチャまたは関連パターンを検出するための YARA ルール。 |