در یک حمله زنجیره تأمین npm، مهاجمان نسخهای مخرب از پکیج Jscrambler را منتشر کردند که به بدافزار رباینده اطلاعات (Infostealer) مجهز بود و در مدت کوتاهی نزدیک به 1,500 بار دانلود شد. در این حمله زنجیره تأمین npm، مهاجمان نسخههای مخربی از پکیج Jscrambler منتشر کردند؛ نسخههایی که میتوانستند اطلاعات حساسی مانند اعتبارنامههای توسعهدهندگان، توکنهای دسترسی و دادههای محیطهای توسعه را در اختیار مهاجمان قرار دهند.
انتشار نسخه آلوده پکیج Jscrambler و آغاز حمله زنجیره تأمین npm
در این حمله زنجیره تأمین npm، نسخههای 8.14، 8.16، 8.17 و 8.20 بهصورت نسخههای مخرب منتشر شدند. این نسخهها شامل بدافزار رباینده اطلاعات بودند که از طریق هوک پیش از نصب (preinstall) در فرآیند نصب پکیج اجرا میشد و کد مخرب را روی سیستم توسعهدهندگان فعال میکرد. مهاجمان با سوءاستفاده از این مکانیزم، امکان دسترسی به اطلاعات حساس موجود در محیطهای توسعه را فراهم کردند.
به گفته Jscrambler، این رخداد تنها به همین پکیج محدود بود و هیچیک از محصولات دیگر این شرکت، از جمله Webpage Integrity (یکپارچگی صفحات وب) تحت تأثیر آن قرار نگرفتند.
با وجود واکنش سریع Jscrambler، نسخه آلوده پکیج حدود دو ساعت در مخزن npm باقی ماند؛ سپس توسعهدهندگان آن را منسوخ (Deprecated) کردند و نسخه امن 8.22 را در دسترس کاربران قرار دادند.
همچنین این پکیج آلوده بهعنوان وابستگی نرمافزاری (Dependency) برای چهار پکیج دیگر Jscrambler استفاده میشد. این چهار پکیج نیز پس از شناسایی مشکل توسط Jscrambler منسوخ شدند و نسخههای جدید آنها جایگزین شد.
دادههای آماری رجیستری npm نشان میدهد که نسخه آلوده این پکیج در همان بازه دو ساعته، 1,479 بار دانلود شده است.
پکیج Jscrambler چگونه هدف مهاجمان قرار گرفت؟
Jscrambler یک پلتفرم تجاری امنیتی است که برای محافظت از اپلیکیشنهای جاوااسکریپت (JavaScript) تحت وب و موبایل در برابر مهندسی معکوس و دستکاری کد طراحی شده است.
پکیج npm این شرکت بهطور میانگین حدود 17 هزار دانلود هفتگی دارد و به توسعهدهندگان اجازه میدهد کدهای جاوااسکریپت خود را به سرویس Jscrambler ارسال کنند تا از تغییرات غیرمجاز و دستکاریهای احتمالی محافظت شود. این فرآیند به جلوگیری از تغییرات بلادرنگ (Real-time) مانند تزریق کد مخرب کمک میکند.
شرکت امنیت اپلیکیشن Socket نخستین بار این حمله زنجیره تأمین npm را شناسایی کرد و نسخه غیرمجاز پکیج Jscrambler را مورد بررسی و تحلیل قرار داد. پژوهشگران Socket اعلام کردند نسخه آلوده این پکیج حاوی یک بدافزار رباینده اطلاعات بود که طیف گستردهای از دادههای حساس از جمله موارد زیر را هدف قرار میداد:
- کدهای منبع و فایلهای پروژه
- اعتبارنامهها و اطلاعات محرمانه توسعهدهندگان شامل اطلاعات گیت (Git)، کلیدهای SSH، متغیرهای محیطی و توکنهای CI/CD
- اعتبارنامههای سرویسهای ابری و سامانههای مدیریت اطلاعات محرمانه شامل آمازون وب سرویس (AWS)، آژور (Azure)، جیسیپی (GCP) و کوبرنیتز (Kubernetes)
- ابزارهای برنامهنویسی مبتنی بر هوش مصنوعی و پیکربندیهای MCP شامل کلود (Claude)، کرسر (Cursor)، ویندسرف (Windsurf)، ویژوال استودیو کد (VS Code) و زد (Zed)
- کیف پولهای رمزارزی و عبارتهای بازیابی (Seed Phrase) شامل متاماسک (MetaMask)، فانتوم (Phantom)، کوینبیس (Coinbase)، اکسودوس (Exodus) و تراست ولت (Trust Wallet)
- دادههای مرورگر شامل کوکیها و اطلاعات ورود ذخیرهشده
- اطلاعات موجود در اپلیکیشنهای پیامرسان و همکاری تیمی مانند اسلک (Slack)، دیسکورد (Discord) و تلگرام
استفاده از رمزنگاری پیشرفته برای پنهانسازی بدافزار
بر اساس تحلیل Socket، بدافزار در این حمله زنجیره تأمین npm از تکنیک مبهمسازی در سطح رشتهها (Per-string Obfuscation) بهره میبرد. این بدافزار با استفاده از الگوریتم رمزنگاری ChaCha20-Poly1305 بخشهایی از کد مخرب خود را پنهان میکرد تا تحلیل آن برای پژوهشگران امنیتی دشوارتر شود.
این تکنیک باعث شد فرآیند بررسی کد مخرب و مهندسی معکوس آن پیچیدهتر شود و شناسایی عملکرد واقعی بدافزار به تحلیلهای دقیقتر و زمان بیشتری نیاز داشته باشد.
اقدامات امنیتی Jscrambler پس از حمله زنجیره تأمین npm
به گفته Jscrambler، منشأ این رخداد به سوءاستفاده از اعتبارنامههای انتشار پکیج در npm (npm Publishing Credentials) بازمیگردد. این شرکت پس از شناسایی نفوذ، اعتبارنامههای افشاشده را باطل (Revoke) کرد تا از سوءاستفاده بیشتر جلوگیری شود.
Jscrambler پس از این رخداد، اقدامات امنیتی جدیدی را در پایپلاین انتشار پکیجها اجرا کرد تا فرآیند انتشار پکیجها با سطح امنیتی بالاتری انجام شود و ریسک حملات مشابه کاهش یابد.
توسعهدهندگانی که نسخههای آلوده پکیج npm را نصب کردهاند، باید فرض را بر نفوذ به محیطهای توسعه خود بگذارند و این محیطها را غیرقابل اعتماد تلقی کنند. آنها باید تمامی اطلاعات محرمانه، کلیدهای دسترسی و اعتبارنامههای مرتبط را تغییر داده و سیستمهای خود را از نسخههای پشتیبان سالم بازیابی کنند.
همچنین Jscrambler به مشتریان خود توصیه کرده است اطمینان حاصل کنند که از جدیدترین نسخه استفاده میکنند تا در برابر تهدیدات احتمالی محافظت شوند.
