در جریان یک حمله جدید به زنجیره تامین از نوع Mini Shai-Hulud، بیش از 2,200 نسخه مخرب از 440 پکیج در مخزن NPM منتشر شده است. این بدافزار با هدف سرقت و استخراج اطلاعات حساس و همچنین انتشار خودکار از طریق اعتبارنامههای سرقتشده NPM و GitHub طراحی شده است.
این کارزار که ChainDrop نام گرفته است، پس از دسترسی غیرمجاز مهاجمان به حساب GitHub توسعهدهنده اصلی، با 11 بدافزار اولیه در فضای نامهای keyv و cacheable آغاز شد. پکیجهای آلودهشده در مجموع بیش از 500 میلیون بار در هفته دانلود میشوند و به صورت گسترده در زیستبوم برنامهنویسی مورد استفاده قرار میگیرند. آلودگی این پکیجها در نهایت منجر به آلودهشدن 433 پکیج دیگر نیز شد.
پکیجهای آلودهشده همانند حملات قبلی Mini Shai-Hulud، کدهای مخرب را در طول فرآیند نصب اجرا کرده و یک استخراجکننده اطلاعات با قابلیت انتشار خودکار را روی سیستم پیادهسازی میکنند. بدافزار در ماشینهای آلوده تمامی اطلاعات حساس و کلیدهای دسترسی قابل پیدا کردن را هدف قرار داده، آنها را رمزنگاری میکند و سپس دادهها را به یک آدرس HTTPS پویا یا مخازن عمومی GitHub ایجادشده توسط مهاجمان با توضیحات Shai-Hulud: Here We Go Again ارسال مینماید.
طبق توضیحات Microsoft، بدافزار پس از اجرا، ایستگاههای کاری توسعهدهندگان و محیطهای یکپارچهسازی و تحویل مداوم (CI/CD) را برای یافتن اعتبارنامههای NPM، GitHub، سرویسهای ابری و زیرساختی جستجو میکند. این بدافزار با استفاده از هویتهای بازیابیشده، در خدمات NPM، GitHub، Amazon Web Services (AWS)، Kubernetes و HashiCorp Vault احراز هویت کرده و امکان شناسایی و فهرستبرداری پکیجها، مخازن، کلیدهای امنیتی گردش کار، پارامترهای ابری و مقادیر ذخیرهشده در مخازن کلید را به دست میآورد.
بر اساس گزارش JFrog، بدافزار علاوه بر این، از توکنهای سرقتشده NPM برای انتشار نسخههای آلوده از هر پکیجی که در ماشین آلوده به آن دسترسی دارد استفاده میکند. همچنین از اعتبارنامههای سرقتشده GitHub و قابلیت GitHub Actions برای آلودهسازی مخازن بیشتر به منظور سرقت اطلاعات استفاده مینماید.
به گفته Microsoft، بدافزار پس از دریافت توکن انتشار NPM، پکیجهای در دسترس هویت نفوذیافته را فهرست کرده، آخرین فایلهای tarball آنها را دانلود میکند، بدافزار و بارگذار را درون آنها قرار میدهد، یک قلاب preinstall اضافه میکند، شماره نسخه patch را افزایش داده و پکیجهای تغییریافته را مجدداً منتشر مینماید. این بدافزار همچنین میتواند از اعتبارنامههای سرقتشده GitHub برای تزریق فایلهای پیکربندی Claude و Visual Studio Code به مخازن استفاده کند تا دسترسی پایدار ایجاد کرده و مسیر جدیدی برای آلودهسازی از توسعهدهنده به توسعهدهنده به وجود آورد.
به گفته شرکت StepSecurity، از آنجا که بدافزار بسیاری از نسخههای قدیمی پکیجهای آسیبدیده را مجدداً منتشر کرده است، تعداد کل تکرارهای پکیجهای مخرب مشاهدهشده در تاریخ 4 اوت ظرف مدت کمتر از چهار ساعت به 2,212 مورد رسید.
تمامی نسخههای پکیجهای آلودهشده حاوی یک قطعه کد اولیه preinstall بودند که برای دانلود محیط اجرای واقعی Bun JavaScript به همراه 710 کیلوبایت کد مرحله دوم درهمریخته که بدافزار اصلی را تشکیل میداد، طراحی شده بود.
این بدافزار که نسخهای تکاملیافته از کرم Shai-Hulud 2.0 است، از بلاکچین Ethereum برای فرماندهی و کنترل (C&C) استفاده میکند؛ تکنیکی که EtherHiding نامیده میشود.
طبق اعلام شرکت Socket، این کرم یک کلید قطعی در سطح میزبان نیز نصب میکند. پس از ایجاد دسترسی پایدار در سیستمعاملهای macOS و Linux، بدافزار هر 60 ثانیه یکبار با استفاده از توکن سرقتشده GitHub قربانی، رابط برنامهنویسی API مربوط به GitHub را فراخوانی میکند و در صورتی که کارکرد توکن متوقف شود، وضعیت خود را پاک کرده و خارج میشود. این بدافزار همچنین پس از 24 ساعت به صورت خودکار خود را پاکسازی میکند.
توسعهدهندگان NPM که هر یک از نسخههای آلوده این پکیجها را نصب کردهاند باید دستگاههای خود را آلودهشده تلقی کنند. به آنها توصیه میشود بدافزار را حذف کرده، اجراکنندههای CI و ماشینهای ساخت را مجدداً بازسازی نمایند، اعتبارنامههای احتمالاً افشاشده را باطل و جایگزین کنند و مخازن GitHub خود را از نظر فعالیتهای غیرعادی بررسی نمایند.
شرکت JFrog توصیه میکند که سیستمهای متاثر ایزوله شوند و فایلهای tarball پکیجها، لاگهای npm، لاگهای CI، لاگهای حسابرسی GitHub و ایمیجهای اجراکننده پیش از پاکسازی حفظ شوند، زیرا برای تعیین بازه زمانی مواجهه با این تهدید به آنها نیاز خواهد بود.