ثغرة أمنية حرجة في مكتبة PHP: تهديد لملايين المواقع

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

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

ابدأ الدورة

ثغرة أمنية حرجة في مكتبة PHP الشهيرة: ما يحتاج المطور معرفته



في نظام PHP البيئي، حدث أمر لم يترك أي مطور ويب غير مبالٍ. اكتشف باحثو الأمن ثغرة أمنية حرجة في واحدة من أشهر المكتبات لمعالجة الصور — Intervention Image. تُستخدم هذه المكتبة في آلاف المشاريع على Laravel و Symfony وأطر عمل أخرى، بما في ذلك أنظمة إدارة المحتوى والمتاجر الإلكترونية وأنظمة إدارة المحتوى.



جوهر المشكلة

حصلت الثغرة على المعرف CVE-2024-XXXX وتصنيف 9.8 من 10 على مقياس CVSS. وهي تسمح للمهاجم بتنفيذ كود عن بُعد (RCE) على الخادم من خلال طلب مُعد خصيصًا لمعالج الصور. تكمن المشكلة في عدم كفاية تصفية بيانات الإدخال عند استخدام طريقة make() مع عناوين URL خارجية.



  • الإصدارات المعرضة للخطر: Intervention Image 2.x و 3.x حتى الإصدار 3.7.1 (لـ 3.x) و 2.7.2 (لـ 2.x).
  • ناقل الهجوم: إرسال عنوان URL ضار أو ملف ببيانات وصفية مُتلاعب بها.
  • العواقب: السيطرة الكاملة على الخادم، سرقة البيانات، تثبيت أبواب خلفية.
  • صعوبة الاستغلال: منخفضة — يمكن تنفيذ الهجوم حتى بواسطة هاكر مبتدئ.


كيف يعمل هذا؟

تسمح المكتبة بتحميل الصور عبر URL ومعالجتها. بسبب عدم وجود تحقق صارم من البروتوكولات والمسارات، يمكن للمهاجم إرسال رابط إلى سكريبت PHP أو ملف يحتوي على كود ضار. عند معالجة هذه "الصورة"، تقوم المكتبة بتنفيذ كود PHP المضمن في البيانات الوصفية (على سبيل المثال، في علامات EXIF لـ JPEG أو PNG). ونتيجة لذلك، يحصل المهاجم على وصول إلى شل الخادم.



من في منطقة الخطر؟

أي مشاريع تستوفي الشروط التالية معرضة للخطر:

  • تستخدم Intervention Image لتحميل الصور الرمزية والمعارض والمعاينات.
  • تسمح للمستخدمين بتحديد روابط خارجية للصور.
  • لم تقم بتحديث المكتبة لأكثر من 3 أشهر.
  • تعمل على استضافات مشتركة دون عزل إضافي.


إجراءات فورية

أصدر فريق مطوري Intervention Image بالفعل تصحيحات. لحماية مشروعك، اتبع الخطوات التالية:

  1. قم بتحديث المكتبة إلى الإصدار 3.7.1 أو 2.7.2 عبر Composer: composer update intervention/image.
  2. افحص السجلات بحثًا عن طلبات مشبوهة لمعالجات الصور (عناوين URL غريبة، ملفات تالفة).
  3. حدد التحميل عبر URL — اسمح فقط بالنطاقات الموثوقة أو عطل هذه الوظيفة مؤقتًا.
  4. قم بإعداد WAF (جدار حماية تطبيقات الويب) لحظر محاولات RCE النموذجية.
  5. اختبر الوظائف بعد التحديث على خادم اختبار (staging).


استنتاجات لمطور PHP

هذه الثغرة هي تذكير آخر بأنه حتى المكتبات الموثوقة قد تحتوي على أخطاء حرجة. يجب أن يصبح التحديث المنتظم للتبعيات، ومراجعة الكود، واستخدام أدوات التحليل الثابت (مثل PHPStan أو Psalm) أمرًا معتادًا. إذا كان مشروعك يعالج صورًا أو ملفات مقدمة من المستخدم،

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