Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/sneakynachos/cve-2026-2766-but-with-wasm
脆弱性分析エクスプロイトシェルコードペイロード開発バイナリエクスプロイト
GitHubsneakynachos/cve-2026-2766-but-with-wasm

CVE-2026-2766-but-with-wasm

CVE-2026-2766、ただしwasmを使用

リポジトリを見る
1121ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-2766、ただしwasmを使用

ステータス: 検証済みクラッシュPoC、制御フローハイジャックを実証済み (クラッシュ時の pc = 解放済みセルのポイズン 0xcdcdcdcdcdcdcdcd、デバッグ シェル環境下 — エンジンは解放済みICScriptから読み出したポインタへジャンプする)。 残作業: 再利用されたバイト列を制御すること。詳細は research/README.md を参照。

2026年のバグに対するWasmBlazeFoxファミリーのチェーン: CVE-2026-2766、 「JavaScript Engine: JITコンポーネントにおけるJIT誤コンパイル / use-after-free」、 Firefox 148で修正済み (MFSA 2026-13)。最終目標は CVE-2024-29943-but-with-wasm と同じである: プリミティブをコードポインタの制御に変換し、シェルコード定数で 埋め尽くされたWASM JITページへと向ける。

根本原因

Mozilla自身のリグレッションテストのコメント (bug 2013583、テストは hg 457b68097f81 でランド済み) および js/src/jit/JitScript.h 内の ICScript Lifetimes SMDOCより:

  • Ionのトライアルインライン化中に、ポリモーフィック呼び出しサイトの 遷移が removeInlinedChild を呼び出す → 子の ICScript は から削除されるが、依然として の ベクタから参照されている — そして致命的なことに、 呼び出し元のICチェーンに残ったままの古い スタブからも参照されている。
inlinedChildren_
InliningRoot
inlinedScripts_
CallInlinedFunction
  • コンパクティングGC (gczeal(14, 1)、すなわち毎回のアロケーションで ZealCompactValue) が孤立したICScriptを移動/退避させる一方、古いスタブ チェーンは古いアドレスを保持し続ける。
  • 古いスタブを経由した次の呼び出しが、古いICScriptポインタをデリファレンス する → use-after-move。ASAN/ファジングビルドでは、解放されたセルは 0xe5 でポイズンされ、非常に読みやすいクラッシュとなる。
  • クラッシュの証拠

    脆弱なビルド: mozilla-central rev b3663be61a1a (2026-01-15のナイトリー; 修正は2026-01-15から2026-02-09の間にランドされた — 2月9日のナイトリーは 生き残る)。シェル: そのrevのTaskcluster linux64-fuzzing-asan-opt jsshell (gczeal のために必要; release-optシェルにはこれが無い)。

    root@kitploit:~
    ./js --ion-warmup-threshold=100000 poc.js
    
    == ERROR: AddressSanitizer: SEGV on unknown address 0xe5e5e5e5e5e5e5e5
       The signal is caused by a READ memory access.
       #0-#3 <unknown module>          <- baseline JIT code
       #4 EnterJit / MaybeEnterJit     <- js/src/jit/Jit.cpp
       #10 js::jit::DoCallFallback     <- BaselineIC.cpp (the stale IC chain)
       rdi = 0xe5e5e5e5e5e5e5e5        <- the freed ICScript
    

    デリファレンスは古いスタブチェーンを辿るbaseline JITコード内で発生する: 再利用されたセルの制御 = baselineが信頼するICEntry/スタブフィールドの制御、 そこにはジャンプ先のスタブコードポインタも含まれる。

    悪用計画 (進行中)

    root@kitploit:~
    orphaned ICScript (this PoC)
      -> compacting GC moves it; stale chain keeps old address
        -> reclaim the old cell with controlled bytes (size-class spray)
          -> baseline reads fake ICEntry -> fake ICStub -> fake code_ pointer
            -> jump into the WASM JIT page shellcode (f64.const immediates,
               FuncExport entry-offset overwrite — see the 2024-29943 repo)
    

    完全な武器化ログは research/README.md を参照。 現状のまとめ:

    • このバグはmallocされた (TrailingArray) ICScriptに対するuse-after-move である — 原理的にはサイズクラス別バッファによるスプレー再利用が可能。
    • 解放と使用は最後の new Ctor(flag) 呼び出しの内部でマイクロ秒しか 離れておらず、その間にJSコールバックポイントは存在しない; 素朴なスプレーは ウィンドウを逃すか (reclaim1/2)、zeal GCストームでIC状態をかき乱して しまう (reclaim3)。古いチェーンは単一の通常の gc() は生き延びる (purge_check)。
    • 次のステップはgdb下でのエンジンアロケーション解析 (解放と使用の間に どのアロケーションが解放済みセルに着地するか)。gdbはOrbStackのx86 エミュレーション下では動作しないため、ネイティブのLinux x86-64マシンが 必要である。

    WASMステージ自体は既に構築され、 CVE-2024-29943-but-with-wasm で実証済みである; このFF149時代のビルド向けにオブジェクトモデルの オフセットを再導出するだけでよい。

    ファイル

    • poc.js — Mozillaのリグレッションテスト (bug 2013583)、上記のとおり 2026-01-15のASAN jsshellをクラッシュさせることが検証済み。

    参考文献

    • アドバイザリ: MFSA 2026-13 (Firefox 148)
    • バグ: https://bugzilla.mozilla.org/show_bug.cgi?id=2013583 (制限付き)
    • テストランド: hg 457b68097f81
    • 姉妹チェーン: https://github.com/SneakyNachos/CVE-2024-29943-but-with-wasm および https://github.com/SneakyNachos/CVE-2026-2764-but-with-wasm
    • 手法の起源: https://github.com/SneakyNachos/WasmBlazeFox
    ツールをダウンロード