
رأيي في ثغرة CVE-2024-48990 في needrestart Python
من المفترض أن يقوم هذا السكربت البسيط بإنشاء جميع الملفات المطلوبة لكي تعمل هذه الثغرة.
أولاً، ينشئ ملفًا مؤقتًا عشوائيًا سيُستخدم لتجميع ملف __init__.so المزيّف. عندما يتم تشغيل الثغرة، سيتم تنفيذ هذا الملف ونسخ ملف bash الثنائي إلى /tmp/ribbit وتعيين بت SUID. بعد ذلك، ينشئ دليل importlib في مجلد العمل الحالي. ثم يجمّع الملف المؤقت الذي تم إنشاؤه إلى __init__.so ويضعه في الدليل المُنشأ حديثًا. أخيرًا، ينشئ ملف Python مؤقتًا آخر باسم عشوائي يظل في حالة سكون وينتظر أن تُفعَّل الثغرة. وبمجرد تفعيلها، سينفّذ ملف bash الثنائي الذي تم تعيين بت SUID عليه، مما ينتج عنه الحصول على root shell.
بمجرد بدء تشغيل سكربت Python، يجب تنفيذ needrestart بصلاحيات الجذر. ويحدث هذا عادةً عند استخدام apt-get.