Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
spd_flasher — CVE-2022-38694 Gehärteter Exploit - RP2350 USB-Host-Auto-Flasher für Unisoc-Geräte | Kitploit
Tools/GitHubGitHub/leochen-coremind/spd_flasher
Embedded-System-SicherheitExploitationReverse EngineeringHardware-HackingMobile SicherheitLernen & Bildung
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 Gehärteter Exploit - RP2350 USB-Host-Auto-Flasher für Unisoc-Geräte

Repository anzeigen
31vor 16 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2022-38694 Gehärteter Exploit — RP2350 USB Host Auto Flasher

中文版 README

Tutorial

  • UDX710-Bootkette-Reverse-Engineering und RP2350-Hardened-Boot-Tutorial

Nutzt die CVE-2022-38694-BootROM-Schwachstelle von Unisoc über einen Raspberry Pi RP2350-USB-Host aus, um beim Booten automatisch den SPL-Loader zu senden und einen beliebigen u-boot zu starten.

Verlegt die Exploit-Kette – ursprünglich benötigte sie einen PC + spd_dump – auf einen RP2350-Mikrocontroller. Gerät anschließen, automatisch flashen, unterstützt kontinuierliches Flashen.

Funktionsweise

CVE-2022-38694 ist eine einmalige Umgehung der Signaturprüfung im Unisoc-BootROM. Indem ein Exec-Stub an eine bestimmte Speicheradresse gesendet wird, wird die Rücksprungadresse überschrieben, die Signaturprüfungen werden umgangen und das BootROM kann beliebiges FDL1 akzeptieren und ausführen.

Wichtige Erkenntnis: FDL1 und SPL-Loader teilen sich dieselbe Ladeadresse (0x28007000), daher kann ein gepatchter SPL-Loader anstelle von FDL1 gesendet werden, wodurch ein beliebiger u-boot bootet.

Härtungsprozess (Zwei Stufen)

Stufe 1: Erste Freischaltung (PC + spd_dump)

Für die Ersteinrichtung wird ein PC mit spd_dump benötigt:

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 │
└──────────────────────────────────────────────────────────────────────────┘

Schritte:

  1. CVE-2022-38694 verwenden, um spl-unlock.bin zu senden und das Gerät zu booten
  2. Das gepatchte fdl2-dl.bin senden (FDL2 ohne Secure-Boot-Prüfung)
  3. FDL2 verwenden, um u-boot ohne Secure Boot in die Uboot-Partition zu schreiben
  4. Splloader-Partition löschen → das Gerät verliert den normalen Bootvorgang und wechselt bei jedem Einschalten in den BootROM-DL-Modus

Stufe 2: Gehärteter Betrieb (RP2350 Auto-Flash)

Wenn der Splloader gelöscht ist, wechselt das Gerät bei jedem Einschalten in den BootROM-Download-Modus. Der RP2350-USB-Host übernimmt die Exploit-Kette automatisch:

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.       │
└──────────────────────────────────────────────────────────────────────────┘

Warum den Splloader löschen?

  • Normale Bootkette: BootROM → SPL-Loader → u-boot → System
  • Der SPL-Loader prüft die u-boot-Signatur – er wird modifizierten u-boot ablehnen
  • Ohne Splloader kann das BootROM kein SPL finden → es wechselt in den Download-Modus
  • CVE-2022-38694 sendet spl-unlock (überspringt die Signaturprüfung) → startet u-boot ohne Secure Boot erfolgreich

Exploit-Kette (RP2350-Ausführung)

root@kitploit:~
┌─────────────┐     ┌──────────────────┐     ┌───────────────────┐     ┌──────────────┐
│  BootROM    │     │  Exec Stub       │     │  SPL Loader       │     │  U-Boot      │
│  Handshake  │ ──► │  @0x3F28 (136B)  │ ──► │  @0x28007000      │ ──► │  Boot OK     │
│  CHECK_BAUD │     │  Bypass sig chk  │     │  Replaces FDL1    │     │              │
└─────────────┘     └──────────────────┘     └───────────────────┘     └──────────────┘
  1. BootROM-Handshake – CHECK_BAUD + CONNECT, BSL-Kommunikation aufbauen
  2. Exec-Stub senden – 136 Bytes an 0x3F28 laden, CVE-2022-38694 ausnutzen, um die Rücksprungadresse zu überschreiben und die Signaturprüfung zu umgehen
  3. SPL-Loader senden – FDL1 und SPL-Loader teilen sich die Ladeadresse 0x28007000, Signatur ist bereits umgangen
  4. U-Boot booten – spl-unlock überspringt die Signaturprüfungen und bootet u-boot ohne Secure Boot

