Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
spd_flasher — CVE-2022-38694 Exploit durci - Flasheur automatique USB Host RP2350 pour appareils Unisoc | Kitploit
Outils/GitHubGitHub/leochen-coremind/spd_flasher
Sécurité des Systèmes EmbarquésExploitationRétro-ingénierieHacking MatérielSécurité MobileApprentissage et Éducation
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 Exploit durci - Flasheur automatique USB Host RP2350 pour appareils Unisoc

Voir le dépôt
317il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2022-38694 Exploit durci — Flasheur automatique USB Host RP2350

中文版 README

Tutoriel

  • Tutoriel de rétro-ingénierie de la chaîne de démarrage UDX710 et de démarrage durci RP2350

Exploitation de la vulnérabilité BootROM Unisoc CVE-2022-38694 via l'hôte USB Raspberry Pi RP2350 pour envoyer automatiquement le SPL Loader au démarrage et lancer un u-boot arbitraire.

Déplace la chaîne d'exploitation — qui nécessitait à l'origine un PC + spd_dump — sur un microcontrôleur RP2350. Branchez l'appareil, flashez automatiquement, prend en charge le flashage en continu.

Fonctionnement

CVE-2022-38694 est un contournement ponctuel de la vérification de signature dans le BootROM Unisoc. En envoyant un exec stub à une adresse mémoire spécifique, l'adresse de retour est écrasée, contournant les contrôles de signature et permettant au BootROM d'accepter et d'exécuter un FDL1 arbitraire.

Point clé : FDL1 et SPL Loader partagent la même adresse de chargement (0x28007000), de sorte qu'un SPL Loader patché peut être envoyé à la place de FDL1, démarrant ainsi un u-boot arbitraire.

Processus de durcissement (deux étapes)

Étape 1 : Déverrouillage initial (PC + spd_dump)

La configuration initiale nécessite un PC avec 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 │
└──────────────────────────────────────────────────────────────────────────┘

Étapes :

  1. Utilisez CVE-2022-38694 pour envoyer spl-unlock.bin et démarrer l'appareil
  2. Envoyez fdl2-dl.bin patché (FDL2 dont la vérification du démarrage sécurisé est supprimée)
  3. Utilisez FDL2 pour écrire u-boot sans démarrage sécurisé dans la partition uboot
  4. Effacez la partition splloader → l'appareil perd le démarrage normal, entre en mode BootROM DL à chaque mise sous tension

Étape 2 : Opération durcie (flash automatique RP2350)

Une fois la splloader effacée, l'appareil entre en mode de téléchargement BootROM à chaque mise sous tension. L'hôte USB RP2350 gère automatiquement la chaîne d'exploitation :

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

Pourquoi effacer splloader ?

  • Chaîne de démarrage normale : BootROM → SPL Loader → u-boot → Système
  • SPL Loader vérifie la signature de u-boot — il rejettera un u-boot modifié
  • Avec splloader effacée, BootROM ne trouve pas SPL → bascule en mode téléchargement
  • CVE-2022-38694 envoie spl-unlock (saute la vérification de signature) → démarre avec succès u-boot sans démarrage sécurisé

Chaîne d'exploitation (exécution 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, établir la communication BSL
  2. Envoyer l'exec stub — Charger 136 octets à 0x3F28, exploiter CVE-2022-38694 pour écraser l'adresse de retour, contourner la vérification de signature
  3. Envoyer SPL Loader — FDL1 et SPL Loader partagent l'adresse de chargement 0x28007000, signature déjà contournée
  4. Démarrer U-Boot — spl-unlock saute les vérifications de signature, démarre u-boot sans démarrage sécurisé

Prérequis : patcher le micrologiciel

Ce projet n'inclut pas de micrologiciel patché universel. Vous devez patcher vous-même le micrologiciel de votre appareil.

Tutoriel de patch

Référez-vous au wiki de TomKing062 :

  • 🇬🇧 patch_do_cboot — SPL (Anglais)
  • 🇨🇳 patch_do_cboot — SPL (Chinois)

Micrologiciel à patcher

Convertir spl-unlock.bin en en-tête

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

Mettez à jour le nom du tableau et les macros dans fdl1_data.h pour correspondre aux références du code.

Plateformes prises en charge

Ce projet utilise actuellement l'exec stub UDX710 (custom_exec_3f28.bin).

Pour adapter à d'autres puces, remplacez l'exec stub et l'adresse de chargement dans custom_exec_data.h :

Liste complète des supports : SupportList

Exigences matérielles

ComposantDescription
Carte RP2350p. ex. Raspberry Pi Pico 2
Câble USB HostOTG ou modification matérielle pour l'hôte USB RP2350
Appareil SPD ciblesplloader effacée, entre automatiquement en mode BootROM DL à la mise sous tension

Configuration des broches

BrocheFonction
USB D+/D-Connecter à l'appareil SPD cible
GP4 (TX)Sortie de débogage UART
GP5 (RX)Entrée de débogage UART

Le port USB est utilisé pour la communication hôte. Les journaux de débogage sont émis via UART1 (GP4/GP5, 115200 bps).

Compilation

Prérequis

  • Pico SDK v2.2.0+
  • CMake 3.13+
  • Chaîne d'outils ARM GCC

Compiler

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

Sortie : spd_flasher.uf2 (glisser-déposer via BOOTSEL) / spd_flasher.bin (programmateur)

Utilisation

  1. Effectuez l'étape 1 (déverrouillage initial + effacement de splloader) sur PC
  2. Flashez spd_flasher.uf2 sur le RP2350
  3. Connectez le RP2350 à l'appareil cible via un câble USB Host
  4. Mettez l'appareil sous tension → mode BootROM DL automatique → le RP2350 exécute la chaîne d'exploitation
  5. Réinitialisation automatique à la fin, branchez immédiatement l'appareil suivant

Pourquoi le RP2350 ?

Structure du projet

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

Remerciements

  • CVE-2022-38694 Unlock Bootloader — TomKing062
  • NCC Group Research — Découverte de la vulnérabilité
  • Raspberry Pi Pico SDK
  • TinyUSB

Avertissement

Ce projet est destiné uniquement à la recherche en sécurité et à des fins éducatives. Les utilisateurs doivent se conformer à toutes les lois et réglementations applicables. L'auteur décline toute responsabilité en cas de dommages directs ou indirects résultant de l'utilisation de cet outil.

Licence

Ce projet est sous licence GNU General Public License v3.0.

Télécharger l’outil
MicrologicielPatchSortieObjectif
FDL2 (u-boot/lk)NOP les contrôles d'écriture de partition sécuriséefdl2-dl.binÉtape 1 : envoyé via spd_dump pour les écritures de partitions
U-BootPatcher do_cboot() pour supprimer le démarrage sécuriséu-boot modifiéÉtape 1 : écrit sur l'appareil, remplace l'uboot d'origine
SPL LoaderNOP signcheck() et contrôles de résultatspl-unlock.binÉtapes 1 et 2 : envoyé via CVE-2022-38694
PlateformeAdresse d'exécutionRéférence
UDX7100x3F28Ce projet (par défaut)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 durci
TailleNécessite un PCUn seul microcontrôleur
OpérationCommandes manuellesAllumage = exécution
ContinuManuel par appareilRéinitialisation auto
DéploiementPeu pratiquePrêt pour la production
Coût—~$3