أداة needrestart هي أداة أساسية في أنظمة Ubuntu Server، وقد تم اكتشاف وجود عدة ثغرات خطيرة فيها تتعلق بتصعيد الامتيازات المحلية (LPE). تم التعرف على هذه الثغرات من قبل وحدة أبحاث التهديدات في Qualys (TRU)، وهي تمكّن المستخدمين غير المميزين من الحصول على صلاحيات الجذر (root) دون الحاجة لتفاعل مدير السيرفر. ونظرًا لاستخدام أداة needrestart بشكل واسع منذ أن تم تضمينها بشكل افتراضي في إصدار Ubuntu Server 21.04، فإن هذه الثغرات تمثل تهديدًا كبيرًا لسلامة النظام والأمن الرقمي للأفراد والشركات. وتكمن خطورتها في أن الثغرات هذه قابلة للاستغلال بسهولة، مما يعني أنه يمكن للمهاجمين ذوي الخبرة المحدودة استغلالها.
نظرة عامة على الثغرات CVE-2024-48990 وCVE-2024-48992
تركز هذه الثغرات على مفسري Python وRuby
- CVE-2024-48990 (Python)
تنشأ هذه المشكلة عندما تقوم أداة needrestart بتشغيل سكربتات Python وتتضمن متغيرات يتم التحكم فيها من قبل المهاجم. على وجه الخصوص، يتم استخراج متغير البيئة PYTHONPATH من العمليات التي تعمل بـ Python واستخدامه من قبل الأداة. إذا تمكّن المهاجم من التحكم في هذا المتغير، فإنه يمكنه تنفيذ شفرة ضارة بصلاحيات الجذر عند تشغيل needrestart. - CVE-2024-48992 (Ruby)
مماثلة للثغرة المتعلقة بـ Python، تحدث هذه المشكلة عندما تقوم needrestart بتشغيل Ruby باستخدام متغير RUBYLIB يتم التحكم فيه من قبل المهاجم. مما قد يسمح للمهاجم بتنفيذ شفرة ضارة بصلاحيات الجذر. - CVE-2024-48991: شرط السباق في الكشف عن مفسر Python
تستغل هذه الثغرة شرط سباق أثناء عملية الكشف عن العمليات التي تستخدم Python. تقوم needrestart بالتحقق من العمليات من خلال قراءة مسار /proc/pid/exe، وهو ما يمكن للمهاجمين استغلاله. يمكن للمهاجم استبدال مسار مفسر Python بينما تكون الأداة في مرحلة التحقق منه، مما يؤدي إلى تشغيل نسخة ضارة من مفسر Python بصلاحيات الجذر.
CVE-2024-10224 وCVE-2024-11003: حقن الأوامر عبر وحدة ScanDeps الخاصة بـ Perl
تتعلق هذه الثغرات بوحدة ScanDeps الخاصة بـ Perl التي تستخدمها أداة needrestart لفحص التبعيات. المشكلة الرئيسية تكمن في أن الوحدة تستخدم استدعاءات غير آمنة لـ open() وeval() يمكن استغلالها من قبل المهاجمين لتنفيذ أوامر شل عشوائية.
- CVE-2024-10224
يمكن للمهاجمين استغلال هذه الثغرة من خلال التحكم في أسماء الملفات التي يتم تمريرها إلى دالة open(). على سبيل المثال، يمكن لاسم ملف مثل commands| أن يؤدي إلى تنفيذ أوامر شل ضارة عند تعامل needrestart معه. - CVE-2024-11003
تعالج هذه الثغرة استغلالًا آخر في وحدة ScanDeps حيث تقوم needrestart باستدعاء الوحدة بطريقة تمكن المهاجمين من التلاعب بالملف الذي يتم معالجته، وبالتالي الحصول على القدرة على تنفيذ أوامر عشوائية.
خطوات لتقليل المخاطر المرتبطة بهذه الثغرات:
- تحديث أداة needrestart إلى الإصدار الأخير (الإصدار 3.8 أو أعلى) لتصحيح الثغرات بشكل مباشر.
- تعطيل التحليل الذكي للمفسرين في إعدادات needrestart لتجنب الاستغلال عبر الثغرات المتعلقة بالمفسرين:
- تعديل ملف الإعدادات في /etc/needrestart/needrestart.conf وتعيين القيمة:
$nrconf{interpscan} = 0; - تطبيق التحديثات على الإصدارات القديمة من needrestart (المتاحة لإصدارات Ubuntu LTS).