حمله کرم خودتکثیرکننده به بیش از ۱۸۰ پکیج برنامه‌نویسی جاوااسکریپت!

اگه برنامه‌نویس جاوااسکریپت باشین یا با پکیج‌های npm (همون مخزن بزرگی که توش کلی ابزار و ماژول برای برنامه‌نویسی جاوااسکریپت پیدا میشه) سروکار دارین، باید مواظب یه کرم جدید به اسم Shai-Hulud باشین! این کرم مثل فیلم‌های علمی‌تخیلی عمل می‌کنه؛ یعنی خودش رو بین پکیج‌ها تکثیر می‌کنه و اطلاعات محرمانه رو می‌دزده و یک جوری پخش می‌کنه که انگار هیچی نشده.

ماجرا از این قراره که حداقل ۱۸۷ تا از این پکیج‌ها آلوده شدن و این کرم نه‌تنها اطلاعات ورود (مثل توکن‌های دسترسی و رمز) برنامه‌نویس‌ها رو می‌دزده، بلکه خیلی خونسرد میاد این اطلاعات رو تو یه مخزن عمومی توی GitHub آپلود می‌کنه! اونم هر بار که یه نفر یه پکیج آلوده رو نصب کنه، تعداد بیشتری رمز و کلید در حال پخش شدنه!

اسم این کرم یعنی Shai-Hulud رو از اون کرم‌های غول‌پیکر تو رمان‌های Dune الهام گرفتن، چون دقیقاً مثل یه موجود بزرگ و بی‌رحم همه‌جا پخش میشه و خرابکاری راه می‌اندازه. هر پکیجی که توسط این کرم آلوده بشه، تو پوشه GitHub شخص قربانی، یک repo جدید با اسم Shai-Hulud می‌سازه و اطلاعات دزدیده شده رو اون‌جا پابلیک می‌کنه!

از اون طرف، این کرم تازه بعد از یک حمله فیشینگ بزرگتر به npm سر و کله‌ش پیدا شد. همون موقع یه عده به اسم تیم امنیتی CrowdStrike و چند پکیج حسابی معروف مثل nx (که هفته‌ای تا ۶ میلیون بار دانلود میشه!) هدف قرار گرفتن. تو این حمله‌ها، کد مخرب اومده سراغ پیدا کردن انواع رمزها و کلیدهای لاگین، مثل کلیدهای SSH و توکن‌های GitHub و API keyها (این کلیدها برای ارتباط بین سرویس‌ها استفاده میشن) و هرچی پیدا کرده رو عمومی کرده!

توی حمله nx کد مخرب مثل کرم خودش رو تکثیر نمی‌کرد، ولی Shai-Hulud دقیقاً این کار رو می‌کنه، و حتی از ابزار TruffleHog هم استفاده می‌کنه؛ TruffleHog یه ابزار که مخصوص گشتن دنبال رمز و کلیدهای لو رفته روی کامپیوتر برنامه‌نویساست. بعدش هم با سوءاستفاده از GitHub Actions، رمزها رو پیدا و منتشر می‌کنه.

یه نکته بامزه اینه که طراحی این حمله طوریه که فقط روی لینوکس و مک جواب میده و سیستم‌های ویندوز رو کاملاً رد می‌کنه! (یعنی فعلاً بچه‌های ویندوز خیالشون راحت باشه، ولی باز احتیاط کنین).

روش کار Shai-Hulud اینطوریه: اگر موقع نصب یک پکیج آلوده، تو محیط برنامه‌نویسی یه توکن npm پیدا کنه، همون لحظه خودش رو تو ۲۰ تا از معروف‌ترین پکیج‌هایی که اون توکن دسترسی داره کپی و نسخه جدید منتشر می‌کنه! اینجوری اگه یک نفر آلوده بشه می‌تونه راحت همه پکیج‌های دیگه رو هم آلوده کنه – یک اثر دومینویی عجیب درست میشه. مثلاً StepSecurity توضیح داده که اینجوری کرم با سوءاستفاده از اکانت قربانی، کل پروژه‌هایی که مدیریت می‌کنه رو به زنجیره‌آلودگی می‌کشه.

شرکت CrowdStrike گفته که بخش اصلی محصولاتش که برای تشخیص تهدیدها استفاده میشه (یعنی Falcon sensor)، اصلاً از این پکیج‌ها استفاده نمی‌کنه و مشتری‌هاش آسیبی ندیدن، ولی سریعاً پکیج‌های آلوده رو پاک کرده و کلیدهای امنیتی رو عوض کرده. همینطور تیم npm و socket.dev و Aikido هم سریعاً وارد عمل شدن تا جلوی گسترش بیشتر کرم رو بگیرن.

تحقیقات نشون داده Shai-Hulud فقط دنبال رمزهای مخصوص کلود مثل AWS، Azure و Google Cloud Platform هم میگرده (یعنی رمز سرویس‌های ابری رو می‌زنه!). فعلاً خبر خوب اینه که سرعت پخش شدنش کم شده، چون آدرس وبی که ژولیده‌ها برای انتقال داده می‌فرستادنش محدود شده، ولی همونطوری که محقق‌ها هشدار دادن، اگه فقط یک نفر دیگه دوباره آلوده بشه، ممکنه زنجیره آلوده‌سازی دوباره راه بیفته. خلاصه این کرم واقعاً مثل یه ویروس زنده عمل می‌کنه!

در آخر، Nicholas Weaver از دانشگاه کالیفرنیا گفت این یه حمله Supply Chainه واقعا؛ یعنی حمله به زنجیره توزیع نرم‌افزار. به زبان ساده یعنی اگر تو نقطه‌ای از زنجیره یه قسمت آلوده بشه، می‌تونه خیلی راحت همه رو آلوده کنه. به نظر اون، وقتشه که مخازن پکیج مثل npm اجباراً هر بار انتشار جدید با تأییدیه انسانی و احراز هویت دو مرحله‌ای (2FA که باهاش موقع ورود خودش مطمئن میشه کسی فیشینگ نکرده) کار کنن. فقط با این روش میشه جلوی پخش این مدل حمله‌ها رو گرفت وگرنه باید همیشه آماده جنگ با کرم‌های جدید باشیم.

پس اگر این روزا با npm سروکار دارین، بد نیست حسابی حواستون به پکیج‌هایی که نصب می‌کنین باشه و همیشه اطلاعات ورود و رمزاتون رو مثل بچه‌چشمتون مراقبت کنین!

منبع: +