ثغرة أمنية حرجة في مكتبة C++: تهديد لملايين المشاريع

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ثغرة أمنية حرجة في مكتبة C++ الشهيرة: ملايين المشاريع تحت التهديد



في 29 أكتوبر 2024، أعلن فريق أمان مشروع libfoo++ (تم تغيير الاسم لأسباب أمنية قبل الكشف الرسمي) عن الكشف عن ثغرة أمنية حرجة حصلت على المعرف CVE-2024-XXXXX. الثغرة، التي تم تقييمها بـ 9.8 نقاط على مقياس CVSS v3.1، تسمح للمهاجم بتنفيذ كود عشوائي عن بُعد على الخادم الذي يستخدم المكتبة لمعالجة طلبات الشبكة.



تُستخدم مكتبة libfoo++ على نطاق واسع في خوادم الويب عالية التحميل وأنظمة البريد الإلكتروني وأجهزة إنترنت الأشياء (IoT). وفقًا لتقديرات الخبراء، جميع إصدارات المكتبة الصادرة خلال السنوات الثلاث الماضية، بدءًا من الإصدار 3.2.0، معرضة للخطر. وهذا يعرض مئات الآلاف من الخوادم حول العالم للخطر، بما في ذلك البنية التحتية الحيوية.



التفاصيل الفنية للثغرة



تكمن المشكلة في وحدة تحليل رؤوس HTTP. بسبب خطأ في إدارة الذاكرة (use-after-free) في الدالة parse_header()، يمكن للمهاجم إرسال حزمة بيانات مصممة خصيصًا. عند معالجة هذه الحزمة، تفسر المكتبة جزء الذاكرة الذي تم تحريره بالفعل كمؤشر صالح، مما يؤدي إلى إعادة كتابة هياكل البيانات الحرجة.



يبدو ناقل الهجوم كما يلي:

  • الخطوة 1: يرسل المهاجم إلى الخادم سلسلة من طلبات HTTP برؤوس غير صحيحة تؤدي إلى تحرير مزدوج للذاكرة.
  • الخطوة 2: باستخدام تقنية heap spraying، يملأ المهاجم منطقة الذاكرة المحررة بكود شل (shellcode) الخاص به.
  • الخطوة 3: عند الوصول المتكرر إلى الكائن التالف، يتم نقل التحكم إلى الكود الضار.


ما يزيد من خطورة الأمر هو أن استغلال الثغرة لا يتطلب مصادقة، وأن الحزمة نفسها تتنكر كحركة مرور عادية، مما يجعل اكتشاف الهجوم بواسطة أدوات المراقبة القياسية أمرًا صعبًا.



رد فعل المجتمع والتوصيات



أصدر مطورو المكتبة بالفعل تصحيحًا عاجلاً في الإصدار 4.0.1. يُنصح جميع المستخدمين بشدة بالتحديث فورًا. يمكن أن يكون تعطيل وحدة تحليل الرؤوس إجراءً أمنيًا مؤقتًا إذا كان ذلك ممكنًا في تكوين التطبيق.



ينصح خبراء الأمن السيبراني بما يلي:

  • تحديث المكتبة إلى أحدث إصدار مستقر، مع التحقق من التوافق مع مشروعك.
  • فحص سجلات الوصول بحثًا عن طلبات مشبوهة برؤوس غير صحيحة.
  • تنفيذ WAF (جدار حماية تطبيقات الويب) بقواعد تمنع الحزم غير الطبيعية.
  • إجراء تدقيق للكود في مشاريعك الخاصة التي تستخدم libfoo++، للبحث عن أي ثغرات أمنية محتملة أخرى.


يذكرنا حادث libfoo++ مرة أخرى بأهمية التحديث في الوقت المناسب للتبعيات والتحليل المنتظم لأمان الكود. حتى المكتبات الناضجة والمستخدمة على نطاق واسع ليست محصنة ضد الأخطاء التي قد تكلف الشركات ملايين الدولارات بسبب تسرب البيانات أو توقف الخدمات.



تابع التحديثات على PythonLib — سنبقيك على اطلاع دائم بتطورات الأحداث وسننشر تحليلات فنية.

المكتبات الموصى بها