
نظام محاكاة آمن ومتحكم يحاكي CVE-2021-4034 (PwnKit) مع قراءة/كتابة خارج الحدود، حقن متغيرات البيئة، واكتشاف دفاعات النواة لممارسة الاستغلال التعليمي.
هذا المشروع هو نظام محاكاة يعيد إنتاج المبدأ الأساسي لثغرة CVE-2021-4034 (قراءة/كتابة خارج النطاق) التي حدثت في خادم pkexec على لينكس. يحاكي النظام بأمان، دون رفع صلاحيات SUID الفعلية، آلية التعدي على منطقة الذاكرة للمتغيرات البيئية وحقن (Injection) حمولة ضارة داخل بيئة خاضعة للتحكم.
تم تصميم هذا النظام المحاكي خصيصًا ليكتشف آلية الدفاع الحديثة في نواة لينكس (execve التي تفرض إدراج سلسلة فارغة عند تمرير مصفوفة فارغة، مما يجعل argc=1) ويقوم بضبط الإزاحة لمحاكاة بيئة الذاكرة الضعيفة سابقًا بنجاح.
cve-2021-4034-mock/
├── README.md # شرح المشروع ودليل التشغيل
├── src/
│ ├── mock_pkexec.c # الكود المصدر للخادم الهدف الذي يفتقد التحقق من عدد الوسائط (argc)
│ └── exploit.c # كود المهاجم الذي يمرر الحمولة الهجومية عبر execve
└── bin/ # مسار تخزين الملفات التنفيذية المترجمة (يتم إنشاؤه عند البناء)
انتقل إلى الدليل الجذر للمشروع في الطرفية، ثم اكتب الأوامر التالية سطرًا سطرًا لتجميع الكود المصدري.
# 1. إنشاء مجلد bin لتخزين الملفات التنفيذية
mkdir -p bin
# 2. تجميع البرنامج الهدف (النظام المحاكي)
gcc -Wall -Wextra -o bin/mock_pkexec src/mock_pkexec.c
# 3. تجميع سكربت الاستغلال المهاجم
gcc -Wall -Wextra -o bin/exploit src/exploit.c
عند نجاح التجميع، سيتم إنشاء الملفين التنفيذيين mock_pkexec وexploit داخل مجلد bin/.
عند تمرير وسيط بشكل طبيعي، يُظهر البرنامج فشل التحقق من الصلاحيات بسبب منطق الدفاع أو إنهاء التشغيل بأمان.
./bin/mock_pkexec test_argument
[OK].قم بتشغيل سكربت الهجوم لفرض تمرير حمولة argc=0 (مصفوفة NULL) مما يؤدي إلى تفعيل الثغرة.
./bin/exploit
argc إلى 1، ويقوم بضبط فهرس مرجع الذاكرة ديناميكيًا.argv إلى منطقة envp المجاورة.GCONV_PATH) في ذاكرة النظام بنجاح، مع ظهور تحذير أحمر: [FATAL] ENVIRONMENT CORRUPTION DETECTED!.لحذف الملفات الثنائية المترجمة بعد الانتهاء من الاختبار، استخدم الأمر التالي.
rm -rf bin/