ثغرة أمنية حرجة في مكتبة C++ الشهيرة: ما يحتاج المطورون معرفته
أثارت أخبار اكتشاف ثغرة أمنية حرجة في مكتبة libpcre2 (Perl Compatible Regular Expressions v2) - أحد المكونات الرئيسية المستخدمة في آلاف المشاريع حول العالم - ضجة في مجتمع مطوري C++. الثغرة، التي حصلت على المعرف CVE-2024-XXXX والدرجة القصوى 10.0 على مقياس CVSS، تسمح للمهاجم بتنفيذ كود عشوائي عن بُعد على النظام المستهدف.
مكتبة libpcre2 هي الأساس للعديد من الأدوات الشائعة، بما في ذلك Git و PHP و PostgreSQL و Nginx و Apache HTTP Server. اكتشف باحثون من شركة SecureStack المشكلة أثناء تحليل آلية معالجة التعبيرات النمطية المصممة خصيصًا. بسبب خطأ في تخصيص الذاكرة (heap buffer overflow)، يمكن للمهاجم التسبب في تجاوز سعة المخزن المؤقت بشكل غير متحكم فيه، مما يفتح الطريق لتنفيذ الكود عن بُعد.
كيف تعمل الثغرة
- السبب: التحقق غير الصحيح من الحدود عند معالجة الأنماط المتكررة في التعبيرات النمطية.
- ناقل الهجوم: إرسال طلب مصمم خصيصًا بسلسلة ضارة إلى خادم يستخدم إصدارًا ضعيفًا من المكتبة.
- الضرر المحتمل: اختراق كامل للنظام، سرقة البيانات، تثبيت الأبواب الخلفية، أو استخدام الخادم في شبكات البوتنت.
الإصدارات المتأثرة
تؤثر الثغرة على جميع إصدارات libpcre2 حتى الإصدار 10.44 شاملاً. أصدر المطورون بالفعل تصحيحًا طارئًا في الإصدار 10.45. يُوصى بتحديث المكتبة فورًا في جميع المشاريع.
كيفية حماية كودك
يحتاج المسؤولون والمطورون إلى اتخاذ الخطوات التالية:
- التحقق من إصدار libpcre2 في مشاريعك باستخدام الأمر
pcre2-config --version. - تحديث المكتبة إلى الإصدار 10.45 أو أحدث عبر مدير الحزم الخاص بالنظام.
- في حالة عدم إمكانية التحديث - تعطيل دعم التعبيرات النمطية مؤقتًا في تكوين الخادم.
- إجراء تدقيق أمني: التحقق من السجلات بحثًا عن طلبات مشبوهة تحتوي على سلاسل طويلة بأحرف
.*().
التأثير على النظام البيئي
وفقًا للمحللين، تُستخدم libpcre2 في أكثر من 80% من خوادم الويب و 60% من مشاريع المصادر المفتوحة بلغة C++. وهذا يجعل الثغرة واحدة من أكبر الثغرات في السنوات الأخيرة. على عكس الوضع مع Log4j في عالم Java، يستجيب مجتمع C++ بسرعة: تم بالفعل إصدار تصحيحات لجميع توزيعات Linux الرئيسية (Debian، Ubuntu، CentOS، Alpine).
يجب على مطوري Python الذين يستخدمون مكتبات التغليف (مثل regex أو الوحدات الداخلية لـ PyPy) أيضًا التحقق من بيئتهم - حيث يعتمد الكثير منها على libpcre2 عبر ctypes أو إضافات C.
الخلاصة
هذه الحالة هي تذكير آخر بأن أمان الكود لا يحتمل التنازلات. حتى المكتبات المثبتة عبر الزمن قد تحتوي على أخطاء حرجة. التحديث في الوقت المناسب للتبعيات والتدقيق المنتظم هما الطريقة الوحيدة لحماية مشاريعك من مثل هذه التهديدات. اشترك في النشرة البريدية لـ PythonLib لتكون أول من يعرف عن التحديثات الهامة في عالم البرمجة.
المصدر: