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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
retbleed-speculative-execution-poc — Retbleed(CVE-2022-29900/29901)マイクロアーキテクチャ攻撃のgem5上での再現。RSBアンダーフロー、Flush+Reloadサイドチャネルリーク、および検証済みのlfence緩和策。 | Kitploit
ツール/GitHubGitHub/abdul-kalam2000/retbleed-speculative-execution-poc
脆弱性分析エクスプロイトハードウェアセキュリティ論文と研究学習と教育バイナリエクスプロイト
GitHubabdul-kalam2000/retbleed-speculative-execution-poc

retbleed-speculative-execution-poc

Retbleed(CVE-2022-29900/29901)マイクロアーキテクチャ攻撃のgem5上での再現。RSBアンダーフロー、Flush+Reloadサイドチャネルリーク、および検証済みのlfence緩和策。

リポジトリを見る
17時間54分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Retbleed: RSBアンダーフローによる任意の投機的コード実行

Retbleed (CVE-2022-29900 / CVE-2022-29901) のハンズオン再現 — 2022年のマイクロアーキテクチャ攻撃で、長らく安全とされてきた ret 命令が、CPUのリターンスタックバッファ (RSB) がアンダーフローした際にハイジャックされうることを証明し、「Retpoline」防御を破った。

本プロジェクトは、gem5 上の x86 アウトオブオーダーCPUモデルで攻撃のライフサイクル全体をシミュレートする。RSBアンダーフローを引き起こし、Flush+Reloadキャッシュサイドチャネルを通じて秘密データを1バイトずつ漏洩させ、その後、漏洩を塞ぐソフトウェア緩和策 (lfence) を検証する。

コースプロジェクト — Advanced Computer Architecture, Fall 2025, CUNY City College 著者: Abdul Kalam Mansoor & Rebiha Selmani

なぜこれが重要か

Spectre系の攻撃は、CPUが誤った推測を「取り消す」場合でも、投機的実行がキャッシュレベルの副作用を残すことを示した。業界の修正策であるRetpolineは、危険な間接ジャンプを ret 命令に置き換えた。これは、リターンが小さなハードウェアスタック (RSB) から安全に予測されるという前提に基づいていた。Retbleedはその前提が誤りであることを示した。深い再帰でRSBを枯渇させると、CPUはRetpolineが回避するために設計されたのと同じ危険な予測器へと暗黙のうちにフォールバックする。

攻撃の仕組み

段階何が起こるか
1. トリガーrsb_deep_call() が32レベル深く再帰し、16エントリのRSBをオーバーフローさせる。再帰が巻き戻されると、RSBは空になる。
2. フォールバックRSBが空になると、CPUは ret のターゲットを予測するために分岐ターゲットバッファ (BTB) にフォールバックする — これは攻撃者によって汚染されうる。
3. ガジェットハイジャックされた投機的パスが gadget() を実行し、これが秘密のパスワードの1バイトを読み取り、それを使って probe_array をインデックスし、その配列の1ページをキャッシュに引き込む。
4. Flush+Reloadスパイ攻撃の前に、probe_array のすべてのページがキャッシュからフラッシュされる (_mm_clflush)。投機的ウィンドウが閉じた後、プログラムはすべての可能なバイト値へのアクセスを計測する (__rdtscp) — 高速に戻ってくるもの (キャッシュヒット) が秘密のバイトを明らかにする。

これを ROOT_PASSWORD のすべてのバイトに対して繰り返すことで、gadget() をアーキテクチャ上呼び出すことなく、秘密全体を再構築する。

結果

モードアクセスレイテンシ結果
脆弱 (SECURE_MODE 未定義)約49サイクル (キャッシュヒット)秘密がバイト単位で漏洩し、赤い HIT! インジケータで確認される
パッチ済み (SECURE_MODE 定義済み、_mm_lfence() 注入)150サイクル超 (キャッシュミス / ノイズ)攻撃失敗 — 出力は SAFE / Found: ??? を示す

lfence は、後続の命令が実行される前にCPUにリターンアドレスを解決させることを強制し、ガジェットが秘密依存のメモリに触れる前に投機的ウィンドウを崩壊させる。

リポジトリの内容

root@kitploit:~
src/
  retbleed.c              # Full PoC: trigger, gadget, Flush+Reload spy, and lfence mitigation (toggle via SECURE_MODE)
docs/
  Retbleed_Report.pdf              # Full written report: methodology, related work, gem5 setup, results
  Retbleed_Attack_Demonstration.pptx  # Slide deck used to present the project

ビルドと実行

PoCは gem5 (DerivO3CPU、アウトオブオーダーモデル — インオーダーモデルは投機的実行を実装していないため必須) の下でビルドおよび計測された:

root@kitploit:~
gcc -O0 -static -o retbleed src/retbleed.c

./build/X86/gem5.opt configs/deprecated/example/se.py \
  --cpu-type=DerivO3CPU --caches --l2cache \
  --l1d_size=64kB --l1i_size=64kB --cmd=retbleed

脆弱な動作とパッチ済みの動作を切り替えるには、retbleed.c の先頭にあるこの行をコメント/コメント解除する:

root@kitploit:~
#define SECURE_MODE

このコードは実際のx86組み込み関数 (_mm_clflush、__rdtscp、_mm_lfence) を使用しており、より迅速なデモのためにx86ハードウェア上でネイティブにコンパイルおよび実行することもできる (gcc -O0 -o retbleed src/retbleed.c) — 結果はホストCPU自身の緩和策 (eIBRS、マイクロコードパッチなど) によって変動するが、これはこの種のバグが2022年以降いかに徹底的にパッチされてきたかを示す有用な例でもある。

実世界への影響

  • 2022年にLinux、Windows、ハイパーバイザ全体で緊急のマイクロコード/カーネル更新を強制した。
  • ソフトウェア緩和策 (リターンスタックスタッフィング、追加の lfence) は、影響を受けるハードウェアで 14〜39%のパフォーマンスオーバーヘッド が計測された。
  • 現代のハードウェア修正: eIBRS (Enhanced Indirect Branch Restricted Speculation) およびソフトウェアによる呼び出し深度追跡。

参考文献

  1. J. Wikner and K. Razavi, "RETBLEED: Arbitrary Speculative Code Execution with Return Instructions," USENIX Security, 2022.
  2. P. Kocher et al., "Spectre Attacks: Exploiting Speculative Execution," IEEE S&P, 2019.
  3. M. Lipp et al., "Meltdown: Reading Kernel Memory from User Space," USENIX Security, 2018.
  4. Y. Yarom and K. Falkner, "FLUSH+RELOAD: A High-Resolution, Low-Noise, L3 Cache Side-Channel Attack," USENIX Security, 2014.
ツールをダウンロード