Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
spd_flasher — CVE-2022-38694 Exploit endurecido - Autoflasher USB Host para dispositivos Unisoc | Kitploit
Ferramentas/GitHubGitHub/leochen-coremind/spd_flasher
Segurança de Sistemas EmbarcadosExploraçãoEngenharia ReversaHacking de HardwareSegurança MóvelAprendizado e Educação
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 Exploit endurecido - Autoflasher USB Host para dispositivos Unisoc

Ver Repositório
31há 14 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Exploit Reforçado CVE-2022-38694 — Gravador Automático USB Host RP2350

中文版 README

Tutorial

  • Tutorial de Engenharia Reversa da Cadeia de Boot UDX710 e Boot Reforçado com RP2350

Explorando a vulnerabilidade CVE-2022-38694 do BootROM Unisoc via Raspberry Pi RP2350 USB Host para enviar automaticamente o SPL Loader na inicialização e iniciar um u-boot arbitrário.

Move a cadeia de exploração — originalmente exigindo um PC + spd_dump — para um microcontrolador RP2350. Conecte o dispositivo, grave automaticamente, suporta gravação contínua.

Como Funciona

CVE-2022-38694 é uma bypass de verificação de assinatura única no BootROM Unisoc. Ao enviar um exec stub para um endereço de memória específico, o endereço de retorno é sobrescrito, contornando as verificações de assinatura e permitindo que o BootROM aceite e execute FDL1 arbitrário.

Insight fundamental: FDL1 e SPL Loader compartilham o mesmo endereço de carga (0x28007000), portanto um SPL Loader corrigido pode ser enviado no lugar do FDL1, inicializando um u-boot arbitrário.

Processo de Reforço (Duas Etapas)

Etapa 1: Desbloqueio Inicial (PC + spd_dump)

A configuração inicial requer um PC com 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 │
└──────────────────────────────────────────────────────────────────────────┘

Passos:

  1. Use o CVE-2022-38694 para enviar spl-unlock.bin e inicializar o dispositivo
  2. Envie o fdl2-dl.bin corrigido (FDL2 com verificação de boot seguro removida)
  3. Use o FDL2 para gravar u-boot com boot seguro removido na partição uboot
  4. Apague a partição splloader → o dispositivo perde a inicialização normal e entra no modo BootROM DL em toda inicialização

Etapa 2: Operação Reforçada (Auto Flash RP2350)

Com o splloader apagado, o dispositivo entra no modo de download BootROM em toda inicialização. O USB Host RP2350 lida automaticamente com a cadeia de exploração:

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

Por que apagar o splloader?

  • Cadeia de inicialização normal: BootROM → SPL Loader → u-boot → Sistema
  • O SPL Loader verifica a assinatura do u-boot — ele rejeitará u-boot modificado
  • Com o splloader apagado, o BootROM não encontra o SPL → cai no modo de download
  • O CVE-2022-38694 envia spl-unlock (pula a verificação de assinatura) → inicializa o u-boot com sucesso sem boot seguro

Cadeia de Exploração (Execução no 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 do BootROM — CHECK_BAUD + CONNECT, estabelecer comunicação BSL
  2. Enviar Exec Stub — Carregar 136 bytes em 0x3F28, explorar CVE-2022-38694 para sobrescrever o endereço de retorno, contornar a verificação de assinatura
  3. Enviar SPL Loader — FDL1 e SPL Loader compartilham o endereço de carga 0x28007000, assinatura já contornada
  4. Inicializar U-Boot — spl-unlock pula verificações de assinatura, inicializa u-boot sem boot seguro

Pré-requisitos: Patchear Firmware

Este projeto não inclui firmware corrigido universal. Você deve patchear o firmware do seu dispositivo por conta própria.

Tutorial de Patch

Consulte a Wiki do TomKing062:

  • 🇬🇧 patch_do_cboot — SPL (Inglês)
  • 🇨🇳 patch_do_cboot — SPL (中文)

Firmware a Patchear

Converter spl-unlock.bin em Header

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

Atualize o nome do array e as macros em fdl1_data.h para corresponder às referências do código.

Plataformas Suportadas

Este projeto atualmente usa o exec stub UDX710 (custom_exec_3f28.bin).

Para adaptar a outros chips, substitua o exec stub e o endereço de carga em custom_exec_data.h:

Lista completa de suporte: SupportList

Requisitos de Hardware

ComponenteDescrição
Placa RP2350ex.: Raspberry Pi Pico 2
Cabo USB HostOTG ou modificação de hardware para USB Host RP2350
Dispositivo SPD Alvosplloader apagado, entra automaticamente no modo BootROM DL ao ligar

Configuração de Pinos

PinoFunção
USB D+/D-Conecte ao dispositivo SPD alvo
GP4 (TX)Saída de debug UART
GP5 (RX)Entrada de debug UART

A porta USB é usada para comunicação Host. Logs de debug via UART1 (GP4/GP5, 115200bps).

Compilação

Pré-requisitos

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

Compilar

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

Saída: spd_flasher.uf2 (arrastar e soltar via BOOTSEL) / spd_flasher.bin (programador)

Uso

  1. Conclua a Etapa 1 (desbloqueio inicial + apagar splloader) no PC
  2. Grave spd_flasher.uf2 no RP2350
  3. Conecte o RP2350 ao dispositivo alvo via cabo USB Host
  4. Ligue o dispositivo → modo BootROM DL automático → RP2350 executa a cadeia de exploração
  5. Reset automático ao concluir, conecte o próximo dispositivo imediatamente

Por que RP2350?

Estrutura do Projeto

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

Agradecimentos

  • CVE-2022-38694 Unlock Bootloader — TomKing062
  • NCC Group Research — Descoberta da vulnerabilidade
  • Raspberry Pi Pico SDK
  • TinyUSB

Aviso Legal

Este projeto é apenas para fins de pesquisa em segurança e educação. Os usuários devem cumprir todas as leis e regulamentos aplicáveis. O autor não assume nenhuma responsabilidade por quaisquer danos diretos ou indiretos resultantes do uso desta ferramenta.

Licença

Este projeto está licenciado sob a GNU General Public License v3.0.

Baixar ferramenta
FirmwarePatchSaídaObjetivo
FDL2 (u-boot/lk)NOP em verificações de escrita de partição segurafdl2-dl.binEtapa 1: enviado via spd_dump para gravação de partições
U-BootPatch do_cboot() para remover o boot segurouboot modificadoEtapa 1: gravado no dispositivo, substitui o uboot de fábrica
SPL LoaderNOP em signcheck() e verificações de resultadospl-unlock.binEtapas 1 e 2: enviado via CVE-2022-38694
PlataformaEndereço de ExecuçãoReferência
UDX7100x3F28Este projeto (padrão)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 Reforçado
TamanhoRequer PCUm único MCU
OperaçãoComandos manuaisLigar = funcionando
ContínuoManual por dispositivoReset automático
ImplantaçãoInconvenientePronto para produção
Custo—~$3