هجوم على NPM يسمح لك بتحديد وجود الحزم في المستودعات الخاصة

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

قد يكون تحديد أسماء الحزم في المستودعات الخاصة ضروريًا لتنفيذ هجوم خلط التبعية الذي يعالج تقاطع أسماء التبعيات في المستودعات العامة والداخلية. من خلال معرفة حزم NPM الداخلية الموجودة في مستودعات الشركة، يمكن للمهاجم وضع حزم بنفس الأسماء وأرقام الإصدارات الأحدث في مستودع NPM العام. إذا لم يتم ربط المكتبات الداخلية بشكل صريح بمستودعها في الإعدادات أثناء التجميع، فسيعتبر مدير حزم npm أن المستودع العام له أولوية أعلى وسيقوم بتنزيل الحزمة التي أعدها المهاجم.

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

المصدر: opennet.ru

إضافة تعليق