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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-21220 — CVE-2021-21220(V8 JIT型混乱によるOOBアクセスとWebAssemblyを介したRCE)の悪用を詳述した教育用プレゼンテーション。緩和策の分析が含まれます。 | Kitploit
ツール/GitHubGitHub/borahll/cve-2021-21220
脆弱性分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育バイナリエクスプロイト
GitHubborahll/cve-2021-21220

CVE-2021-21220

CVE-2021-21220(V8 JIT型混乱によるOOBアクセスとWebAssemblyを介したRCE)の悪用を詳述した教育用プレゼンテーション。緩和策の分析が含まれます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-21220の悪用

誤ったJIT動作からリモートコード実行へ

概要

このプレゼンテーションでは、最適化中の誤ったJITコンパイラの仮定によって引き起こされたGoogle ChromeのV8 JavaScriptエンジンの脆弱性CVE-2021-21220の悪用について説明します。

プレゼンテーションでは次の項目を順に説明します:

  • V8がJust-In-Time (JIT)コンパイルを実行する方法
  • 最適化中に符号付き/符号なし型混同バグが現れる仕組み
  • そのバグが範囲外(OOB)配列プリミティブにつながる仕組み
  • 攻撃者がOOBアクセスを利用してアドレスを漏洩し、任意のメモリ書き込みを達成する方法
  • WebAssembly (Wasm)がネイティブコード実行のターゲットになる方法
  • 既存の緩和策と最新のブラウザ防御

プレゼンテーションの目標

このプレゼンテーションの目標は、現代のJavaScriptエンジン内の微妙な最適化ミスがどのように次のような状態に発展するかを示すことです:

  • メモリ破損
  • 任意の読み取り/書き込みプリミティブ
  • ネイティブコードの改変
  • 潜在的なリモートコード実行(RCE)

エクスプロイトチェーンは、JITエンジンがパフォーマンスとセキュリティのバランスをどのように取るか、そして誤った最適化の仮定がどのように悪用可能になるかを強調します。


取り上げるトピック

1. V8アーキテクチャ

プレゼンテーションでは、主要なV8コンポーネントを紹介します:

