أدى الارتفاع السريع للتكنولوجيا إلى ارتفاع الطلب على المطورين المهرة. وأصبحت البرمجيات مفتوحة المصدر (OSS) أداة حيوية لهذه القوى العاملة المتنامية. وتوجد الآن مئات الآلاف من حزم برمجيات المصدر المفتوح الراسخة عبر مختلف لغات البرمجة. ويستفيد أكثر من 90% من المطورين من هذه المكونات مفتوحة المصدر ضمن تطبيقاتهم المملوكة لهم، مما يسلط الضوء على كفاءة وقيمة برمجيات المصدر المفتوح. وتأكيداً على أهميتها، من المتوقع أن تصل قيمة سوق البرمجيات مفتوحة المصدر العالمية إلى 80.7 مليار دولار بحلول عام 2030، مما يعكس معدل نمو متوقع بنسبة 16.7% سنوياً.
تُعد Software جزءاً لا يتجزأ من العمليات التجارية في جميع أنحاء العالم، وبالتالي فهي مستهدفة بشكل متكرر من قبل الجهات التي تهددها. في عام 2023، بلغ الإنفاق على أمن التطبيقات حوالي 5.76 مليار دولار أمريكي، مع توقعات بوصولها إلى 6.67 مليار دولار أمريكي في عام 2024. وضمن مجال أمن التطبيقات، اكتسب أمن سلسلة توريد البرمجيات أهمية كبيرة على مدار السنوات الثلاث الماضية، حيث يمثل فئة الهجمات الأسرع نمواً، مع تصدر الاختراقات والثغرات الكبيرة عناوين الأخبار بانتظام.
غالبًا ما تفترض المؤسسات أن معظم المخاطر تنشأ من تطبيقات الويب التي تواجه الجمهور. ومع ذلك، فقد تغير هذا المنظور في السنوات الأخيرة. فمع وجود العشرات من المكونات الصغيرة في كل تطبيق، يمكن أن تنشأ المخاطر الآن من أي مكان داخل قاعدة التعليمات البرمجية. أصبح من المهم أكثر من أي وقت مضى أن تتعرف المؤسسات على الثغرات الأمنية الموجودة والناشئة في دورة حياة تطوير البرمجيات. في هذه المدونة، يقدّم زملاؤنا الخريجون نظرة عن كثب على CVE-2023-23924، وهي ثغرة أمنية خطيرة اكتُشفت في مكتبة dompdf واسعة الاستخدام، وهي أداة PHP قوية تتيح توليد مستندات PDF ديناميكية من HTML وCSS.
من خلال تحليل شامل، سنستكشف التعقيدات التقنية لهذه الثغرة الأمنية، والتقنيات ذات الصلة التي تلعب دوراً حاسماً في ذلك، ومحاكاة لعملية الاستغلال. سنقوم أيضًا بدراسة كيفية OPSWAT MetaDefender Coreوخاصةً Software Bill of Materials (SBOM) يمكن الاستفادة من محركه لاكتشاف هذه الثغرات الأمنية والتخفيف من حدتها، مما يمكّن مطوري البرمجيات وفرق الأمن من البقاء متقدمين بخطوة على التهديدات المحتملة.
خلفية عن CVE-2023-23924
اكتُشفت ثغرة أمنية في الإصدار 2.0.1 من dompdf وتم الإعلان عنها في بداية عام 2023:
- يمكن تجاوز التحقق من صحة URI في dompdf 2.0.1 في تحليل SVG عن طريق تمرير
<image>
بأحرف كبيرة. يسمح ذلك للمهاجمين باستدعاء عناوين URL عشوائية باستخدام بروتوكولات عشوائية، مما يؤدي إلى إلغاء تسلسل الكائنات العشوائية في إصدارات PHP قبل الإصدار 8.0.0. من خلال غلاف عنوان URL PHAR، يمكن أن تتسبب هذه الثغرة في حذف الملفات عشوائيًا وحتى تنفيذ التعليمات البرمجية عن بُعد، اعتمادًا على الفئات المتاحة. - قام محللو NVD بتعيين درجة CVSS 9.8 CRITICAL لـ CVE-2023-23924.
فهم ثغرة Dompdf
لفهم الثغرة الأمنية CVE-2023-23924 في dompdf بشكل كامل، من الضروري أن نتعرف على تقنيتين مرتبطتين بشكل وثيق: الرسومات المتجهة القابلة للتطوير (SVG) وملفات PHAR.
SVG (الرسومات المتجهة القابلة للتطوير) هو تنسيق صور متعدد الاستخدامات اكتسب شعبية واسعة النطاق نظرًا لقدرته على عرض رسومات عالية الجودة على الويب مع الحفاظ على خفة وزنه وقابليته للتطوير. على عكس الصور النقطية، تعتمد SVGs على ترميز XML، مما يسمح بالتحكم الدقيق في عناصر مثل الخطوط والأشكال والنصوص. تتمثل إحدى المزايا الرئيسية لصور SVGs في قدرتها على التوسع بسلاسة دون فقدان جودة الصورة، مما يجعلها مثالية لتصميم الويب سريع الاستجابة وشاشات العرض عالية الدقة.
PHAR (أرشيف PHP) مماثل لمفهوم ملف JAR ولكن ل PHP. فهو يسمح بالتثبيت السهل عن طريق تجميع كل كود PHP وملف الموارد في ملف أرشيف واحد.
يتكون ملف PHAR من 4 أقسام:
- الدعامات: تحتوي على التعليمات البرمجية لتمهيد الأرشيف.
- البيان: يحتوي على البيانات الوصفية للأرشيف. يتم تخزين البيانات الوصفية بصيغة متسلسلة، والتي يمكن استخدامها لتشغيل هجوم PHP desialized في ملف PHAR ضار.
- محتوى الملف: يحتوي على محتوى الأرشيف، بما في ذلك كود PHP وملفات الموارد.
- التوقيع (اختياري): يحتوي على بيانات للتحقق من سلامة الملف.
نظرًا لأن البيانات الوصفية يتم تخزينها بتنسيق متسلسل، فإن الجمع بين غلاف PHAR والبيانات الوصفية لملف PHAR يمكن أن يؤدي إلى هجوم إلغاء التسلسل عند استخدامه كمدخلات في دوال PHP مثل file_get_contents()، fopen()، file()، file_exists()، md5_file()، filemtime(),
أو حجم الملف()
. يمكن لهذه الهفوة الأمنية أن تمكن المهاجمين من تنفيذ تعليمات برمجية عن بعد عبر ملف PHAR.
كيفية إنشاء Dompdf لملف PDF
من خلال التحليل، حدد زملاء الدراسات العليا OPSWAT أن هناك ثلاث مراحل أثناء عملية التحويل على dompdf. لتحويل ملف HTML إلى تنسيق PDF، تقوم مكتبة dompdf أولاً بتحليل ملف الإدخال إلى شجرة DOM وتخزين معلومات تحديد الموقع والتخطيط لكل كائن. بعد ذلك، يتم تحليل تصميم CSS وتطبيقه على كل كائن. وأخيرًا، يُعاد تنظيم الكائنات لتتناسب مع الصفحة وتُعرض في ملف PDF النهائي.
لتعزيز الأمان، يقوم dompdf بتنفيذ عملية التحقق من الصحة لضمان سلامة مدخلات URI قبل الانتقال إلى الخطوة التالية. تتضح عملية التحقق من الصحة هذه أثناء معالجة ملف SVG ضمن قيمة رابط xlink:href
السمة.
إذا كان ملف الإدخال SVG يحتوي على <image>
علامة تحت علامة <svg>
يتم تنفيذ شرط يسمح فقط ببروتوكولات معينة، مثل http://
, https://
و file://
لـ رابط xlink:href
المجال.
إن حل_url()
ستقوم الدالة بالتحقق من صحة URI قبل معالجتها مع رسم صورة()
الوظيفة. إذا لم يكن المخطط في URI من بين البروتوكولات المسموح بها، فإن حل_url()
ستعيد الدالة استثناءً إلى التطبيق.
إذا اجتاز URI عملية التحقق، فسيتم تمريره بعد ذلك إلى رسم صورة()
التي تستخدم الدالة ملف_احصل_على_المحتويات()
للتعامل مع قيمة URI داخل دالة رابط xlink:href
السمة. تنشأ الثغرة الأمنية عند هذه النقطة: يمكن تشغيل هجوم إلغاء تهيئة PHAR إذا تمكن المهاجم من تجاوز التحقق من الصحة وتمرير غلاف PHAR إلى URI.
بعد التحليل، تم اكتشاف أن التحقق من الصحة يتم فرضه فقط على العلامات التي تحمل صورة الاسم بالضبط.
وبالتالي، يمكن تجاوزه بسهولة عن طريق كتابة حرف واحد أو أكثر بأحرف كبيرة في اسم اسم العلامة، مثل Image. ونتيجةً لذلك، يمكن لملف SVG مصمم خصيصًا باستخدام صورة بدلاً من صورة أن يتجنب هذا التحقق من الصحة.
في الخطوة اللاحقة، فإن رسم صورة()
يتم استدعاء الدالة، وتمرير URI من ملف SVG إلى ملف_احصل_على_المحتويات()
الدالة. وبالتالي، فإن الجمع بين تجاوز التحقق من الصحة وهجوم إعادة التهيئة على ملف PHAR يسمح للمهاجم بإجراء تنفيذ التعليمات البرمجية عن بُعد. تفتح هذه الثغرة الباب أمام مهاجم ضار لاختراق خادم التطبيق من خلال ملف SVG إذا تمت معالجته بواسطة إصدار ضعيف من dompdf.
محاكاة استغلال Dompdf
لمحاكاة هذا الاستغلال كسيناريو في العالم الحقيقي، طوّر زملاء الدراسات العليا OPSWAT تطبيق ويب يضم تحويل HTML إلى PDF باستخدام مكتبة dompdf الإصدار 2.0.1. يسمح هذا التطبيق للمستخدمين بتحميل أنواع ملفات مثل HTML أو XML أو SVG، ثم تحويلها إلى ملفات PDF.
سيقوم المهاجم باتباع الخطوات التالية لاستغلال هذه الثغرة في تطبيق يستخدم إصدار dompdf الضعيف (الإصدار 2.0.1):
أولاً، يُنشئ المهاجم كائنًا ضارًا ينشئ غلافًا عكسيًا عند استدعاء المُدمِّر.
ثانياً، يقوم المهاجم بإنشاء ملف PHAR يحتوي على كائن البيانات الوصفية الضارة. عندما يتم استدعاء ملف PHAR من قِبل مُجمّع PHAR في ملف_احصل_على_المحتوى()
يتم إلغاء تسلسل البيانات الوصفية ومعالجة الكائن المحدد. أثناء عملية إلغاء التسلسل هذه، تُشغّل الدالة المُدمِرات وتنفذ الصدفة العكسية.
في النهاية، يقوم المهاجم بتضمين رابط URI الذي يحتوي على غلاف PHAR في قيمة رابط xlink:href
في علامة الصورة لتجاوز التحقق من الصحة، وتنفيذ تعليمات برمجية ضارة، وتحميل هذا الملف الضار إلى التطبيق.
أثناء معالجة ملف SVG الضار الذي تم تحميله، يقوم التطبيق بإنشاء اتصال عكسي مع المهاجم، مما يمكّنه من اختراق خادم التطبيق.
تأمين المكونات مفتوحة المصدر باستخدام OPSWAT MetaDefender Core
لاكتشاف الثغرة الأمنية CVE-2023-23924 في دومبدف والتخفيف من حدتها، استخدم زملاؤنا الخريجون OPSWAT MetaDefender Core ، وهو منتج أمن إلكتروني متعدد الطبقات يقدم تقنيات متقدمة للوقاية من البرمجيات الضارة واكتشافها، بما في ذلك SBOM.
OPSWAT تعمل SBOM على تأمين سلسلة توريد البرمجيات من خلال توفير مخزون شامل للمكونات الخاصة بالشيفرة المصدرية والحاويات. من خلال تحليل مكتبة dompdf وتوابعها، يمكن لـ OPSWAT SBOM تحديد وجود الإصدار 2.0.1 الضعيف بسرعة وتنبيه المستخدمين إلى المخاطر المحتملة.
بالإضافة إلى ذلك، يمكن لـ OPSWAT SBOM اكتشاف التقنيات ذات الصلة، مثل ملفات SVG و PHAR، والتي تعتبر ضرورية لفهم الثغرة الأمنية CVE-2023-23924 والتخفيف من حدتها. هذه النظرة الشمولية لمكونات برمجيات التطبيق تمكّن فرق الأمن من اتخاذ قرارات مستنيرة واتخاذ الإجراءات المناسبة لمعالجة المخاطر المحددة.
بالإضافة إلى الكشف عن إصدار dompdf الضعيف، يوفر OPSWAT SBOM أيضًا رؤى قيمة حول المكونات المتأثرة وإصداراتها وأي تحديثات أو تصحيحات متاحة. تسمح هذه المعلومات لفرق الأمن بتحديد أولويات جهود الإصلاح والتأكد من تحديث التطبيق إلى إصدار آمن من dompdf، ومعالجة الثغرة CVE-2023-23924 بشكل فعال.
ومن خلال الاستفادة من محرك SBOM ضمن MetaDefender Core ، يمكن للمؤسسات مراقبة سلسلة توريد برمجياتها بشكل استباقي، وتحديد نقاط الضعف المحتملة في المكونات مفتوحة المصدر، وتنفيذ استراتيجيات التخفيف من المخاطر في الوقت المناسب، مما يضمن أمن وسلامة تطبيقاتها بشكل عام.
الأفكار إغلاق
يؤكد اكتشاف الثغرة CVE-2023-23924 في مكتبة dompdf على الحاجة الماسة إلى اليقظة في المشهد الديناميكي لأمن التطبيقات. ومن خلال الاستفادة من الرؤى والاستراتيجيات الموضحة في هذه المدونة، يمكن لفرق الأمن اكتشاف هذه الثغرات الأمنية والتخفيف من حدتها وحماية تطبيقاتهم من هذه الثغرات بفعالية، مما يضمن الأمن والسلامة العامة لمنظومتهم البرمجية.