Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
wake-and-break — AMD navi31(RX 7900)GPU向けのPSPエクスプロイトで、ファームウェアの署名チェックを無効化し、カードが署名なしのSMU、SDMA、MEC、IMU、RLCファームウェアを読み込めるようにします。コールドブート後は永続しません。 | Kitploit
ツール/GitHubGitHub/blasty/wake-and-break
組み込みシステムセキュリティ特権昇格エクスプロイトリバースエンジニアリングハードウェアハッキングハードウェアセキュリティ論文と研究ファームウェア解析
GitHubblasty/wake-and-break

wake-and-break

AMD navi31(RX 7900)GPU向けのPSPエクスプロイトで、ファームウェアの署名チェックを無効化し、カードが署名なしのSMU、SDMA、MEC、IMU、RLCファームウェアを読み込めるようにします。コールドブート後は永続しません。

リポジトリを見る
6172日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Wake and Break

Wake and Break

AMD navi31 カード(RX 7900 シリーズ)向けの PSP(Platform Security Processor)エクスプロイト。 隣接する他の製品ファミリーにも適応できる可能性が高い。

これは PSP のファームウェア署名チェックを無効化するため、カードは本来なら拒否する 署名されていない IP ファームウェア(SMU、SDMA、MEC、IMU、RLC)をロードするようになる。 カスタムの電力管理、クロック制限、あるいはベンダーが署名していてあなたがしていないファームウェアに存在するその他あらゆるものを考えてほしい。

何もフラッシュされない。パッチは PSP メモリ内に存在し、ウォームブート中に適用される。コールド電源サイクルでそれは消去され、カードは再び純正状態に戻る。そのウォームブートこそが「Wake and Break」である。カードが目を覚まし、我々はカードを説得して即座に本当にハイにさせ、署名チェックを無効化するよう強要する。:-)

RX 7900 XTX でカードテスト済み。Status を参照。

得られるもの

python3 wakebreak.py 25=/path/to/firmware.bin

これによりパッチが適用され、カードがウォームブートされ、イメージがファームウェアタイプ25として送信されます。accepted と表示されれば、PSPは通常なら拒否するはずのイメージを受け入れたことになります。

試すためのものが必要ですか?ipfw_images.py は、ドライバが実際にロードするファームウェアを一覧表示し、テスト用のペアを書き出します — 本物のイメージと、その署名の1ビットを反転させたコピーで、ファームウェア自体はバイト単位で同一です:

python3 ipfw_images.py             # what does this card load?
python3 ipfw_images.py 25          # -> /tmp/fw_25_{ok,bad}.bin
python3 wakebreak.py 25=/tmp/fw_25_bad.bin

Stockファームウェアは fw_25_bad.bin を拒否します。パッチを適用すると、これが受け入れられます。 これがデモンストレーションのすべてです。

セットアップ

python3 -m venv venv
venv/bin/pip install -r requirements.txt
make verify          # are the shipped artifacts intact?
make selftest        # offline sanity checks, no card touched

tinygrad の AMD ドライバ(PCIe またはその USB ブリッジ)経由でカードにアクセスできる Linux ホストが必要です。ホストに必要な tinygrad パッチについては requirements.txt を参照してください。

お使いのカードはどれですか?

既知の navi31 ファームウェアビルドは 4 種類あり、パッチはそれに一致する必要があります。プロファイル a がデフォルトで、最も一般的なものをカバーしています。カードの SPI フラッシュのダンプがある場合、identify.py がそれを判別します:

python3 identify.py FLASH.bin
# -> sos-build c: wakebreak.py --sos-build c

それ以外の場合は、ただ試してみてください。間違って推測しても無害です: パッチは変更しようとしている対象を確認し、認識できないものを見つけると何も書き込まず、カードは正常に起動します。

python3 wakebreak.py --sos-build c 25=/tmp/fw_25_bad.bin

ステータス

テスト済みのカード(RX 7900 XTX、プロファイル a)で確認済み:

改ざんされたファームウェア、純正カード拒否
改ざんされたファームウェア、パッチ適用済み受理
コールド電源サイクル後再び拒否 — カードは純正状態

注記: プロファイル b、c、d はビルドおよびオフラインでのチェックは済んでいますが、ハードウェア上では一度も実行されていません。プロファイル b、c、d に一致するカードをお持ちの場合は、動作するかどうか報告してください!

再ビルド

パッチ自体は hook/*.S にある数百バイトの ARM アセンブリです。 ビルド済みの blob はリポジトリに同梱されているため、これを使用するのにクロスコンパイラは不要です。 それでも再ビルドしたい場合は:

make rebuild                                  # needs arm-none-eabi binutils
make rebuild CROSS=/path/to/arm-none-eabi-

ビルドは、カード上でテストされたバイト列とハッシュが一致しないもののインストールを拒否するため、異なるツールチェーンがPSPに書き込まれる内容を密かに変更することはできません。

ここに含まれるもの

wakebreak.py        the exploit
identify.py       which --sos-build does this card need?
ipfw_images.py    build a signed/tampered firmware pair to test with
selftest.py       offline checks
hook/             the patch: ARM sources and built blobs
firmware/         two stock AMD firmware images the exploit needs to get in

firmware/ には、未改変のまま公開出荷された AMD のイメージが入っています。これらは古いバージョンですが、侵入経路がそれらを経由するため保持されています。

仕組み

ここで意図的に説明していないこと: コードを読んでください。wakebreak.py はコメント付きの約600行で、コメントには仕組み、安全チェック、そして各ステップがその順序である理由が説明されています。TL;DR: AMD の純正トラステッドアプリケーションが2つロードされ、そのうちの1つが PSP メモリに書き込めるチェーンを実行するよう仕向けられ、パッチがブートローダーの常駐コピーに配置され、その後カードがそれへウォームブートされます。

ライセンス

MIT、LICENSE を参照してください。好きに使ってください。

免責事項

この作品の制作には大規模な LLM の支援が使われました。だからといって、作者がここで実際に何が起きているのかを全く理解していないわけではありません。ここまで到達するだけでも 大量の 反論と手作業が伴いました。出来の悪い Python の産物などが気に入らないかもしれませんが、あなたの Navi31 カードが突然、署名されていないファームウェアコンポーネントのブロブをロードするようになったという事実には反論できないでしょう。ご清聴ありがとうございました。

ツールをダウンロード