Voraussetzungen: Firmware patchen

Dieses Projekt enthält keine universelle gepatchte Firmware. Sie müssen die Firmware Ihres Geräts selbst patchen.

Patch-Anleitung

Siehe TomKing062s Wiki:

  • 🇬🇧 patch_do_cboot — SPL (Englisch)
  • 🇨🇳 patch_do_cboot — SPL (中文)

Zu patchende Firmware

spl-unlock.bin in Header konvertieren

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

Aktualisieren Sie den Array-Namen und die Makros in fdl1_data.h, sodass sie mit den Codereferenzen übereinstimmen.

Unterstützte Plattformen

Dieses Projekt verwendet derzeit den UDX710-Exec-Stub (custom_exec_3f28.bin).

Um es an andere Chips anzupassen, ersetzen Sie den Exec-Stub und die Ladeadresse in custom_exec_data.h:

Vollständige Unterstützungsliste: SupportList

Hardware-Anforderungen

KomponenteBeschreibung
RP2350-Boardz. B. Raspberry Pi Pico 2
USB-Host-KabelOTG oder Hardware-Mod für den RP2350-USB-Host
Ziel-SPD-GerätSplloader gelöscht, wechselt beim Einschalten automatisch in den BootROM-DL-Modus

Pin-Konfiguration

PinFunktion
USB D+/D-Mit dem Ziel-SPD-Gerät verbinden
GP4 (TX)UART-Debug-Ausgabe
GP5 (RX)UART-Debug-Eingabe

Der USB-Port wird für die Host-Kommunikation verwendet. Debug-Logs über UART1 (GP4/GP5, 115200bps).

Kompilieren

Voraussetzungen

  • Pico SDK v2.2.0+
  • CMake 3.13+
  • ARM-GCC-Toolchain

Kompilieren

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

Ausgabe: spd_flasher.uf2 (per Drag-and-Drop über BOOTSEL) / spd_flasher.bin (Programmer)

Verwendung

  1. Führen Sie Stufe 1 (erste Freischaltung + Splloader löschen) auf dem PC durch
  2. Flashen Sie spd_flasher.uf2 auf den RP2350
  3. Verbinden Sie den RP2350 über ein USB-Host-Kabel mit dem Zielgerät
  4. Gerät einschalten → automatischer BootROM-DL-Modus → RP2350 führt die Exploit-Kette aus
  5. Automatischer Reset nach Abschluss, sofort das nächste Gerät anschließen

Warum RP2350?

Projektstruktur

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

Danksagungen

  • CVE-2022-38694 Unlock Bootloader — TomKing062
  • NCC Group Research — Entdeckung der Schwachstelle
  • Raspberry Pi Pico SDK
  • TinyUSB

Haftungsausschluss

Dieses Projekt dient ausschließlich der Sicherheitsforschung und zu Bildungszwecken. Die Nutzer müssen alle geltenden Gesetze und Vorschriften einhalten. Der Autor übernimmt keine Haftung für direkte oder indirekte Schäden, die durch die Verwendung dieses Tools entstehen.

Lizenz

Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert.

Tool herunterladen
FirmwarePatchAusgabeZweck
FDL2 (u-boot/lk)Secure-Partitions-Schreibprüfungen per NOP überschreibenfdl2-dl.binStufe 1: wird per spd_dump für Partitionsschreibvorgänge gesendet
U-Bootdo_cboot() patchen, um Secure Boot zu entfernenModifizierter ubootStufe 1: wird auf das Gerät geschrieben, ersetzt Standard-uboot
SPL Loadersigncheck() und Ergebnisprüfungen per NOP überschreibenspl-unlock.binStufe 1 & 2: wird per CVE-2022-38694 gesendet
PlattformExec-AdresseReferenz
UDX7100x3F28Dieses Projekt (Standard)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 (gehärtet)
GrößeBenötigt PCEinzelner MCU
BedienungManuelle BefehleEinschalten = läuft
KontinuierlichManuell pro GerätAuto-Reset
EinsatzUmständlichProduktionsreif
Kosten—~$3