
يحتوي هذا المستودع على استغلال الثغرة التي اكتشفتها مؤخرًا في النظام الفرعي nftables، والتي تم ترقيمها بـ CVE-2023-0179، وهي تؤثر على جميع إصدارات Linux من 5.5 إلى 6.2-rc3، على الرغم من أن الاستغلال تم اختباره على الإصدار 6.1.6.
يمكن العثور على تفاصيل الثغرة والشرح الكامل على oss-security
ما عليك سوى تنفيذ الأمر make needle لإنشاء الملف التنفيذي المقابل.
مكتبتا libmnl و libnftnl مطلوبتان لنجاح البناء:
sudo apt-get install libmnl-dev libnftnl-dev
سيدخل الاستغلال إلى مساحة مستخدم غير مميزة ومساحة شبكة (network namespace)، ويضيف تعبير nft_payload عبر الدالة rule_add_payload التي، عند تقييمها، ستؤدي إلى تجاوز سعة المخزن المؤقت في المكدس (stack buffer overflow) واستبدال السجلات (registers).
ثم يتم استرجاع المحتوى باستخدام أمر nft التالي:
nft list map netdev mytable myset12
سيكشف الإخراج عن عدة عناوين معاد ترتيبها مرتبطة بهياكل بيانات النواة، ومن بينها نجد عنوان تعليمة في النواة ومؤشر regs.
ينشئ الاستغلال حساب مستخدم جديدًا needle:needle بمعرف مستخدم UID 0 عن طريق استغلال المتغير modprobe_path.
استمتع بصلاحيات الجذر (root).