حمله ای به NPM که به شما امکان می دهد وجود بسته ها را در مخازن خصوصی تعیین کنید

یک اشکال در NPM شناسایی شده است که به شما امکان می دهد وجود بسته ها را در مخازن خصوصی تعیین کنید. این مشکل به دلیل زمان های مختلف پاسخ در هنگام درخواست یک بسته موجود و غیر موجود توسط کاربر شخص ثالثی است که به مخزن دسترسی ندارد. در صورت عدم دسترسی برای هیچ بسته ای در مخازن خصوصی، سرور registry.npmjs.org خطایی با کد "404" برمی گرداند، اما اگر بسته ای با نام درخواستی وجود داشته باشد، خطا با تاخیر قابل توجهی صادر می شود. مهاجم می تواند از این ویژگی برای تعیین وجود بسته با جستجوی نام بسته ها از فرهنگ لغت استفاده کند.

تعیین نام بسته ها در مخازن خصوصی ممکن است برای انجام یک حمله اختلاط وابستگی که محل تلاقی نام های وابستگی را در مخازن عمومی و داخلی دستکاری می کند، مورد نیاز باشد. با دانستن اینکه کدام بسته‌های NPM داخلی در مخازن شرکتی هستند، مهاجم می‌تواند بسته‌هایی را با نام‌های مشابه و شماره نسخه‌های جدیدتر در یک مخزن عمومی NPM قرار دهد. اگر هنگام ساخت، کتابخانه های داخلی به طور صریح در تنظیمات به مخزن خود پیوند داده نشده باشند، مدیر بسته npm مخزن عمومی را به عنوان اولویت در نظر گرفته و بسته تهیه شده توسط مهاجم را دانلود می کند.

GitHub در ماه مارس از این مشکل مطلع شد، اما به دلیل محدودیت‌های معماری، از افزودن محافظت در برابر حمله خودداری کرد. به شرکت‌هایی که از مخازن خصوصی استفاده می‌کنند، توصیه می‌شود که به‌صورت دوره‌ای نام‌های همپوشانی را در مخزن عمومی بررسی کنند، یا از طرف خود، با نام‌هایی که نام بسته‌ها را کپی می‌کنند، در مخازن خصوصی، موارد خرد ایجاد کنند تا مهاجمان نتوانند بسته‌های خود را با نام‌های همپوشانی قرار دهند.

منبع: opennet.ru

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