Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
spd_flasher — CVE-2022-38694 Exploit irrobustito - Flasher automatico USB Host RP2350 per dispositivi Unisoc | Kitploit
Strumenti/GitHubGitHub/leochen-coremind/spd_flasher
Sicurezza Sistemi EmbeddedExploitReverse EngineeringHacking HardwareSicurezza MobileApprendimento e Formazione
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 Exploit irrobustito - Flasher automatico USB Host RP2350 per dispositivi Unisoc

Vedi Repository
3116 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Exploit irrobustito CVE-2022-38694 — Auto Flasher USB Host RP2350

中文版 README

Tutorial

  • Tutorial sul Reverse Engineering della Boot Chain UDX710 e sul Boot Hardened RP2350

Sfruttando la vulnerabilità CVE-2022-38694 del BootROM Unisoc tramite Raspberry Pi RP2350 USB Host per inviare automaticamente l'SPL Loader all'avvio e avviare un u-boot arbitrario.

Sposta la catena di exploit — originariamente richiedeva un PC + spd_dump — su un microcontrollore RP2350. Collega il dispositivo, flash automatico, supporta flash continuo.

Come Funziona

CVE-2022-38694 è un bypass una tantum della verifica della firma nel BootROM Unisoc. Inviando un exec stub a uno specifico indirizzo di memoria, l'indirizzo di ritorno viene sovrascritto, aggirando i controlli di firma e consentendo al BootROM di accettare ed eseguire FDL1 arbitrario.

Concetto chiave: FDL1 e SPL Loader condividono lo stesso indirizzo di caricamento (0x28007000), quindi un SPL Loader patchato può essere inviato al posto di FDL1, avviando un u-boot arbitrario.

Processo di Hardening (Due Fasi)

Fase 1: Sblocco Iniziale (PC + spd_dump)

La configurazione iniziale richiede un PC con spd_dump:

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

Passaggi:

  1. Usa CVE-2022-38694 per inviare spl-unlock.bin e avviare il dispositivo
  2. Invia fdl2-dl.bin patchato (FDL2 con verifica del secure boot rimossa)
  3. Usa FDL2 per scrivere u-boot senza secure boot nella partizione uboot
  4. Cancella la partizione splloader → il dispositivo perde l'avvio normale, entra in modalità DL BootROM a ogni accensione

Fase 2: Operazione Hardened (Auto Flash RP2350)

Con splloader cancellato, il dispositivo entra in modalità download BootROM a ogni accensione. L'USB Host RP2350 gestisce automaticamente la catena di exploit:

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

Perché cancellare splloader?

  • Catena di avvio normale: BootROM → SPL Loader → u-boot → Sistema
  • SPL Loader verifica la firma di u-boot — rifiuterà un u-boot modificato
  • Con splloader cancellato, BootROM non trova SPL → entra in modalità download
  • CVE-2022-38694 invia spl-unlock (salta il controllo della firma) → avvia con successo u-boot senza secure boot

Catena di Exploit (Esecuzione RP2350)

root@kitploit:~
┌─────────────┐     ┌──────────────────┐     ┌───────────────────┐     ┌──────────────┐
│  BootROM    │     │  Exec Stub       │     │  SPL Loader       │     │  U-Boot      │
│  Handshake  │ ──► │  @0x3F28 (136B)  │ ──► │  @0x28007000      │ ──► │  Boot OK     │
│  CHECK_BAUD │     │  Bypass sig chk  │     │  Replaces FDL1    │     │              │
└─────────────┘     └──────────────────┘     └───────────────────┘     └──────────────┘
  1. Handshake BootROM — CHECK_BAUD + CONNECT, stabilire la comunicazione BSL
  2. Invia Exec Stub — Carica 136 byte a 0x3F28, sfrutta CVE-2022-38694 per sovrascrivere l'indirizzo di ritorno, aggira la verifica della firma
  3. Invia SPL Loader — FDL1 e SPL Loader condividono l'indirizzo di caricamento 0x28007000, firma già aggirata
  4. Avvia U-Boot — spl-unlock salta i controlli di firma, avvia u-boot con secure boot rimosso

Prerequisiti: Patch del Firmware

Questo progetto non include firmware patchato universale. Devi patchare tu stesso il firmware del tuo dispositivo.

Tutorial di Patch

Fai riferimento alla Wiki di TomKing062:

  • 🇬🇧 patch_do_cboot — SPL (Inglese)
  • 🇨🇳 patch_do_cboot — SPL (Cinese)

Firmware da Patchare

Converti spl-unlock.bin in Header

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

Aggiorna il nome dell'array e le macro in fdl1_data.h per corrispondere ai riferimenti nel codice.

Piattaforme Supportate

Questo progetto attualmente usa l'exec stub UDX710 (custom_exec_3f28.bin).

Per adattarlo ad altri chip, sostituisci l'exec stub e l'indirizzo di caricamento in custom_exec_data.h:

Elenco completo del supporto: SupportList

Requisiti Hardware

ComponenteDescrizione
Scheda RP2350es. Raspberry Pi Pico 2
Cavo USB HostOTG o mod hardware per l'USB Host RP2350
Dispositivo SPD Targetsplloader cancellato, entra automaticamente in modalità DL BootROM all'accensione

Configurazione Pin

PinFunzione
USB D+/D-Collega al dispositivo SPD target
GP4 (TX)Output di debug UART
GP5 (RX)Input di debug UART

La porta USB è usata per la comunicazione Host. Log di debug tramite UART1 (GP4/GP5, 115200 bps).

Compilazione

Prerequisiti

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

Compila

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

Output: spd_flasher.uf2 (trascina e rilascia tramite BOOTSEL) / spd_flasher.bin (programmatore)

Utilizzo

  1. Completa la Fase 1 (sblocco iniziale + cancellazione splloader) su PC
  2. Flasha spd_flasher.uf2 su RP2350
  3. Collega RP2350 al dispositivo target tramite cavo USB Host
  4. Accendi il dispositivo → modalità DL BootROM automatica → RP2350 esegue la catena di exploit
  5. Auto-reset al termine, collega subito il dispositivo successivo

Perché RP2350?

Struttura del Progetto

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

Riconoscimenti

  • CVE-2022-38694 Unlock Bootloader — TomKing062
  • NCC Group Research — Scoperta della vulnerabilità
  • Raspberry Pi Pico SDK
  • TinyUSB

Disclaimer

Questo progetto è solo a scopo di ricerca sulla sicurezza e didattico. Gli utenti devono rispettare tutte le leggi e normative applicabili. L'autore non si assume alcuna responsabilità per danni diretti o indiretti derivanti dall'uso di questo strumento.

Licenza

Questo progetto è concesso in licenza sotto la GNU General Public License v3.0.

Scarica lo strumento
FirmwarePatchOutputScopo
FDL2 (u-boot/lk)NOP sui controlli di scrittura delle partizioni securefdl2-dl.binFase 1: inviato tramite spd_dump per la scrittura delle partizioni
U-BootPatch do_cboot() per rimuovere il secure bootUboot modificatoFase 1: scritto sul dispositivo, sostituisce l'uboot originale
SPL LoaderNOP signcheck() e controlli dei risultatispl-unlock.binFase 1 e 2: inviato tramite CVE-2022-38694
PiattaformaIndirizzo ExecRiferimento
UDX7100x3F28Questo progetto (predefinito)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 Hardened
DimensioniRichiede un PCSingolo MCU
OperazioneComandi manualiAccensione = esecuzione
ContinuitàManuale per dispositivoAuto-reset
DistribuzioneScomodoPronto per la produzione
Costo—~$3