شعار زيفيرنت

تعرض سلسلة توريد PHP Packagist للتخريب من قِبل مخترق "يبحث عن وظيفة"

التاريخ:

لقد كتبنا عن PHP Packagist النظام البيئي قبل.

مثل PyPI لـ Pythonistas أو Gems لعشاق Ruby أو NPM لمبرمجي JavaScript أو LuaRocks لـ Luaphiles ، يعد Packagist مستودعًا حيث يمكن للمساهمين المجتمعيين نشر تفاصيل حزم PHP التي قاموا بإنشائها.

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

على عكس PyPI ، التي توفر خوادمها الخاصة حيث يتم تخزين رمز المكتبة الفعلي (أو LuaRocks ، الذي يخزن أحيانًا كود مصدر المشروع نفسه وأحيانًا روابط إلى مستودعات أخرى) ، يرتبط Packagist بالشفرة التي تستخدمها ، ولكنها لا تحتفظ بنفسها بنسخ منها بحاجة للتنزيل.

هناك جانب إيجابي للقيام بذلك بهذه الطريقة ، لا سيما أن المشاريع التي تتم إدارتها عبر خدمات كود المصدر المعروفة مثل GitHub لا تحتاج إلى الاحتفاظ بنسختين من إصداراتها الرسمية ، مما يساعد على تجنب مشكلة "انحراف الإصدار" بين نظام التحكم في كود المصدر ونظام التعبئة والتغليف.

وهناك جانب سلبي ، لا سيما أن هناك حتمًا طريقتان مختلفتان يمكن أن يتم تفخيخ الحزم فيهما.

يمكن اختراق مدير الحزم نفسه ، حيث قد يكون تغيير عنوان URL واحدًا كافيًا لتضليل مستخدمي الحزمة.

أو يمكن اختراق مستودع كود المصدر المرتبط به ، بحيث ينتهي الأمر بالمستخدمين الذين يتابعون ما يشبه عنوان URL الصحيح بمحتوى مخادع على أي حال.

تعتبر الحسابات القديمة ضارة

هذه مهاجمة (سنسميها ذلك ، على الرغم من عدم نشر أي كود مفخخ من قبل المتسلل المعني) استخدم ما يمكن أن تسميه نهجًا مختلطًا.

وجد المهاجم أربعة حسابات Packagist قديمة وغير نشطة حصلوا من أجلها بطريقة ما على كلمات مرور تسجيل الدخول.

ثم حددوا 14 مشروعًا على GitHub كانت مرتبطة بهذه الحسابات غير النشطة ونسخوا لهم حسابًا تم إنشاؤه حديثًا على GitHub.

أخيرًا ، قاموا بتعديل الحزم في نظام Packagist للإشارة إلى مستودعات GitHub الجديدة.

يعد استنساخ مشاريع GitHub أمرًا شائعًا بشكل لا يصدق. في بعض الأحيان ، يرغب المطورون في إنشاء نسخة أصلية (نسخة بديلة) من المشروع تحت إدارة جديدة ، أو تقديم ميزات مختلفة ؛ في أوقات أخرى ، يبدو أنه يتم نسخ المشاريع المتشعبة لما قد يُطلق عليه بشكل غير مبهج "أسباب حجمية" ، مما يجعل حسابات GitHub تبدو أكبر وأفضل وأكثر انشغالًا وأكثر التزامًا بالمجتمع (إذا كنت ستعفو عن التورية) مما هي عليه بالفعل.

على الرغم من أن المخترق كان بإمكانه إدخال رمز خادع في مصدر GitHub PHP المستنسخ ، مثل إضافة أدوات تعقب أو برامج تسجيل لوحة مفاتيح أو أبواب خلفية أو برامج ضارة أخرى ، يبدو أن كل ما قاموا بتغييره كان عنصرًا واحدًا في كل مشروع: ملف يسمى composer.json.

