
CVE-2012-1823 - حقن وسيطات PHP CGI وتنفيذ التعليمات البرمجية عن بُعد (RCE)
الخطورة: حرجة (CVSS 9.8)
CVE: CVE-2012-1823
تاريخ النشر: 11 مايو 2012
البرنامج المتأثر: PHP يعمل في وضع CGI (php-cgi)
نوع الثغرة: حقن الوسائط / تنفيذ التعليمات البرمجية عن بُعد (RCE)
ناقل الهجوم: الشبكة
المصادقة المطلوبة: لا شيء
تُعد CVE-2012-1823 واحدة من أهم ثغرات تنفيذ التعليمات البرمجية عن بُعد التي تم اكتشافها على الإطلاق في PHP. تؤثر هذه الثغرة على تثبيتات PHP المهيأة للعمل عبر واجهة البوابة المشتركة (CGI)، مما يسمح لمهاجم غير مصادق عليه بتنفيذ كود PHP تعسفي عن بُعد.
على عكس الثغرات التي تتطلب وجود عيوب داخل تطبيق ويب، فإن هذه المشكلة موجودة في PHP نفسها عند نشرها باستخدام php-cgi. ونظرًا لأن الثغرة تقع على مستوى المفسِّر، فإن كل تطبيق PHP مستضاف على خادم متأثر يصبح عرضة للاختراق، بغض النظر عمّا إذا كان التطبيق يحتوي على عيوب برمجية.
اكتسبت هذه الثغرة شهرة واسعة في عام 2012 بسبب بساطتها وموثوقيتها وانتشار استغلالها عبر الإنترنت. وحتى بعد سنوات من الإفصاح عنها، ما تزال عمليات المسح على مستوى الإنترنت تحدد الأنظمة المتأثرة، وما تزال الثغرة مدرجة ضمن أطر الاستغلال وأدوات الكشف الدفاعية. :contentReference[oaicite:0]{index=0}
توجد الثغرة داخل تنفيذ CGI في PHP (php-cgi).
في العادة، تُمرَّر معاملات استعلام HTTP إلى سكربتات PHP كمدخلات من المستخدم.
ومع ذلك، تعالج PHP بشكل غير صحيح سلاسل استعلام مصممة بعناية لا تحتوي على علامة يساوي (=).
بدلاً من التعامل مع سلسلة الاستعلام كبيانات مستخدم فحسب، تفسرها PHP عن طريق الخطأ على أنها وسائط سطر أوامر تُمرَّر مباشرة إلى ملف PHP التنفيذي.
ولأن PHP تدعم العديد من خيارات سطر الأوامر (مثل -d)، يمكن للمهاجم تجاوز خيارات إعداد PHP أثناء معالجة الطلب.
وهذا يسمح للمهاجم بـ:
السبب الجذري هو المعالجة غير السليمة لـ php_getopt() داخل:
sapi/cgi/cgi_main.c
وعلى وجه التحديد، فشلت PHP في تجاهل تحليل سطر الأوامر بشكل صحيح عند معالجة سلاسل استعلام خبيثة تفتقر إلى علامة يساوي (=). :contentReference[oaicite:1]{index=1}
يقبل ملف CGI التنفيذي معاملات سطر الأوامر.
على سبيل المثال:
php-cgi -d allow_url_include=1
في العادة، يجب أن تأتي هذه المعاملات من نظام التشغيل فقط.
بدلاً من ذلك، سمحت PHP بشكل غير صحيح لطلبات HTTP بحقن هذه المعاملات عبر عناوين URL مصممة بعناية.
وبالتالي، يمكن للمهاجم التلاعب بإعدادات PHP وقت التشغيل قبل تنفيذ السكربت المستهدف.
وقد أدى هذا فعليًا إلى تحويل طلب HTTP بسيط إلى تنفيذ أوامر ضد php-cgi.
إصدارات PHP التالية معرضة للخطر:
| الإصدار | الحالة |
|---|---|
| PHP < 5.3.12 | معرض |
| PHP 5.4.x < 5.4.2 | معرض |
فقط التثبيتات التي تستخدم وضع CGI (php-cgi) هي المتأثرة.
PHP التي تعمل كـ:
لا تتأثر عمومًا بثغرة CVE-2012-1823 نفسها. :contentReference[oaicite:2]{index=2}
يحتاج المهاجم فقط إلى:
الثغرة قابلة للاستغلال بالكامل عن بُعد.
يتبع الهجوم عادةً هذه المراحل:
بمجرد الحصول على تنفيذ الأكواد، يقوم المهاجمون عادةً بـ:
يؤدي الاستغلال الناجح إلى اختراق كامل لتطبيق PHP.
تشمل العواقب المحتملة:
إذا تم تنفيذ PHP بصلاحيات مرتفعة، فقد يكون اختراق النظام بالكامل ممكنًا أيضًا.
| المقياس | القيمة |
|---|---|
| النتيجة الأساسية | 9.8 |
| الخطورة | حرجة |
| ناقل الهجوم | الشبكة |
| تعقيد الهجوم | منخفض |
| الامتيازات المطلوبة | لا شيء |
| تفاعل المستخدم | لا شيء |
| السرية | عالية |
| التكامل | عالية |
| التوفر | عالية |
ساهمت عدة خصائص في جعل CVE-2012-1823 مؤثرة بشكل خاص:
أدى الجمع بين سهولة الاستغلال والتأثير الشديد إلى هجمات واسعة النطاق في العالم الحقيقي وإدراجها في كتالوج الثغرات المستغلة المعروفة (KEV) التابع لـ CISA. :contentReference[oaicite:4]{index=4}
يجب على المسؤولين التحقق من:
تشمل المؤشرات:
يمكن لأدوات الفحص الأمني مثل Nuclei وNessus وOpenVAS ووحدات Metasploit اكتشاف التكوينات المعرضة للخطر. :contentReference[oaicite:5]{index=5}
تشمل الإجراءات التخفيفية الموصى بها:
| التاريخ | الحدث |
|---|---|
| مايو 2012 | تم الإفصاح العلني عن الثغرة |
| مايو 2012 | تم إصدار التصحيحات الأمنية |
| 2012 | تم إصدار أدوات استغلال عامة |
| 2012 | تم نشر وحدة Metasploit |
| السنوات التالية | لوحظ استغلال واسع النطاق عبر الإنترنت |
| الوقت الحاضر | ما زالت تظهر في فحوصات الثغرات والأنظمة القديمة |
هذا المستودع مخصص فقط للأغراض التعليمية وأبحاث الأمن وتحليل الثغرات والاختبار الدفاعي. يجب استخدام أي معلومات واردة فيه فقط على الأنظمة التي لديك إذن صريح بها. الاستغلال غير المصرح به للأنظمة المعرضة للخطر غير قانوني وغير أخلاقي.