Ignitionインタプリタ

  • JavaScriptバイトコードを実行
  • ランタイムフィードバックを収集
  • フィードバックベクターに型情報を保存
  • TurboFan最適化コンパイラ

    • ランタイムフィードバックから最適化グラフを構築
    • 投機的な仮定とガードを挿入
    • 積極的な最適化パスを実行

    マシンコードバックエンド

    • ネイティブCPU命令を生成
    • 「ホット」な関数向けに最適化されたマシンコードを生成

    プレゼンテーションのアーキテクチャ図は、JavaScriptが次のように移行する様子を示しています:

    root@kitploit:~
    Parsing → Bytecode → Optimization → Execution
    

    2. JavaScriptの最適化が難しい理由

    JavaScriptが高性能実行にとって難しい理由は次のとおりです:

    • 変数は動的に型が変わる
    • 配列は構造と要素型が変わる
    • +のような演算子は複数の意味を持つ
    • ランタイムチェックは高コスト

    V8はランタイム動作を推測することで、一般的な実行パターンを最適化するためにJITコンパイルを使用します。


    3. CVE-2021-21220の根本原因

    この脆弱性は、JIT最適化中の符号付きと符号なし整数の不一致に起因します。

    示される主要な概念:

    • Uint32Array
    • Word32Xor
    • 誤った型伝搬
    • ChangeInt32ToInt64
    • 誤ったアセンブリ命令の選択

    エクスプロイトは次の値を悪用します:

    root@kitploit:~
    0x80000000
    

    4. 最適化の不一致

    脆弱性は、TurboFanが次の処理を最適化するために発生します:

    root@kitploit:~
    x ^ 0
    

    を完全に除去することです。

    この最適化中に:

    • XOR演算が消える
    • 型情報が失われる
    • 符号付き値が符号なしとして解釈される
    • JITの動作がインタプリタの動作から乖離する

    これにより、誤ったマシンコードの生成と攻撃者制御可能な値が生じます。


    5. OOBプリミティブの構築

    エクスプロイトは、誤ったJIT結果を配列動作の制御に変換します。

    プレゼンテーションでは次のことを実演します:

    1. 誤った最適化整数値
    2. 制御変数iへの変換
    3. ウォームアップとトリガー実行の不一致
    4. Array.shift()の長さアンダーフロー
    5. OOB対応配列の作成

    示される重要なエクスプロイト概念:

    • ウォームアップ最適化
    • 投機的最適化
    • 型混同
    • 配列長の破損

    6. 範囲外アクセス

    配列長が-1になると、攻撃者は以下を獲得します:

    • 範囲外読み取り
    • 範囲外書き込み
    • 隣接するV8ヒープオブジェクトへのアクセス

    エクスプロイトは次に以下を実演します:

    • ポインタ漏洩
    • オブジェクトアドレスの発見
    • オーバーラップ配列
    • 生のV8ポインタ抽出

    7. WebAssemblyの悪用

    プレゼンテーションでは、攻撃者がどのように以下のものを標的にできるかを説明します:

    • WebAssemblyコンパイルコードページ
    • V8によって生成されたネイティブ実行可能メモリ

    攻撃フロー:

    1. Wasm関数を作成
    2. 実行可能メモリを特定
    3. コンパイル済みマシンコードを上書き
    4. Wasmを再実行
    5. 任意のネイティブ実行を達成

    これは、JavaScriptエンジンのバグがプロセスレベルのコード実行に移行する方法を示しています。


    防御と緩和策

    最終セクションでは、最新のブラウザ防御をカバーします:

    圧縮ポインタ

    直接的なポインタ露出とヒープの予測可能性を低減します。

    ポインタ間接化

    生のメモリアドレスへの直接アクセスを防ぎます。

    ヒープサンドボックス化

    メモリ領域を分離し、エクスプロイトの影響を低減します。

    W^X (Write XOR Execute)

    ページが同時に書き込み可能かつ実行可能になるのを防ぎます。

    プレゼンテーションには、符号拡張問題の修正を示す実際のV8パッチ差分も含まれています。


    重要なポイント

    • 小さな最適化ミスが重大な脆弱性になり得る
    • JITコンパイラは攻撃対象領域の複雑さを大幅に増加させる
    • ランタイムの推測は危険な不整合を引き起こす可能性がある
    • WebAssemblyはエクスプロイトの状況を変える
    • 最新のブラウザには複数の階層化された防御が必要

    議論された技術

    • JavaScript
    • Google V8 Engine
    • TurboFan
    • Ignition
    • WebAssembly (Wasm)
    • JITコンパイル
    • メモリ破損
    • 範囲外アクセス
    • ブラウザエクスプロイト

    教育目的

    この資料は厳密に次の目的で使用されます:

    • セキュリティ研究
    • 教育デモンストレーション
    • ブラウザ内部の学習
    • 脆弱性分析

    この情報を、所有していない、またはテスト許可がないシステムに対して使用しないでください。


    参照

    • CVE-2021-21220
    • Google Chrome V8 Engine
    • TurboFanコンパイラ内部
    • WebAssemblyランタイムセキュリティ
    • https://www.zerodayinitiative.com/blog/2021/12/15/exploitation-of-cve-2021-21220-from-incorrect-jit-behavior-to-rce
    • https://www.zerodayinitiative.com/blog/2021/12/8/understanding-the-root-cause-of-cve-2021-21220-a-chrome-bug-from-pwn2own-2021
    • https://www.zerodayinitiative.com/blog/2021/12/8/understanding-the-root-cause-of-cve-2021-21220-a-chrome-bug-from-pwn2own-2021
    ツールをダウンロード