با ایجاد یک بسته NPM که به تمام بسته های موجود در مخزن وابسته است، آزمایش کنید

یکی از توسعه دهندگان بسته های جاوا اسکریپت با ایجاد و قرار دادن بسته "همه چیز" در مخزن NPM آزمایش کرد که تمام بسته های موجود در مخزن را با وابستگی ها پوشش می دهد. برای پیاده سازی این ویژگی، بسته "همه چیز" دارای وابستگی های مستقیم با پنج بسته "@everything-registry/chunk-N" است که به نوبه خود به بیش از 3000 بسته "sub-chunk-N" وابستگی دارند که هر یک به آن متصل می شوند. 800 بسته موجود در مخزن.

قرار دادن «همه چیز» در NPM دو اثر جالب داشت. اولاً، بسته "همه چیز" به نوعی ابزار برای انجام حملات DoS تبدیل شده است، زیرا تلاش برای نصب آن منجر به دانلود میلیون ها بسته میزبانی شده در NPM و تخلیه فضای موجود دیسک یا توقف اجرای فرآیندهای ساخت می شود. طبق آمار NPM، این بسته حدود 250 بار دانلود شده است، اما پس از هک شدن حساب توسعه دهنده برای انجام خرابکاری، هیچ کس زحمت اضافه کردن آن را به عنوان یک وابستگی به بسته دیگری نمی دهد. علاوه بر این، برخی از سرویس ها و ابزارهایی که بسته های جدید میزبانی شده توسط NPM را نظارت و بررسی می کنند، ناخواسته در معرض حمله قرار گرفتند.

ثانیاً، انتشار بسته "همه چیز" به طور موثری توانایی حذف هر بسته ای را در NPM که در لیست وابستگی های آن قرار می گرفت مسدود کرد. یک بسته از NPM تنها در صورتی می تواند توسط نویسنده حذف شود که قبلاً در وابستگی های بسته های دیگر استفاده نشده باشد، اما پس از انتشار "همه چیز" وابستگی ها مشخص شد که تمام بسته های موجود در مخزن را پوشش می دهد. قابل توجه است که حذف خود بسته "همه چیز" نیز مسدود شد، زیرا 9 سال پیش یک بسته آزمایشی "همه چیز-دیگر" در مخزن پست شد که شامل رشته "همه چیز" در لیست وابستگی ها بود. بنابراین، پس از انتشار، بسته "همه چیز" به بسته دیگری وابسته شد.

منبع: opennet.ru

اضافه کردن نظر