آخرین اخبار
همهٔ اخبار
بدافزار و تروجان گزارش بحرانیت ۸/۱۰

کشف بسته مخرب npm با ۲ میلیون دانلود؛ پنهان‌سازی بدافزار در کد زمان اجرا (Runtime)

کشف بسته مخرب npm با ۲ میلیون دانلود؛ پنهان‌سازی بدافزار در کد زمان اجرا (Runtime)

یک بسته مخرب در مخزن npm که در ظاهر یک ابزار معمولی برای نمایه‌سازی داده‌ها (Data-indexing) بود، ضعف‌های موجود در دفاع‌های زنجیره تأمین نرم‌افزاری (Software Supply Chain) را آشکار کرد. این بسته با نام indexed-btree، با جعل هویت کتابخانه معتبر sorted-btree، موفق شد تقریباً دو میلیون دانلود هفتگی جذب کند.

رویکرد نوین در فعال‌سازی بدافزار

ویژگی متمایز این کمپین این است که بدافزار در هنگام نصب توسط توسعه‌دهنده اجرا نمی‌شود. برخلاف بسیاری از حملات مشابه، این بسته هیچ دستور preinstall یا postinstall در پیکربندی خود ندارد؛ بنابراین بررسی‌های سریع امنیتی که تنها بر اسکریپت‌های نصب متمرکز هستند، این بسته را ایمن تشخیص می‌دهند. بدافزار در متد BTree.prototype.set قرار گرفته است؛ متدی که احتمالاً هنگام ذخیره داده‌ها در برنامه فراخوانی می‌شود. در این لحظه است که کد مخرب فعال شده و یک مؤلفه مرحله اول (First-stage) مبهم شده (Obfuscated) را اجرا می‌کند.

استفاده از بلاک‌چین برای فرماندهی و کنترل (C2)

در مرحله اول، بدافزار اطلاعاتی نظیر معماری سیستم‌عامل، نام میزبان، پردازنده، حافظه و مدت زمان فعال بودن سیستم (Uptime) را جمع‌آوری کرده و به سرورهای مهاجم ارسال می‌کند. نکته قابل توجه این است که مهاجمان به جای استفاده از سرورهای C2 سنتی، از یک Smart Contract در شبکه تست Ethereum Sepolia برای مدیریت دستورات استفاده کرده‌اند. این طراحی مبتنی بر بلاک‌چین، متوقف کردن عملیات را دشوار می‌کند، زیرا قرارداد هوشمند می‌تواند در صورت مسدود شدن یک مقصد، بدافزار را به آدرس جایگزینی هدایت کند.

مراحل نهایی و پاک‌سازی اثرات

پس از تبادل کلیدهای رمزنگاری، بدافزار داده‌های رمزگذاری شده را از قرارداد هوشمند دریافت کرده و Payload مرحله دوم را بازسازی و اجرا می‌کند. همچنین، این بسته دارای توابعی برای حذف فایل‌های بدافزار و پاک کردن اثرات فعال‌ساز از متدهای Prototype است تا شناسایی آن در تحلیل‌های پس از حادثه دشوارتر شود.

توصیه‌های امنیتی برای تیم‌های SOC و مهندسین

  • بررسی Runtime: تیم‌های امنیتی نباید نبود اسکریپت‌های چرخه حیات (Lifecycle Scripts) را دلیل ایمن بودن یک بسته بدانند. بررسی رفتار کد در زمان اجرا ضروری است.
  • مانیتورینگ محیط‌های CI/CD: اجرای بسته‌های مشکوک در محیط‌های ایزوله (Sandbox) و نظارت بر فرایندهای فرزند (Child Processes)، تغییرات سیستم‌فایل و تماس‌های شبکه توصیه می‌شود.
  • مدیریت وابستگی‌ها: استفاده از نسخه‌های تثبیت شده (Pinned Versions)، به‌روزرسانی SBOM و الزام تأییدیه برای افزودن بسته‌های جدید یا تغییرات ناگهانی در وابستگی‌ها ضروری است.