دستکاری پکیج‌های npm و فعال‌سازی تروجان در Node.js

توسعه‌دهندگانی که اخیراً نسخه‌های بتا دو پکیج npm در فضای نام @joyfill را به پروژه‌های خود اضافه کرده‌اند، با بسته‌ای کاملاً دستکاری‌شده مواجه شده‌اند که به‌محض بارگذاری عملیات یک تروجان دسترسی از راه دور را آغاز می‌کند. این حفره امنیتی که به خانواده بدافزاری DEV#POPPER تعلق دارد، کدهای مخرب را پنهان کرده و برای فرار از سیستم‌های تشخیص نسل پیش‌تر، مکانیزم‌های پیچیده‌ای را بر پایه شبکه‌های بلاک‌چین به کار گرفته است.

مکانیسم اجرا و پیکربندی بلاک‌چینی

پکیج‌های @joyfill/layouts@0.1.2-2773.beta.0 و @joyfill/components@4.0.0-rc24-2773-beta.4 حاوی یک ایمپلنت جاوااسکریپتی هستند که کدهای رمزگذاری‌شده را از طریق تراکنش‌های شبکه‌های Tron، Aptos و BNB Smart Chain (BSC) بازیابی می‌کند. برخلاف حملات رایج که معمولاً از قلاب‌های چرخه‌حیات npm فعال می‌شوند، این بدافزار بلافاصله هنگام فراخوانی نقطه‌ورود CommonJS در Node.js عملیات خود را شروع می‌سازد. تیم تحقیقاتی شرکت Socket در بررسی‌های فنی خود نشان داده است که استفاده از ساختار چندشبکه‌ای برای حل کد، به خوشهٔ تهدیدی PolinRider مرتبط است که پیش‌تر با کمپین Contagious Interview شناسایی شده است. این رویکرد یادآور روش‌های مشابه است که در پلتفرم بسته npm و زیرساخت‌های متن‌باز دیگر برای پنهان‌سازی بدافزارها به کار رفته است.

دو شاخه عملیاتی و پی‌لودهای موازی

بدافزار از دو مسیر موازی برای تضمین موفقیت عملیاتی خود استفاده می‌کند. شاخه اول یک پردازش درون‌محیطی است که به یک فایل جاوااسکریپتی 77 کیلوبایتی شبیه به DEV#POPPER می‌رسد. شاخه دوم یک پردازهٔ جداگانه Node.js را راه‌اندازی می‌کند، یک پی‌لود بوت را از آدرس 23.27.13[.]43 دریافت کرده و پس از رمزگشایی آن را اجرا می‌سازد. وقتی پکیج وارد پروژه می‌شود، ابتدا هش یک تراکنش BSC را از یک آدرس ثابت Tron استخراج می‌کند. در صورت عدم موفقیت، به‌عنوان جایگزین از یک حساب Aptos درخواست تراکنش می‌دهد. این معماری انعطاف‌پذیر به مهاجمان اجازه می‌دهد بدون انتشار نسخهٔ جدید پکیج‌ها، کدهای مخرب را به‌روزرسانی کرده و ردیابی را دشوارتر کنند.

قابلیت‌های تروجان و بدافزار سرقت اطلاعات

پی‌لود نهایی یا هم‌نام "clientCode"، پس از عبور از فیلترهایی که اجرای بر روی ماشین‌های مجازی توسعه و CI/CD را مسدود می‌کند، به‌عنوان یک RAT قدرتمند عمل می‌سازد. این تروجان توانایی‌های زیر را در اختیار مهاجم قرار می‌دهد:

  • آپلود فایل‌های دزدی‌شده به سرور فرمان و کنترل
  • بارگذاری و اجرای اسکریپت‌های جاوااسکریپت اضافه
  • جمع‌آوری اطلاعات پایهٔ سیستم و ثبت وضعیت
  • کپی‌برداری مستقیم از کلیپ‌بورد سیستم‌عامل (با استفاده از PowerShell، pbpaste یا xclip)

در شاخهٔ جداگانه، علاوه بر RAT، یک بدافزار پایتونی از نوع OmniStealer نیز شناسایی شده که می‌تواند دسترسی‌های زیر را هدف قرار دهد:

  • اطلاعات محیطی و مشخصات سخت‌افزاری
  • داده‌های Windows Credential Manager و Linux Secret Service
  • تاریخچه مرورگرها، پسوردها و افزونه‌های کیف پول
  • اعتبارنامه‌های Git، تنظیمات GitHub CLI و لاگ‌های VS Code

تحلیل تهدید و اقدامات مقابله‌ای

گزارش‌های امنیتی نشان می‌دهد که دو سری پکیج مخرب ViteVenom و این حملهٔ جدید، همگی زیر چتر یک عملیات امنیتی با رگ‌وبند کرهٔ شمالی فعالیت می‌کنند. مهاجمان با شناسایی یک هویت واحد در مخزن npm و بهره‌گیری از Node.js 18.20.0، کدها را به‌صورت مستقیم در فایل‌های باندل تزریق کرده‌اند. هنوز مشخص نیست این نفوذ از طریق ایستگاه‌‌های توسعه، محیط‌های CI/CD یا سرقت کلمات عبور انجام شده است. برای مقابله با این تهدید، توسعه‌دهندگان باید فوراً نسخه‌های آلوده را از فایل‌های lock، کش محلی، آینه‌های داخلی، تصاویر داکر و آرتیفکت‌های استقرار حذف کنند. به‌کارگیری نسخه‌های تأییدشده، تغییر تمام کلمات عبور مرتبط با پایگاه‌های کد و محیط‌های اجرای Node.js و فعال‌سازی مکانیزم‌های امضای پکیج ضروری است. شرکت‌های امنیتی تأکید می‌کنند که @joyfill/layouts به‌گونه‌ای طراحی شده که قادر به اجرای خودکار کد در هر پردازهٔ اجرایی است؛ محیطی که شامل CI Runners، سرورهای رندرینگ و ابزارهای تست می‌شود.

این رویداد هشداری جدی برای اکوسیستم متن‌باز و وابستگی‌های سلسله‌مراتبیِ پکیج‌دهی است. با افزایش پیچیدگی زنجیرهٔ ابزارهای توسعه، تکیهٔ صرف بر ابزارهای اسکن کد سنتی دیگر پاسخگو نیست و توسعه‌دهندگان باید مرزهای بین اعتماد و احراز هویت را با دقت بیشتری مدیریت کنند.