أداة QEMU/OVMF بلا واجهة تشغّل إقلاع PXE وتُطلق أخطاء ICMP كبيرة الحجم لإعادة إنتاج تجاوز سعة المخزن المؤقت في EDK II PxeBcSupport (CVE-2026-97631) في مختبر محلي.
⚠️ مختبر محلي فقط. هذه الأدوات تشغّل جهازًا افتراضيًا QEMU محليًا مقابل برنامج ثابت (firmware) تتحكم به أنت. لا توجّه مولّد ICMP أبدًا نحو أجهزة أو شبكات لا تملكها.
CVE-2026-97631: تجاوز سعة مخزن مؤقت عمره 16 عامًا في TianoCore EDK II
(NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c) — رسالة خطأ ICMP بحجم مفرط
أثناء إقلاع شبكة PXE تنسخ ما يتجاوز بنية EFI_PXE_BASE_CODE_ICMP_ERROR
البالغة 504 بايت، مما يفسد ذاكرة البرنامج الثابت في الحلقة 0 (ring 0)، قبل تحميل Secure Boot وTPM.
تم إصلاحها عبر PR #13200 /
#13302؛ تغطية الكشف:
Ars Technica.
ثلاثة أجزاء صغيرة تعتمد على المكتبة القياسية فقط تنقل جهازًا افتراضيًا OVMF/QEMU بلا واجهة من الإقلاع البارد إلى محاولة إقلاع PXE — مع خادم DHCP وهجوم ICMP على الشبكة:
| الملف | الدور |
|---|---|
bridge.py | خادم DHCP بسيط على شبكة QEMU (DISCOVER→OFFER→REQUEST→ACK، وانتظار TFTP RRQ)، ثم يطلق الهجوم: 6× أخطاء ICMP من النوع 3 والرمز 1 تقتبس حزمة بيانات مزيفة بحجم 1200 بايت داخل البنية البالغة 504 بايت. --attack تشغيل/إيقاف. |
router.py | موجّه لحالة الشاشة: يصنّف شاشة OVMF من إحصاءات بكسلات screendump (أسود = UEFI Shell، أزرق = الصفحة الرئيسية / Boot Manager) ويقود واجهة المستخدم عبر مراقب QEMU (sendkey) حتى يعمل خيار إقلاع PXE. |
drive.py | مشغّل لوحة مفاتيح سابق خطوة بخطوة مع كشف شريط التمييز في PPM (محفوظ للرجوع إليه). |
شكل التشغيل:
# VM: OVMF pflash, virtio-net on a UDP socket netdev (no mcast flakiness),
# pcap wire tap + CPU-reset logging:
qemu-system-x86_64 -machine q35 -m 512 -display none \
-drive if=pflash,format=raw,readonly=on,file=$FW-code.fd \
-drive if=pflash,format=raw,file=$FW-vars.fd \
-netdev socket,id=n0,udp=127.0.0.1:5555,localaddr=127.0.0.1:6666 \
-device virtio-net-pci,netdev=n0,bootindex=0 \
-object filter-dump,id=f1,netdev=n0,file=dump.pcap \
-monitor unix:qmon.sock,server,nowait -serial none -d cpu_reset -D resets.log &
python3 bridge.py --attack & # DHCP + ICMP overflow trigger
python3 router.py qmon.sock run.log # navigate headlessly to UEFI PXE IPv4
tcpdump -r dump.pcpa # wire truth
grep -c "CPU Reset" resets.log # crash signal (baseline: 2 on clean boot)
كل شيء حتى محاولة إقلاع PXE يعمل بشكل قابل للتكرار (توجيه حالة الشاشة، التقاط الشبكة، محرك DHCP/الهجوم جاهز). على إصدارات OVMF المرفقة مع QEMU التي اختبرناها (IA32 وX64، وq35 وi440fx، وTCG)، يعرض البرنامج الثابت لافتة PXE ثم يرسل صفر حزم — لا يغادر DHCP Discover البرنامج الثابت أبدًا، لذلك لا يصل محفّز ICMP إلى المعالج المعرّض للثغرة. المضي قدمًا يتطلب إصدار OVMF مع تصحيح عبر المنفذ التسلسلي أو عتاد مختبر حقيقي. تُنشر هذه الأداة إلى هذا الحد بالضبط عن قصد: يجب أن تتوقف ادعاءات قابلية التكرار حيث توقف التشغيل.
MIT. بواسطة @slabbdev — مرافق لمقال المدونة.