أدى الارتفاع السريع للتكنولوجيا إلى ارتفاع الطلب على المطورين المهرة. وأصبحت البرمجيات مفتوحة المصدر (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 المطورين من إنشاء ملفات PDF بكفاءة. تسمح المكتبة بالتكامل دون عناء: استيراد المكتبة، وتحديد محتوى HTML، وإنشاء ملف PDF في سطر واحد من التعليمات البرمجية باستخدام دالة النتيجة.
كشف زملاؤنا الخريجون عن عملية من 5 خطوات لإنشاء ملفات PDF من HTML باستخدام ReportLab.
في إطار العملية المكونة من 5 خطوات لإنشاء ملفات PDF من HTML باستخدام ReportLab، تبرز ثلاث عمليات رئيسية: معالجة الفقرات، ومعالجة البارابارسر، وعملية معالجة HTML.
وكما هو موضح في الشكل أعلاه، تستخدم عملية معالجة HTML داخل ReportLab نظام eval()
الدالة تحديدًا على سمة اللون. التي تعمل كنقطة محورية لتنفيذ التعليمات البرمجية الخبيثة، فإن eval()
تدفع الدالة الباحثين إلى السعي للتحكم في مدخلاتها لاستغلال التطبيق. ومع ذلك، فإن هذا يمثل تحديًا بسبب وضع الحماية الذي يفرضه _rl_safe_eval_eval__
داخل ReportLab.
قام ReportLab بتنفيذ صندوق رمل يسمى _rl_safe_eval_eval__
. يستثني صندوق الحماية هذا جميع دوال Python المضمنة ويتضمن العديد من الدوال المضمنة التي تم تجاوزها. يسمح هذا التقييد بتنفيذ التعليمات البرمجية الآمنة داخل المكتبة مع منع الوصول إلى الدوال والمكتبات الخطرة التي يمكن استخدامها لأغراض خبيثة (مثل الوصول إلى نظام الملفات والاتصال بالشبكة).
إن rl_safe_eval
تنفذ دالة صندوق الرمل شروطًا مختلفة للتأكد من أن السمة التي تم استدعاؤها آمنة قبل استخدام دالة بايثون المدمجة getattr()
لاسترجاعها وإرجاع النتيجة.
تهدف دالة التقييم الآمن إلى تأمين البيئة من خلال استبعاد الدوال الخطرة ومنع الإجراءات الخبيثة. ومع ذلك، إذا تم العثور على طريقة لتجاوز شروطها والوصول إلى دالة مدمجة قوية، يمكن استغلالها.
وبناءً على هذه الفكرة، حاول الباحثون الأمنيون تجاوز القيود. في البداية، قاموا باستغلال حقن الكائنات باستخدام النوع()
لإنشاء كائن وإعادة تعريف سماته وطرقه للتحايل على عمليات التحقق داخل _rl_safe_eval_eval__
. علاوةً على ذلك، نظرًا لأن مكتبة ReportLab تتجاوز الدوال المدمجة وتجعلها دوال عالمية في سياق التقييم، يمكن للباحث الاستفادة من هذا التطبيق للوصول إلى إحدى الدوال المدمجة الأصلية. قد يمكّنهم ذلك من تجاوز بيئة وضع الحماية وتنفيذ تعليمات برمجية خبيثة.
يتم إعداد الحمولة على النحو التالي:
ومع ذلك، فإن تنفيذ تعبير متعدد الأسطر ضمن سياق 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 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 يمكن للمؤسسات الاستفادة من مزايا حلول الأمن السيبراني مع تقليل المخاطر الأمنية المرتبطة بها.