
PoC من CVE-2021-4034 (PwnKit) لأغراض التدريب الشخصي.
يحتوي هذا المستودع على إثبات المفهوم لثغرة CVE-2021-4034، المعروفة أيضًا باسم PwnKit. تم تطويره لأغراض التدريب الشخصي والتعليم فقط. استخدمه فقط في بيئات تمتلكها أو مصرح لك صراحةً باختبارها.
لبناء الاستغلال تحتاج إلى:
pkexec هي أداة من Polkit تسمح لمستخدم مفوض بتنفيذ البرامج كمستخدم آخر، عادةً بصلاحيات إدارية، تشبه sudo. ثغرة CVE-2021-4034 هي ثغرة فساد ذاكرة تؤثر على هذا الثنائي. تنشأ المشكلة من معالجة غير صحيحة للوسائط عندما argc == 0. يؤدي ذلك إلى كتابة خارج الحدود تسمح للمهاجم بالتحكم في مؤشر أول متغير بيئة في الذاكرة. في ظل ظروف معينة، تسمح لمستخدم محلي غير مميز بتصعيد صلاحياته إلى صلاحيات الجذر. مزيد من التفاصيل متاحة هنا: https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
الاستغلال النهائي مستقل تمامًا ولا يتطلب مكتبات خارجية أو ثنائيات إضافية.
التوزيعة: Ubuntu 20.04 LTS
إصدار النواة: 5.4.0-42-generic
إصدار Polkit: 0.105-26ubuntu1 (غير مصحح)
الـ shell المضمن (shell.asm) مكتوب بلغة التجميع x86_64 لنظام Linux. يتم تجميعه إلى مكتبة مشتركة (.so) ويُضمّن في الاستغلال.
اختياريًا، يمكن تنفيذ الـ shell بلغة C لمزيد من قابلية النقل عبر التوزيعات، ولكن تم الاحتفاظ بإصدار التجميع لأغراض التعلم وممارسة كتابة كود التجميع منخفض المستوى.
ملاحظة: هذا الاستغلال والـ shell متوافقان فقط مع بيئات Linux x86_64. استخدام بنية مختلفة (مثل ARM أو i386) لن يعمل.
التجميع:
make
التشغيل:
./exploit
التنظيف:
make clean
تم تصحيح هذه الثغرة في يناير 2022.
إذا كنت تشغل إصدارًا غير مصحح من policykit-1، فقد يكون نظامك عرضة للخطر. كإجراء تخفيف مؤقت، يمكنك إزالة بت SUID من pkexec:
chmod -s /bin/pkexec