
أدى التطور السريع للتكنولوجيا إلى زيادة الطلب على المطورين ذوي المهارات العالية. وأصبحت البرمجيات مفتوحة المصدر (OSS) أداة حيوية لهذه القوة العاملة المتنامية. يوجد الآن مئات الآلاف من حزم البرمجيات مفتوحة المصدر الراسخة عبر لغات البرمجة المختلفة. ويستفيد أكثر من 90% من المطورين من هذه المكونات مفتوحة المصدر في تطبيقاتهم الخاصة، مما يسلط الضوء على كفاءة البرمجيات مفتوحة المصدر والقيمة التي توفرها. ومما يؤكد أهميتها بشكل أكبر، من المتوقع أن يصل حجم سوق البرمجيات مفتوحة المصدر العالمي إلى 80.7 مليار دولار بحلول عام 2030، مما يعكس معدل نمو متوقعًا يبلغ 16.7% سنويًا.
ومع ذلك، فإن الاعتماد الواسع النطاق لبرمجيات برمجيات المصدر المفتوح يُدخل أيضاً طبقة جديدة من التعقيد: الثغرات الأمنية. فالعدد الهائل من مكوّنات برمجيات المصدر المفتوح المترابطة يخلق مجالاً أوسع للهجوم يمكن للجهات الخبيثة استغلاله. قد تكون إدارة التبعيات عبر مختلف حزم برمجيات المصدر المفتوح معقدة، مما يجعل من الصعب تحديد الثغرات الأمنية وتصحيحها على الفور. بالإضافة إلى ذلك، غالباً ما يعتمد أمن برمجيات المصدر المفتوح على يقظة ومساهمات مجتمع المطورين. وهذا يمكن أن يؤدي إلى التأخير في تصحيح الثغرات، خاصة بالنسبة للمشاريع الأقل شعبية.
في هذه المقالة، يفحص زملاء OPSWAT الخريجون CVE-2023-33733، وهو ثغرة أمنية اكتُشفت في مكتبة ReportLab مفتوحة المصدر الشهيرة. ويقترن تحليلهم بهجوم محاكاة يستفيد من برنامج MetaDefender Core مع Software Bill of Materials (SBOM) لتحديد الثغرات الأمنية في تبعيات التطبيق، بما في ذلك مكتبة ReportLab الضعيفة.
مقدمة مكتبة ريبورت لاب

ReportLab، وهي مكتبة Python قوية ومفتوحة المصدر، تمكّن المستخدمين من إنشاء ملفات PDF غنية بالميزات من كود Python. وهي تقدم للمطورين مزيجًا رابحًا: المرونة وسهولة الاستخدام وخيارات التخصيص الواسعة لإنشاء مستندات ديناميكية. تمنح المكتبة تحكمًا محسّنًا للمطوّرين في ملفات PDF الخاصة بهم، مما يسمح بدمج النصوص والصور والجداول والمخططات بدقة متناهية. هذا المستوى من التخصيص يجعل من ReportLab أداة قيّمة لإنشاء مستندات ديناميكية مثل الفواتير والتقارير المستندة إلى البيانات.
CVE-2023-33733 الخلفية
يسلط CVE-2023-33733 الضوء على ثغرة أمنية في مكتبة ReportLab، تؤثر على إصدارات متعددة من مكتبة ReportLab.
- تم اكتشاف أن إصدارات ReportLab قبل الإصدار 3.6.13 كانت عرضة للتهرب من صندوق الرمل، وتحديدًا في الإصدار
'rl_safe_eval'الوظيفة. تم تحقيق الاستغلال من خلال السمة اللونية لعلامات HTML، والتي تم تقييمها مباشرةً كتعبير بايثون باستخدامeval()مما يؤدي في النهاية إلى تنفيذ التعليمات البرمجية عن بعد. - قام محللو NVD بتعيين درجة CVSS 7.8 HIGH لـ CVE-2023-33733.

