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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
spd_flasher — CVE-2022-38694 強化エクスプロイト - Unisocデバイス向けRP2350 USBホスト自動フラッシャー | Kitploit
ツール/GitHubGitHub/leochen-coremind/spd_flasher
組み込みシステムセキュリティエクスプロイトリバースエンジニアリングハードウェアハッキングモバイルセキュリティ学習と教育
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 強化エクスプロイト - Unisocデバイス向けRP2350 USBホスト自動フラッシャー

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2022-38694 強化版エクスプロイト — RP2350 USB Host 自動フラッシャー

中国語版 README

チュートリアル

  • UDX710 ブートチェーンリバースエンジニアリングと RP2350 堅牢化ブートチュートリアル

CVE-2022-38694 Unisoc BootROM の脆弱性を Raspberry Pi RP2350 USB Host 経由で悪用し、起動時に SPL Loader を自動送信して任意の u-boot を起動します。

従来 PC と spd_dump を必要としたエクスプロイトチェーンを、RP2350 マイクロコントローラ上に移行します。デバイスを接続するだけで自動書き込み、連続書き込みに対応します。

仕組み

CVE-2022-38694 は、Unisoc BootROM における一回限りの署名検証バイパスです。exec stub を特定のメモリアドレスに送信することで、戻りアドレスが上書きされ、署名チェックがバイパスされて、BootROM が任意の FDL1 を受け入れて実行できるようになります。

重要なポイント: FDL1 と SPL Loader は同じロードアドレス(0x28007000)を共有しているため、パッチ適用済みの SPL Loader を FDL1 の代わりに送信することで、任意の u-boot を起動できます。

堅牢化プロセス(2段階)

ステージ1: 初期アンロック(PC + spd_dump)

初回セットアップには、spd_dump が動作する PC が必要です:

root@kitploit:~
┌──────────────────────────────────────────────────────────────────────────┐
│                    Stage 1: PC-side Initial Unlock                       │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Step 1: Exploit CVE-2022-38694 to boot patched SPL                     │
│  ┌────────────┐    ┌────────────┐    ┌─────────────────┐                │
│  │ Exec Stub  │───►│ spl-unlock │───►│ Device boots    │                │
│  │ @0x3F28    │    │ @0x28007000│    │ into DL mode    │                │
│  └────────────┘    └────────────┘    └────────┬────────┘                │
│                                               │                          │
│  Step 2: Send patched FDL2 via spd_dump, flash u-boot without           │
│          secure boot, erase splloader                                    │
│                                               │                          │
│  ┌─────────────────┐    ┌──────────────────────▼───────────┐            │
│  │ Send fdl2-dl    │───►│ Write u-boot (secure boot removed│            │
│  │ (patched FDL2)  │    │ + Erase splloader partition)     │            │
│  └─────────────────┘    └──────────────────────────────────┘            │
│                                                                          │
│  ★ After erasing splloader, device enters BootROM DL mode on every boot │
└──────────────────────────────────────────────────────────────────────────┘

手順:

  1. CVE-2022-38694 を使用して spl-unlock.bin を送信し、デバイスを起動する
  2. パッチ適用済みの fdl2-dl.bin(セキュアブート検証が除去された FDL2)を送信する
  3. FDL2 を使用して、セキュアブートが除去された u-boot を uboot パーティションに書き込む
  4. splloader パーティションを消去する → デバイスは通常起動を失い、電源投入のたびに BootROM DL モードに入る

ステージ2: 堅牢化運用(RP2350 自動書き込み)

splloader が消去されると、デバイスは電源投入のたびに BootROM ダウンロードモードに入ります。RP2350 USB Host がエクスプロイトチェーンを自動的に処理します:

root@kitploit:~
┌──────────────────────────────────────────────────────────────────────────┐
│                   Stage 2: RP2350 Automated Boot                        │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Power on → no splloader → BootROM download mode                        │
│                                                                          │
│  ┌─────────┐    ┌────────────┐    ┌─────────────┐    ┌──────────────┐  │
│  │ BootROM │───►│ Exec Stub  │───►│ spl-unlock  │───►│ U-Boot       │  │
│  │ Handshk │    │ Bypass sig │    │ as FDL1     │    │ (no secboot) │  │
│  └─────────┘    └────────────┘    └─────────────┘    │ Boot OK ✓    │  │
│                                                       └──────────────┘  │
│                                                                          │
│  ★ Fully automatic. Unplug → auto-reset → ready for next device.       │
└──────────────────────────────────────────────────────────────────────────┘

なぜ splloader を消去するのか?

  • 通常のブートチェーン: BootROM → SPL Loader → u-boot → システム
  • SPL Loader は u-boot の署名を検証するため、改変された u-boot を拒否します
  • splloader が消去されると、BootROM は SPL を見つけられないため、ダウンロードモードにフォールバックします
  • CVE-2022-38694 は spl-unlock を送信し(署名チェックをスキップ)、セキュアブートなしで u-boot を正常に起動します

エクスプロイトチェーン(RP2350 実行)

root@kitploit:~
┌─────────────┐     ┌──────────────────┐     ┌───────────────────┐     ┌──────────────┐
│  BootROM    │     │  Exec Stub       │     │  SPL Loader       │     │  U-Boot      │
│  Handshake  │ ──► │  @0x3F28 (136B)  │ ──► │  @0x28007000      │ ──► │  Boot OK     │
│  CHECK_BAUD │     │  Bypass sig chk  │     │  Replaces FDL1    │     │              │
└─────────────┘     └──────────────────┘     └───────────────────┘     └──────────────┘
  1. BootROM ハンドシェイク — CHECK_BAUD + CONNECT で BSL 通信を確立
  2. Exec Stub の送信 — 136 バイトを 0x3F28 にロードし、CVE-2022-38694 を悪用して戻りアドレスを上書きし、署名検証をバイパス
  3. SPL Loader の送信 — FDL1 と SPL Loader はロードアドレス 0x28007000 を共有、署名はすでにバイパス済み
  4. U-Boot の起動 — spl-unlock は署名チェックをスキップし、セキュアブートが除去された u-boot を起動

前提条件: ファームウェアのパッチ

このプロジェクトには汎用のパッチ適用済みファームウェアは含まれていません。お使いのデバイスのファームウェアを自分でパッチする必要があります。

パッチチュートリアル

TomKing062 の Wiki を参照してください:

  • 🇬🇧 patch_do_cboot — SPL(英語)
  • 🇨🇳 patch_do_cboot — SPL(中国語)

パッチ対象のファームウェア

spl-unlock.bin をヘッダーに変換

root@kitploit:~
xxd -i spl-unlock.bin > fdl1_data.h

コード参照と一致するように、fdl1_data.h 内の配列名とマクロを更新します。

対応プラットフォーム

このプロジェクトは現在、UDX710 の exec stub(custom_exec_3f28.bin)を使用しています。

他のチップに対応するには、custom_exec_data.h 内の exec stub とロードアドレスを置き換えます:

完全なサポートリスト: SupportList

ハードウェア要件

コンポーネント説明
RP2350 Board例: Raspberry Pi Pico 2
USB Host CableRP2350 USB Host 用の OTG またはハードウェア改造
Target SPD Devicesplloader が消去済みで、電源投入時に BootROM DL モードへ自動移行

ピン設定

ピン機能
USB D+/D-ターゲット SPD デバイスに接続
GP4 (TX)UART デバッグ出力
GP5 (RX)UART デバッグ入力

USB ポートは Host 通信に使用されます。デバッグログは UART1(GP4/GP5、115200bps) 経由で出力されます。

ビルド

前提条件

  • Pico SDK v2.2.0+
  • CMake 3.13+
  • ARM GCC ツールチェーン

ビルド

root@kitploit:~
cd spd_flasher
mkdir build && cd build
cmake .. -DTARGET_CHIP=rp2350
make -j$(nproc)

出力: spd_flasher.uf2(BOOTSEL 経由でドラッグ&ドロップ)/ spd_flasher.bin(プログラマー用)

使用方法

  1. PC で ステージ1(初期アンロック + splloader の消去)を完了する
  2. spd_flasher.uf2 を RP2350 に書き込む
  3. USB Host ケーブルで RP2350 をターゲットデバイスに接続する
  4. デバイスの電源を入れる → 自動で BootROM DL モード → RP2350 がエクスプロイトチェーンを実行
  5. 完了時に自動リセットされ、すぐに次のデバイスを接続可能

なぜ RP2350 なのか?

プロジェクト構造

root@kitploit:~
spd_flasher/
├── main.c               # Main program, USB Host init & device management
├── spd_protocol.c        # SPD BSL protocol (HDLC framing, state machine)
├── spd_protocol.h        # Protocol definitions
├── tusb_config.h         # TinyUSB Host configuration
├── custom_exec_data.h    # Exec Stub data (136B @0x3F28)
├── fdl1_data.h           # SPL Loader data (spl-unlock.bin @0x28007000)
├── spl-unlock.bin        # SPL Loader raw binary
├── CMakeLists.txt        # CMake build configuration
└── signing_key.pem / aes_key.bin / iv_salt.bin  # RP2350 secure boot keys

謝辞

  • CVE-2022-38694 Unlock Bootloader — TomKing062
  • NCC Group Research — 脆弱性の発見
  • Raspberry Pi Pico SDK
  • TinyUSB

免責事項

このプロジェクトは、セキュリティ研究および教育目的のみを対象としています。利用者は、適用されるすべての法令を遵守する必要があります。作者は、このツールの使用によって生じたいかなる直接的または間接的な損害についても責任を負いません。

ライセンス

このプロジェクトは GNU General Public License v3.0 の下でライセンスされています。

ツールをダウンロード
ファームウェアパッチ出力目的
FDL2 (u-boot/lk)セキュアパーティション書き込みチェックを NOP 化fdl2-dl.binステージ1: spd_dump 経由で送信し、パーティション書き込みに使用
U-Bootdo_cboot() をパッチしてセキュアブートを除去変更済み ubootステージ1: デバイスに書き込まれ、ストック uboot を置き換え
SPL Loadersigncheck() と結果チェックを NOP 化spl-unlock.binステージ1 & 2: CVE-2022-38694 経由で送信
プラットフォーム実行アドレス参照
UDX7100x3F28このプロジェクト(デフォルト)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 堅牢化
サイズPC が必要単一 MCU
操作手動コマンド電源投入 = 実行
連続書き込みデバイスごとに手動自動リセット
展開不便実運用可能
コスト—~$3