حملهٔ دوبارهٔ Shai-Hulud به npm
خلاصهٔ کاملتر
تیم تحقیقات امنیتی JFrog میگه نسخهٔ تازهای از بدافزار زنجیرهٔ تأمین Shai-Hulud رو شناسایی کرده که بیش از ۴۰۰ پکیج npm تو بیش از ۱۷۰۰ نسخه رو آلوده کرده. شروع ماجرا از keyv نسخهٔ ۶.۰.۰ و cacheable نسخهٔ ۲.۵.۱ بوده؛ دوتا کتابخانهٔ کش پرکاربرد که keyv وابستگی غیرمستقیم خیلی از ابزارهای معروفه. به گفتهٔ JFrog اگه نسخهٔ آلوده رو نصب کردین، محیطتون رو آلوده فرض کنین.
پیلود یه فایل جاوااسکریپت ۷۱۰ کیلوبایتیه که موقع نصب از راه هوک preinstall اجرا میشه. یه بوتاسترپ کوچیک اول دنبال bun نصبشده میگرده و اگه نبود، Bun 1.3.13 رو از گیتهاب میگیره، پیلود اصلی رو اجرا میکنه و بعد نسخهٔ موقت Bun رو پاک میکنه. یه نکتهٔ مهم هم هست: روی npm نسخهٔ ۱۲ به بعد هوکهای preinstall بهصورت پیشفرض اجرا نمیشن، پس بدافزار موقع نصب راه نمیافته.
بخش خطرناک ماجرا کرمواره بودنشه. وقتی جمعکننده یه توکن npm پیدا میکنه، اول چک میکنه که اون توکن اجازهٔ نوشتن روی پکیج و دور زدن احراز هویت دومرحلهای رو داشته باشه. بعد برای هر پکیجی که با اون توکن قابل انتشاره، آخرین نسخه رو دانلود میکنه، فایلهای خودش رو توش میذاره، کل بخش scripts پکیج رو بازنویسی میکنه، شمارهٔ نسخه رو یکی بالا میبره و دوباره منتشرش میکنه.
روی گیتهاب دو مسیر داره. با توکن دزدیدهشده پنج فایل رو تو مسیرهای .vscode و .claude مخزن کامیت میکنه، طوری که فقط باز کردن پروژه تو VS Code یا شروع یه نشست Claude باعث اجرای پیلود بشه. مسیر دوم مخصوص توکنهاییه که دسترسی workflow دارن: یه ورکفلوی جعلی با اسم بیخطر اضافه میکنه که کل secrets مخزن رو توی یه آرتیفکت مینویسه، و بعد ورکفلو و شاخهٔ موقت رو پاک میکنه تا ردی نمونه.
دامنهٔ جمعآوری راز خیلی وسیعه: توکن پکیجمنیجرها، تنظیمات AWS و Azure و GCP، کانفیگ Kubernetes و Helm، فایلهای .env، کلیدهای SSH، پروفایلهای VPN و اعتبارنامهٔ ابزارهای هوش مصنوعی. آدرس سرور فرماندهی هم توی نمونه ثابت نیست و از یه قرارداد هوشمند روی شبکهٔ اتریوم خونده میشه؛ اگه اون در دسترس نباشه، بدافزار سراغ جستوجوی یه نشانهٔ متنی خاص تو کامیتهای عمومی گیتهاب میره.
نکات کلیدی:
- آلودگی از keyv 6.0.0، cacheable 2.5.1 و خانوادهٔ @keyv و @cacheable شروع شده
- بدافزار همزمان دزد اعتبارنامه، کرم npm و آلودهکنندهٔ مخزن گیتهابه
- روی npm نسخهٔ ۱۲ و بالاتر هوک preinstall پیشفرض اجرا نمیشه
- اگه نسخهٔ آلوده اجرا شده، فقط حذف پکیج کافی نیست؛ توکنهای npm و گیتهاب و بقیهٔ رازها باید باطل و جایگزین بشن
- ماشینهای CI رو باید از ایمیج تمیز بازسازی کرد، نه پاکسازی
- همهٔ شاخههای مخزن (نه فقط شاخهٔ اصلی) رو برای فایلهای هوک تو .vscode و .claude بررسی کنین




