قم بتجربة إنشاء حزمة NPM تعتمد على جميع الحزم الموجودة في المستودع

قام أحد مطوري حزم JavaScript بتجربة إنشاء ووضع حزمة "كل شيء" في مستودع NPM والتي تغطي جميع الحزم الموجودة في المستودع مع التبعيات. ولتنفيذ هذه الميزة، تحتوي حزمة "كل شيء" على تبعيات مباشرة مع خمس حزم "@everything-registry/chunk-N"، والتي بدورها لها تبعيات على أكثر من 3000 حزمة "sub-chunk-N"، ترتبط كل منها بـ 800 حزمة موجودة في المستودع.

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

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

المصدر: opennet.ru

إضافة تعليق