يتضمن هذا الملف إدخال بعنوان description، والتي تحتوي عادةً على ما تتوقع رؤيته بالضبط: سلسلة نصية تصف الغرض من شفرة المصدر.

وهذا كل ما قام الهاكر بتعديله ، بتغيير النص من شيء إعلامي ، مثل Project PPP implements the QQQ protocol so you can RRR، بحيث ذكرت مشاريعهم بدلاً من ذلك:

 Pwned بواسطة XXX@XXXX.com. Ищу работу на позиции تطبيق الأمان ، جهاز اختبار الاختراق ، أخصائي الأمن السيبراني.

الجملة الثانية ، نصفها باللغة الروسية ، والنصف الآخر باللغة الإنجليزية ، وتعني:

 أبحث عن وظيفة في مجال أمن التطبيقات ... إلخ.

لا يمكننا التحدث نيابة عن الجميع ، ولكن مع استمرار السير الذاتية ، لم نجد هذه السيرة الذاتية مقنعة بشكل رهيب.

أيضا، يقول فريق Packagist أن جميع التغييرات غير المصرح بها قد تم إرجاعها الآن ، وأن مشاريع GitHub الأربعة عشر المستنسخة لم يتم تعديلها بأي طريقة أخرى غير تضمين طلب التوظيف من صاحب العمل.

مقابل ما يستحق ، لا يزال حساب GitHub لخبير أمان التطبيقات نشطًا ، ولا يزال يحتوي على تلك المشاريع "المتشعبة" فيه.

لا نعرف ما إذا كان GitHub لم يتحول بعد إلى حذف الحساب أو المشاريع ، أو ما إذا كان الموقع قد قرر عدم إزالتها.

بعد كل شيء ، يعد إنشاء المشروعات أمرًا شائعًا ومسموحًا به (حيث تسمح شروط الترخيص بذلك ، على الأقل) ، وعلى الرغم من وصف مشروع التعليمات البرمجية غير الضار بالنص Pwned by XXXX@XXXX.com غير مفيد ، فهو بالكاد غير قانوني.

ماذا ستفعلين.. إذًا؟

  • لا تفعل هذا. من المؤكد أنك لن تجتذب اهتمام أي صاحب عمل شرعي ، و (إذا كنا صادقين) فلن تثير إعجاب أي محتال إلكتروني هناك أيضًا.
  • لا تترك الحسابات غير المستخدمة نشطة إذا كان بإمكانك مساعدتها. كما قلنا يوم أمس اليوم العالمي لكلمة المرور، ضع في اعتبارك إغلاق الحسابات التي لم تعد بحاجة إليها ، على أساس أنه كلما قل عدد كلمات المرور المستخدمة ، قل عدد السرقات التي تتم سرقتها.
  • لا تعيد استخدام كلمات المرور في أكثر من حساب. يفترض Packagist أن كلمات المرور التي تم إساءة استخدامها في هذه الحالة كانت موجودة في سجلات خرق البيانات من حسابات أخرى حيث استخدم الضحايا نفس كلمة المرور المستخدمة في حساب Packagist الخاص بهم.
  • لا تنس المصادقة الثنائية الخاصة بك. يحث Packagists جميع مستخدميها على تشغيل 2FA ، لذا فإن كلمة المرور وحدها لا تكفي للمهاجمين لتسجيل الدخول إلى حسابك ، ويوصون بفعل الشيء نفسه على حساب GitHub أيضًا.
  • لا تقبل بشكل أعمى تحديثات سلسلة التوريد دون مراجعتها للتأكد من صحتها. إذا كانت لديك شبكة معقدة من تبعيات الحزمة ، فمن المغري أن تتجاهل مسؤولياتك جانباً وأن تترك النظام يجلب جميع تحديثاتك تلقائيًا ، ولكن هذا يعرضك أنت ومستخدميك في نهاية المطاف لمخاطر إضافية.

ها هي هذه النصيحة من اليوم العالمي لكلمة المرور


بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة