امروزه یکی از تهدیدات روزافزون، حمله به زنجیرهی تأمین نرمافزار (Supply Chain Attack) است؛ جایی که مهاجمان با کاشت کد مخرب در کتابخانههای ظاهراً معتبر، کنترل مستقیم روی سیستم توسعهدهنده یا سرورهای تولیدی به دست میآورند. گزارش اخیر شرکت Socket یکی از همین حملات را افشا کرده: سه بستهی مخرب در مخزن npm که خود را جایگزین Telegram Bot API جا زدهاند، اقدام به نصب SSH Backdoor و سرقت اطلاعات روی سیستمهای Linux میکنند.
این سه بستهی npm را نصب نکنید
مهاجمان با هدف فریب توسعهدهندگان Node.js، سه بستهی زیر را در npm منتشر کردهاند:
node-telegram-utils (132 دانلود)
node-telegram-bots-api (82 دانلود)
node-telegram-util (73 دانلود)
این بستهها بهظاهر مشابه کتابخانهی معروف node-telegram-bot-api
هستند که در هفته بیش از 100,000 بار نصب میشود. اما پشت صحنه، این پکیجها دارای اسکریپتهایی هستند که پس از نصب روی سیستمهای Linux، اقدام به اجرای عملیات مخرب میکنند.
استفاده از Starjacking برای فریب توسعهدهندگان
یکی از فریبهای هوشمندانهای که مهاجمان استفاده کردهاند، Starjacking است. در این روش، بستهی مخرب به جای آنکه GitHub Repository واقعی خود را معرفی کند، لینک مربوط به یک پروژهی محبوب و معتبر(در اینجا node-telegram-bot-api) را به عنوان مخزن معرفی میکند. به این ترتیب، توسعهدهندگان فریب میخورند و تصور میکنند پکیج مذکور معتبر است و تعداد زیادی "" star در گیتهاب دارد.
npm و سایر مخازن open-source در حال حاضر مکانیزم بررسی مالکیت این GitHub لینکها را ندارند، که باعث میشود حملاتی از این دست امکانپذیر شوند.
جزئیات رفتار مخرب: نصب SSH Key و ارسال beacon
بهمحض نصب، بستهها بررسی میکنند که سیستم عامل میزبان Linux باشد. اگر چنین باشد، اسکریپت فعال شده و اقدامات زیر را انجام میدهد:
- اضافه کردن دو SSH Key به فایل ~/.ssh/authorized_keys
- جمع اوری نام کاربری سیستم username
- دریافت آدرس IP عمومی از طریق
ipinfo.io/ip
- ارسال beacon به دامنهی مشکوک solana.validator[.]blog برای اعلام آلودگی
مهمتر اینکه حتی اگر کاربر این پکیجها را حذف کند، دسترسی SSH به مهاجم همچنان باقی میماند، چون کلیدها به صورت دائمی در فایل authorized_keys نوشته شدهاند.
به گفته ی Kush Pandya، پژوهشگر امنیتی در Socket، فقط یک نصب کافیست تا مسیر برای نفوذ گسترده و دسترسی غیرمجاز به دادهها باز شود.
حتما بخوانید: 🚨 هشدار امنیتی ASUS: آسیبپذیری خطرناک در روترهایAiCloud؛ کاربران فوراً Firmware را بهروزرسانی کنند.
تهدید دوم: Reverse Shell در پکیج پرداخت ارز دیجیتال
Socketدر گزارشی دیگر، Socket پکیج مخربی با نام @naderabdi/merchant-advcash را شناسایی کرده که وانمود میکند ابزاری برای پذیرش پرداختهای کریپتو یا فیات است. اما این پکیج دارای یک Reverse Shell است که تنها زمانی فعال میشود که کاربر تابع payment success handler را فراخوانی کند.
به عبارت دیگر، این کد مخرب نه هنگام نصب و نه هنگام import اجرا نمیشود، بلکه در زمان اجرا (runtime) و تنها در سناریوی خاص فعال میشود. این تکنیک باعث میشود تا بسیاری از ابزارهای امنیتی و اسکنرهای خودکار قادر به شناسایی این پکیج نباشند.
چرا این حملات حتی با تعداد دانلود پایین خطرناکند؟
ممکن است تصور شود که چون این بستهها فقط چند ده بار نصب شدهاند، تهدید جدی محسوب نمیشوند. اما در دنیای Supply Chain Attacks اینگونه نیست. حتی اگر تنها یک توسعهدهندهی کلیدی یا یک سرور حیاتی آلوده شود، مهاجمان میتوانند:
- به مخازن کد داخلی دسترسی پیدا کنند
- اطلاعات کاربری، tokenها، یا SSH Keyهای دیگر را سرقت کنند
- به صورت جانبی به سیستمهای دیگر نفوذ کنند (Lateral Movement)
- بدافزار خود را در زیرساختهای CI/CD منتشر کنند
توصیههای امنیتی برای توسعهدهندگان Node.js
- به نام پکیجها دقت کنید – تنها از منابع معتبر و شناختهشده استفاده کنید. حتی تفاوت یک خط تیره یا حرف در نام پکیج میتواند نشانهی یک حمله باشد.
- وابستگیها را با ابزارهای امنیتی بررسی کنید – از ابزارهایی مانند Socket، Snyk یا npm audit استفاده کنید.
- سیستم را برای SSH Keyهای مشکوک بررسی کنید – فایل authorized_keys را بهصورت دورهای بررسی کرده و کلیدهای ناشناخته را حذف کنید.
- مراقب لینکهای GitHub در npm باشید – ستارههای گیتهاب همیشه به معنای اعتبار پکیج نیستند.
- امنیت در زمان اجرا را نیز جدی بگیرید – تنها اسکن نصب کافی نیست؛ بعضی از Payloadها مانند Reverse Shell ممکن است فقط در زمان اجرای برنامه فعال شوند.
نتیجهگیری
ماجرای این بستههای npm یادآور این نکته است که تهدیدات زنجیرهی تأمین نرمافزار بسیار واقعی و پیچیدهاند. برای جامعهی توسعهدهندگان، مهم است که هوشیار باقی بمانند و صرفاً به ظاهر بستهها اعتماد نکنند.