تحليل الثغرات الأمنية في ReportLab
أجرى الزملاء الخريجون في OPSWAT تحليلاً عميقاً لسير عمل ReportLab، وحددوا السبب الجذري للثغرة الأمنية CVE-2023-33733.
سير عمل مكتبة ReportLab Library
تُمكِّن ReportLab المطورين من إنشاء ملفات PDF بكفاءة. تسمح المكتبة بالتكامل دون عناء: استيراد المكتبة، وتحديد محتوى HTML، وإنشاء ملف PDF في سطر واحد من التعليمات البرمجية باستخدام دالة النتيجة.

كشف زملاؤنا الخريجون عن عملية من 5 خطوات لإنشاء ملفات PDF من HTML باستخدام ReportLab.

في إطار العملية المكونة من 5 خطوات لإنشاء ملفات PDF من HTML باستخدام ReportLab، تبرز ثلاث عمليات رئيسية: معالجة الفقرات، ومعالجة البارابارسر، وعملية معالجة HTML.

وكما هو موضح في الشكل أعلاه، تستخدم عملية معالجة HTML داخل ReportLab نظام eval() الدالة تحديدًا على سمة اللون. التي تعمل كنقطة محورية لتنفيذ التعليمات البرمجية الخبيثة، فإن eval() تدفع الدالة الباحثين إلى السعي للتحكم في مدخلاتها لاستغلال التطبيق. ومع ذلك، فإن هذا يمثل تحديًا بسبب وضع الحماية الذي يفرضه _rl_safe_eval_eval__ داخل ReportLab.

الثغرات الأمنية في تحليل ReportLab
قام ReportLab بتنفيذ صندوق رمل يسمى _rl_safe_eval_eval__. يستثني صندوق الحماية هذا جميع دوال Python المضمنة ويتضمن العديد من الدوال المضمنة التي تم تجاوزها. يسمح هذا التقييد بتنفيذ التعليمات البرمجية الآمنة داخل المكتبة مع منع الوصول إلى الدوال والمكتبات الخطرة التي يمكن استخدامها لأغراض خبيثة (مثل الوصول إلى نظام الملفات والاتصال بالشبكة).
إن rl_safe_eval تنفذ دالة صندوق الرمل شروطًا مختلفة للتأكد من أن السمة التي تم استدعاؤها آمنة قبل استخدام دالة بايثون المدمجة getattr() لاسترجاعها وإرجاع النتيجة.

تهدف دالة التقييم الآمن إلى تأمين البيئة من خلال استبعاد الدوال الخطرة ومنع الإجراءات الخبيثة. ومع ذلك، إذا تم العثور على طريقة لتجاوز شروطها والوصول إلى دالة مدمجة قوية، يمكن استغلالها.
وبناءً على هذه الفكرة، حاول الباحثون الأمنيون تجاوز القيود. في البداية، قاموا باستغلال حقن الكائنات باستخدام النوع() لإنشاء كائن وإعادة تعريف سماته وطرقه للتحايل على عمليات التحقق داخل _rl_safe_eval_eval__. علاوة على ذلك، وبما أن مكتبة ReportLab تتجاوز الدوال المدمجة وتجعلها متغيرات عامة في سياق eval، يمكن للباحث الاستفادة من هذا التنفيذ للوصول إلى إحدى الدوال المدمجة الأصلية. وقد يمكّنه ذلك من تجاوز بيئة الحماية (sandbox) وتنفيذ تعليمات برمجية ضارة.

يتم إعداد الحمولة على النحو التالي:

ومع ذلك، فإن تنفيذ تعبير متعدد الأسطر ضمن سياق eval غير ممكن. ومع ذلك، يمكن استخدام حيلة فهم القائمة، والحمولة لاستغلال هذا الاختراق كما يلي:

