
مختبر تعليمي يبني برنامجًا ثابتًا (pinned) لتطبيق EDK II/OVMF، ويُقلع جهازًا افتراضيًا UEFI في QEMU، ويشغّل سكربتات PoC بلغة Python لثغرة حرمان من الخدمة (DoS) في الإقلاع عبر الشبكة PXE وثغرة إفساد الذاكرة.
مختبر تعليمي لدراسة ثغرة أمنية في الإقلاع عبر الشبكة باستخدام PXE في EDK II / OVMF. يقوم ببناء نسخة EDK II مثبّتة (pinned)، ويُقلع جهازًا افتراضيًا UEFI في QEMU، ويتضمن نصوصًا برمجية بلغة Python لإثبات المفهوم (PoC) للتحقيق في حجب الخدمة (DoS) وتلف الذاكرة.
المراجع: EDK II security advisory · Upstream fix
dnsmasq وip/tc (عادةً من iproute2 أو iproute) وصلاحيات sudo/الجذر.من الأرشيف المستخرَج:
cd pxe-lab-public
chmod +x *.sh
./start.sh
يتحقق برنامج التشغيل من التبعيات، ويعرض تثبيت الحزم المفقودة، ويبني edk2-stable202608 (commit 2970e5699ba6267f3384ffab20f96647578aebc8) إذا لزم الأمر، ثم يفتح قائمة التحكم في الجهاز الافتراضي. لا تُشغّل start.sh أو بناء البرنامج الثابت (firmware) باستخدام sudo.
أوامر مفيدة:
./start.sh --check # Check the environment
./start.sh --build-only # Build the pinned firmware without starting QEMU
./start.sh --system # Use system OVMF instead (not suitable for verifying the pinned vulnerability)
./lab_run.sh --help # Show networking, capture, and QEMU options
شبكة QEMU الافتراضية بوضع المستخدم (user-mode) معزولة ولا تتطلب صلاحيات الجذر. لتسجيل التقاط الحزم (packet capture)، شغّل ./lab_run.sh --pcap session.pcap بعد بناء البرنامج الثابت.
تتطلب نصوص PoC وضع الجسر (bridge mode)؛ إذ لا يمكنها حقن الحزم في شبكة QEMU الافتراضية بوضع المستخدم.
أولًا، ابنِ البرنامج الثابت كمستخدم عادي باستخدام ./start.sh --build-only. ثم، في طرفية واحدة:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
اختر 1 (Start) في القائمة. في طرفية منفصلة، شغّل واحدًا مما يلي من جذر الأرشيف المستخرَج:
cd PoC-DoS
sudo bash ./start_dos.sh
أو، لمحاولة التجريبية لتلف الذاكرة / تنفيذ الشيفرة عن بُعد (RCE):
cd PoC-RCE
sudo bash ./start_rce.sh
ترسل هذه التجارب حركة مرور مُصمَّمة (crafted traffic) إلى بيئة PXE الافتراضية المعزولة، وقد تتسبب في تعليق البرنامج الثابت أو انهياره أو حدوث استثناء. الانهيار أو قيمة سجل تالفة ليسا دليلًا على نجاح تنفيذ شيفرة عشوائية. إن نص RCE محاولة تجريبية وليس استغلالًا مُتحقَّقًا منه لثغرة RCE. قد تختلف النتائج حسب النظام وإصدار البرنامج الثابت.
تم إنشاء البنية التحتية للمختبر (شيفرة الإعداد والبناء وإدارة الجهاز الافتراضي) بمساعدة نموذج لغوي كبير (LLM) واختبارها من قِبل المؤلف. أما نصوص إثبات المفهوم الخاصة بـ DoS وRCE فقد كتبها المؤلف شخصيًا، واختُبرت بمساعدة مساعد LLM. لا يضمن الاختبار الصحة أو السلامة أو قابلية إعادة الإنتاج أو التوافق مع أنظمة أخرى.
استخدم هذا الكود فقط على المعدات التي تملكها وتتحكم بها، وفي بيئة اختبار معزولة. لا تستخدمه ضد أنظمة أو شبكات أو أجهزة تابعة لجهات خارجية.
جميع الشيفرات والنصوص البرمجية مقدَّمة "كما هي" (AS IS)، دون أي ضمانات من أي نوع. وإلى أقصى حدٍّ يسمح به القانون المعمول به، يخلي المؤلف مسؤوليته عن الأخطاء أو الأعطال أو الأضرار أو فقدان البيانات أو العواقب الناشئة عن استخدام هذا المستودع. يتحمل المستخدمون وحدهم مسؤولية أفعالهم والامتثال للقوانين المعمول بها.