تم التعرف على ثغرة أمنية في Composer تؤدي إلى اختراق مستودع Packagist PHP

قبل بضعة أيام اندلعت أنباء تفيد بتحديد ثغرة خطيرة en مدير التبعية ملحن (CVE-2021-29472) الذي يسمح لك بتشغيل أوامر عشوائية على النظام عند معالجة حزمة بقيمة عنوان URL تم تكوينها خصيصًا لتحديد اتجاه تنزيل التعليمات البرمجية المصدر.

تتجلى المشكلة في مكونات GitDriver و SvnDriver و HgDriver تستخدم مع أنظمة التحكم في المصدر Git و Subversion و Mercurial. تم إصلاح الثغرة الأمنية في إصدارات Composer 1.10.22 و 2.0.13.

على وجه الخصوص ، يتأثر بشكل خاص مستودع حزم Packagist الافتراضي الخاص بـ Composer ، والذي يحتوي على 306.000 حزمة مطور PHP ويوفر أكثر من 1.400 مليار عملية تنزيل شهريًا.

في نظام PHP البيئي ، يعد Composer الأداة الرئيسية لإدارة وتثبيت تبعيات البرامج. تستخدمه فرق التطوير حول العالم لتسهيل عملية الترقية وضمان تشغيل التطبيقات دون عناء عبر جميع البيئات والإصدارات.

أظهرت التجربة أنه في حالة وجود معلومات حول المشكلة ، يمكن للمهاجمين التحكم في البنية التحتية Packagist واعتراض بيانات اعتماد المشرفين أو إعادة توجيه تنزيل الحزم إلى خادم جهة خارجية ، مع ترتيب تسليم متغيرات الحزمة مع التغييرات. المستخدمين الضارين لاستبدال باب خلفي أثناء تثبيت التبعية.

الخطر على المستخدمين النهائيين محدود يرجع ذلك إلى حقيقة أن محتوى composer.json يتم تحديده عادةً بواسطة المستخدم ويتم تمرير الروابط إلى المصدر عند الوصول إلى مستودعات الطرف الثالث ، والتي عادةً ما تكون موثوقة. سقطت الضربة الرئيسية على مستودع Packagist.org وخدمة Packagist الخاصة ، التي تستدعي Composer مع نقل البيانات الواردة من المستخدمين. يمكن للمهاجمين تشغيل التعليمات البرمجية الخاصة بهم على خوادم Packagist عن طريق إسقاط حزمة معدة خصيصًا.

حل فريق Packagist الثغرة الأمنية في غضون 12 ساعة من الإشعار من الضعف. أبلغ الباحثون مطوري Packagist بشكل خاص في 22 أبريل ، وتم إصلاح المشكلة في نفس اليوم. تم إصدار تحديث الملحن العام مع إصلاح للثغرة الأمنية في 27 أبريل ، وتم الكشف عن التفاصيل في 28 أبريل. لم يكشف تدقيق السجلات على خوادم Packagist عن أي نشاط مشبوه مرتبط بالثغرة الأمنية.

أخطاء حقن الوسيطة هي فئة مثيرة للاهتمام حقًا من الأخطاء التي غالبًا ما يتم تجاهلها أثناء مراجعات الكود ويتم تجاهلها تمامًا في تفاعلات الصندوق الأسود.

سبب المشكلة هو خطأ في رمز التحقق من صحة عنوان URL في ملف composer.json الجذر وفي روابط تنزيل المصدر. كان الخطأ موجودًا في التعليمات البرمجية منذ نوفمبر 2011. يستخدم Packagist طبقات خاصة لإدارة تنزيلات التعليمات البرمجية دون التقيد بنظام تحكم مصدر معين ، والذي يتم تنفيذه عن طريق استدعاء "fromShellCommandline" باستخدام وسيطات سطر الأوامر.

جوهر المشكلة هو أن طريقة ProcessExecutor سمحت لك بتحديد أي معلمات استدعاء إضافية في عنوان URL. كان هذا الهروب مفقودًا في برامج تشغيل GitDriver.php و SvnDriver.php و HgDriver.php. تم إعاقة هجوم GitDriver.php بسبب حقيقة أن الأمر "git ls-remote" لا يدعم تحديد وسيطات إضافية بعد المسار.

كان الهجوم على HgDriver.php ممكنًا بتمرير المعلمة "–config" إلى الأداة المساعدة "hq" ، والتي تسمح بتنظيم تنفيذ أي أمر من خلال معالجة التكوين "alias.identify".

من خلال إرسال حزمة اختبار بعنوان URL مشابه لـ Packagist ، تأكد الباحثون من أنه بعد نشرها ، تلقى خادمهم طلب HTTP من أحد خوادم Packagist على AWS يحتوي على قائمة بالملفات الموجودة في الدليل الحالي.

وتجدر الإشارة إلى أن القائمين على الصيانة لم يحددوا أي علامات على الاستغلال المسبق لهذه الثغرة الأمنية في الحالة العامة للرازم.

أخيرًا ، إذا كنت مهتمًا بمعرفة المزيد عنها ، يمكنك الرجوع إلى التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.