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
CVE-2021-40154 — POC per testare la vulnerabilità BootROM trovata nei modelli LPC55S69 e serie K82 | Kitploit
Strumenti/GitHubGitHub/jeromeyoung/cve-2021-40154
Sicurezza Sistemi EmbeddedAnalisi delle VulnerabilitàExploitFuzzingSicurezza HardwareBinary Exploitation
GitHubjeromeyoung/cve-2021-40154

CVE-2021-40154

POC per testare la vulnerabilità BootROM trovata nei modelli LPC55S69 e serie K82

Vedi Repository
633 anni 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

CVE-2021-40154

Vulnerabilità di Buffer Over Read nella Programmazione In-System (ISP) USB su LPC55S69 e K82

POC per testare la vulnerabilità BootROM trovata su LPC55S69 e K82 Series Revision A2. La vulnerabilità è corretta nei dispositivi più recenti con la nuova Revision A3 per LPC55S69.

Dispositivi vulnerabili:

Confermati: MCU delle serie LPC55S69 e K82

Sospetti: altre serie di MCU NXP con stack USB ISP simile - Serie Kinetis K e Serie RT

Riepilogo della vulnerabilità:

È stata osservata una vulnerabilità di buffer over read nella modalità di programmazione In-System (ISP) USB delle serie di microcontrollori NXP LPC55s69 e Kinetis K82. Quando sfruttata, la vulnerabilità consente a un attaccante di leggere 16KB (LPC55S69) e 64KB (K82) di dati dalla memoria flash protetta.

Dettagli tecnici:

Gli MCU NXP LPC55S69 e K82 forniscono modalità di programmazione In-System (ISP) per l'aggiornamento sul campo del firmware dell'MCU utilizzando periferiche come USB, SPI, UART e I2C. La modalità ISP USB fornisce un host embedded per aggiornare il firmware tramite i comandi di aggiornamento documentati da NXP.

L'ISP fa parte del BootROM di LPC55S69 e K82 e viene attivato in base ai valori di alcuni bit di registro, al pin ISP e alla definizione dell'header dell'immagine. Per LPC55S69, la classe USB HID viene utilizzata per scaricare un'immagine dalla porta USB0/1 e, analogamente, per K82 il bootloader Kinetis nella ROM supporta il caricamento dei dati nella flash tramite la periferica USB come classe USB HID.

Sia le serie LPC55S69 che K82 utilizzano tre (3) endpoint USB, elencati di seguito:

  • Control (0)
  • Interrupt IN (1)
  • Interrupt OUT (2)

La vulnerabilità di buffer over read è stata osservata per l'endpoint USB Control 0, utilizzato per l'enumerazione dell'host USB.

Prova di concetto

Target 1: LPC55S69

La vulnerabilità di buffer over read è osservata nella richiesta GET Descriptor Configuration dall'host USB embedded. Un attaccante può richiedere fino a 16KB di dati di risposta, creando una richiesta USB per inviare GET Descriptor Configuration, modificando il valore "wlength" a 65535 byte. LPC556S9 limita e resetta quando 16KB di dati vengono copiati nel buffer TX USB e trasmessi con successo all'host.

Dettagli del dispositivo:

Scheda di sviluppo target: LPC55S69 – EVK RevA2 Host USB: Ubuntu 20.04 o Raspberry-pi 4 Model B

Passaggi per riprodurre la vulnerabilità:

  1. Sulla scheda di sviluppo LPC55S69 – EVK RevA2, l'ISP USB viene attivato premendo il pulsante ISP e il pulsante di reset.
  2. Collegare la porta USB 1 High Speed a un laptop Ubuntu o Raspberry-pi.
  3. La scheda LPC viene rilevata come dispositivo USB Composite come documentato nella Figura 1.

Figura 1: Utility Ubuntu dmesg che mostra i dettagli del dispositivo USB

root@kitploit:~
[43295.318228] usb 1-1.4: USB disconnect, device number 95
[43296.175536] usb 1-1.4: new full-speed USB device number 96 using xhci_hcd
[43296.397315] usb 1-1.4: New USB device found, idVendor=1fc9, idProduct=0021, bcdDevice= 3.00
[43296.397331] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[43296.397337] usb 1-1.4: Product: USB COMPOSITE DEVICE
[43296.397342] usb 1-1.4: Manufacturer: NXP SEMICONDUCTOR INC.
[43296.400768] hid-generic 0003:1FC9:0021.0055: hiddev0,hidraw4: USB HID v1.00 Device [NXP SEMICONDUCTOR INC. USB COMPOSITE DEVICE] on usb-0000:00:14.0-1.4/input0
  1. Collegare un analizzatore USB tra la scheda target e il PC, oppure utilizzare il modulo del kernel Linux "usbmon" per catturare i pacchetti USB:
  • Se si utilizza USBmon su Ubuntu, eseguire il comando "sudo modprobe usbmon".
  • Utilizzando "lsusb", annotare l'indirizzo del bus e del dispositivo.
  • Eseguire "sudo wireshark", connettersi all'interfaccia USBMON1/2 facendo riferimento al numero del bus da "lsusb".
  1. In Wireshark, filtrare l'indirizzo del dispositivo USB facendo riferimento al numero del bus da "lsusb".
  2. Eseguire la prova di concetto (PoC) "sudo python3 LPC_USB.py" su Ubuntu. Per eseguire correttamente lo script Python, sono necessari i seguenti requisiti sul PC host USB: a. Installare Python 3+ b. Installare il modulo "pyusb"
root@kitploit:~
sudo python3 LPC_USB.py
  1. Verificare il buffer overflow controllando la richiesta e la risposta dalle tracce USB, come documentato dalla Figura 2; la Figura 3 mostra invece la traccia dell'analizzatore USB. La risposta USB sarebbe di 4KB.

Figura 2

Figura 3

Nota 1: Il buffer over read di 4KB può essere richiesto su sistemi Ubuntu a causa della restrizione di Libusb "MAX_CTRL_BUFFER_LENGTH". Questo può essere modificato su un sistema Raspberry-pi e possono essere richiesti 16KB. Firmware allegato "LPC.bin" recuperato dalla scheda LPC55s69-EVK utilizzando un raspberry-pi 4 model b.

Se desideri inviare richieste superiori a 4KB, utilizza questo fantastico script creato da Horac su un Raspi ed esegui il POC con wlength modificato a 65535(0xffff).

Target 2: Kinetis K82

La vulnerabilità di buffer over read è osservata nella richiesta GET Status-Other da un host USB embedded. Un attaccante può richiedere fino a 64KB di dati di risposta, creando una richiesta USB per inviare GET status-Other, modificando il valore "wlength" a 65535 byte. Il dispositivo USB K82 invia con successo 64KB di dati.

Dettagli del dispositivo:

Scheda di sviluppo target: FRDM-K82F Host USB: Laptop Ubuntu o Raspberry-pi

root@kitploit:~
sudo python3 K82_USB.py

Nota 1: Il buffer over read di 4KB può essere richiesto su sistemi Ubuntu a causa della restrizione di Libusb "MAX_CTRL_BUFFER_LENGTH". Questo può essere modificato su un Raspberry-pi e possono essere richiesti 64KB.

Nota 2: La vulnerabilità in K82 viene riprodotta solo quando le richieste USB per GET status-Dispositivo, Interfaccia, Endpoint e other devono avvenire successivamente per attivare la vulnerabilità. Ciò può essere ottenuto eseguendo gli script PoC sviluppati dopo più reset ISP.

Se desideri inviare richieste superiori a 4KB, utilizza questo fantastico script creato da Horac su un Raspi ed esegui il POC con wlength modificato a 65535(0xffff).

Scarica lo strumento