تقريرمحاكاة استغلال مختبر التقارير
نشر الباحثون إثبات مفهوم (POC) لـ CVE-2023-33733، مما يدل على أن التطبيقات التي تم إنشاؤها باستخدام إصدارات ضعيفة من ReportLab يمكن أن تكون عرضة للهجمات الإلكترونية. لتقييم هذا التهديد المحتمل، أجرى زملاء برنامج OSPWAT للخريجين هجومًا بالمحاكاة على تطبيق ويب. وقد استفادوا من MetaDefender Core مع قدرات SBOM لتحديد الثغرات الأمنية في تبعيات برمجيات التطبيق، بما في ذلك وجود مكتبة ReportLab المتأثرة.
محاكاة الثغرة الأمنية
لمحاكاة هذا الاستغلال كسيناريو واقعي، طوّر زملاء OPSWAT للخريجين تطبيق ويب باستخدام Python والنسخة الضعيفة من مكتبة ReportLab. يحاكي هذا التطبيق حالة استخدام نموذجية: يمكن للمستخدمين تحميل ملف HTML وتحويله إلى ملف PDF.

يمكن للمهاجم صياغة ملف HTML خبيث يحتوي على كود برمجي خبيث مصمم لاستغلال CVE-2023-33733. يمكن لهذه الشيفرة البرمجية تجاوز صندوق الحماية واختراق خادم الويب عن طريق تشغيل قذيفة عكسية من خلال eval() الوظيفة.

إن التحميل الناجح لملف خبيث سيسمح للمهاجم بالسيطرة على خادم التطبيق بسبب الثغرة الموجودة في مكتبة ReportLab القديمة.


أهمية نظام SBOM والأمان الاستباقي
يؤكد بحث الزملاء الخريجين في OPSWAT حول CVE-2023-33733 على المخاطر الأمنية المحتملة المرتبطة ببرمجيات برمجيات المصدر المفتوح. في حين أن برمجيات المصدر المفتوح توفر فوائد لا يمكن إنكارها من حيث كفاءة التطوير وفعالية التكلفة، إلا أن الثغرات الأمنية مثل تلك الموجودة في ReportLab يمكن أن تجعل المؤسسات عرضة للهجمات الإلكترونية.
OPSWAT سبوم
يعمل برنامج OPSWAT SBOM على تأمين سلسلة توريد البرمجيات من خلال توفير مخزون شامل لمكونات التعليمات البرمجية المصدرية والحاويات. وهو يدعم أكثر من 10 لغات، بما في ذلك Java وJava وJava JavaScript وGo وPHP وPython، وأكثر من 5 ملايين مكوّن برمجي مفتوح المصدر من طرف ثالث، ويستخدم قاعدة بيانات لأكثر من 17 ألف ثغرة أمنية مصدرها قاعدة البيانات الوطنية للثغرات الأمنية (NVD) وGitHub (GitHSA).

يُمكّن OPSWAT MetaDefender Core بقدراته المدمجة في SBOM، المؤسسات من معالجة هذه المخاطر بشكل استباقي. يفحص MetaDefender Core تطبيقات البرامج وتوابعها، ويحدد وجود الثغرات المعروفة مثل CVE-2023-33733 ضمن المكونات المدرجة. يسمح ذلك للمطورين وفرق الأمن بتحديد أولويات جهود التصحيح والتخفيف من المخاطر الأمنية قبل استغلالها.

الأفكار إغلاق
تعد أبحاث زملاء OPSWAT حول ثغرة ReportLab (CVE-2023-33733) تذكيرًا قيمًا بأهمية التدابير الأمنية الاستباقية في دورة حياة تطوير البرمجيات. من خلال الاستفادة من أدوات OPSWAT MetaDefender Core يمكن للمؤسسات الحصول على رؤى مهمة حول تبعيات برامجها وتحديد الثغرات المحتملة قبل أن يستغلها المهاجمون.
علاوة على ذلك، تقدم شركة « OPSWAT » مجموعة شاملة من حلول الأمن السيبراني حلول التي تتجاوز مجرد فحص الثغرات الأمنية. توفر هذه الحلول حلول إمكانية الكشف عن التهديدات في الوقت الفعلي، وأمن البيانات، وحماية نقاط النهاية، مما يحمي المؤسسات من مجموعة واسعة من التهديدات السيبرانية. ومن خلال تبني نهج أمني متعدد الطبقات يشمل أدوات مثل MetaDefender Core ، يمكن للمؤسسات الاستفادة من مزايا البرمجيات مفتوحة المصدر (OSS) مع تقليل المخاطر الأمنية المرتبطة بها إلى أدنى حد.
