بدافزار CanisterWorm
یک حمله پیچیده زنجیره تأمین که در ابتدا اسکنر پرکاربرد Trivy را هدف قرار میداد، به یک حمله گستردهتر تبدیل شده و بستههای npm متعددی را تحت تأثیر قرار داده است. عاملان تهدید پشت این کمپین مظنون به استقرار یک کرم خودانتشارشونده که قبلاً مستند نشده بود و CanisterWorm نام دارد، هستند که به طور قابل توجهی مقیاس و تأثیر نفوذ را افزایش میدهد.
این بدافزار نام خود را از استفاده از یک پروتکل کامپیوتر اینترنتی (ICP) به عنوان بخشی از زیرساخت فرماندهی خود گرفته است. این اولین نمونه مستند عمومی از استفاده از کپسولهای ICP برای بازیابی نقاط پایانی فرماندهی و کنترل (C2) است که یک تاکتیک جدید و مقاوم را معرفی میکند که تلاشهای سنتی برای کاهش خطرات را پیچیده میکند.
فهرست مطالب
بستههای آلوده و بردار دسترسی اولیه
این حمله چندین بسته npm را در حوزههای مختلف تحت تأثیر قرار داده است و شعاع وسیعی از حملات را در زنجیره تأمین نرمافزار نشان میدهد:
- ۲۸ بسته تحت پوشش @EmilGroup
- ۱۶ بسته تحت پوشش @opengov
- بستههای اضافی شامل @teale.io/eslint-config، @airtm/uuid-base32 و @pypestream/floating-ui-dom
این کمپین دقیقاً پس از یک نفوذ به اعتبارنامهها آغاز شده است که مهاجمان را قادر ساخت نسخههای مخربی از ابزارهای مرتبط با Trivy، بهویژه trivy، trivy-action و setup-trivy، که حاوی قابلیتهای سرقت اعتبارنامه بودند، منتشر کنند. اعتقاد بر این است که این عملیات با یک گروه مجرمان سایبری متمرکز بر فضای ابری به نام TeamPCP مرتبط است.
گردش کار عفونت و زیرساخت فرماندهی غیرمتمرکز
زنجیرهی آلودگی در طول فرآیند نصب بستهی npm آغاز میشود، جایی که یک اسکریپت پس از نصب، یک لودر (loader) را اجرا میکند. این لودر یک درِ پشتی مبتنی بر پایتون را مستقر میکند که برای ارتباط با مخزن ICP طراحی شده است. مخزن به عنوان یک حلکنندهی dead drop عمل میکند و URLای را برمیگرداند که سیستم آلوده را به دانلود و اجرای بار دادهی مرحلهی بعدی هدایت میکند.
ماهیت غیرمتمرکز زیرساخت ICP مزیت قابل توجهی را برای مهاجمان فراهم میکند. از آنجایی که canister میتواند به صورت پویا URL مربوط به payload را بهروزرسانی کند، عاملان تهدید میتوانند فایلهای باینری مخرب جدید را در تمام سیستمهای آلوده توزیع کنند، بدون اینکه خود بدافزار مستقر شده را تغییر دهند. این معماری همچنین تلاشهای حذف را به طور قابل توجهی چالش برانگیزتر میکند.
مکانیسم پایداری و تکنیکهای مخفیکاری
ماندگاری از طریق ایجاد یک سرویس کاربر systemd که برای راهاندازی مجدد خودکار فرآیند مخرب پیکربندی شده است، حاصل میشود. ویژگیهای کلیدی عبارتند از:
- راهاندازی مجدد خودکار از طریق دستورالعمل Restart=always اعمال میشود
- تأخیر ۵ ثانیهای قبل از راهاندازی مجدد درِ پشتی در صورت خاتمه یافتن
- پنهان کردن سرویس به عنوان نرمافزار نظارتی قانونی PostgreSQL تحت نام «pgmon»
این رویکرد، عملکرد مداوم را تضمین میکند و در عین حال با ادغام شدن با سرویسهای سیستمی قانونی، احتمال شناسایی را به حداقل میرساند.
تحویل تطبیقی بار مفید و رفتار سوئیچ kill
این درِ پشتی به صورت دورهای هر ۵۰ دقیقه با ICP canister ارتباط برقرار میکند و برای جلوگیری از سوءظن، از یک مرورگر جعلی به نام User-Agent استفاده میکند. URL برگردانده شده، اقدام بعدی را تعیین میکند:
- اگر URL به یک payload معتبر اشاره کند، بدافزار آن را دانلود و اجرا میکند.
- اگر URL شامل «youtube.com» باشد، بدافزار وارد حالت خفته میشود.
این مکانیزم عملاً به عنوان یک کلید قطع دسترسی از راه دور عمل میکند. با تغییر URL مربوط به canister بین یک لینک یوتیوب بیخطر و یک payload مخرب، مهاجم میتواند بدافزار را در تمام سیستمهای آلوده فعال یا غیرفعال کند. نکته قابل توجه این است که payloadهای اجرا شده قبلی همچنان در پسزمینه اجرا میشوند، زیرا بدافزار فرآیندهای قبلی را خاتمه نمیدهد.
یک کلید قطع مشابه مبتنی بر یوتیوب نیز در یک فایل باینری تروجانشدهی Trivy (نسخهی ۰.۶۹.۴) مشاهده شده است که از طریق یک دراپر پایتون جداگانه با همان زیرساخت ICP ارتباط برقرار میکند.
قابلیتهای کرم و انتشار خودکار
در ابتدا، انتشار به یک اسکریپت دستی به نام deploy.js متکی بود که از توکنهای احراز هویت npm دزدیده شده برای تزریق کد مخرب به بستههای قابل دسترسی استفاده میکرد. این اسکریپت در حین نصب فعال نمیشد، بلکه به عنوان ابزاری مستقل برای گسترش دامنه حمله عمل میکرد.
انواع بعدی CanisterWorm به طور قابل توجهی تکامل یافتهاند. در نسخههای جدیدتر، مانند نسخههای موجود در @teale.io/eslint-config (نسخههای ۱.۸.۱۱ و ۱.۸.۱۲)، این کرم خود-تکثیری را مستقیماً در فرآیند نصب بسته گنجانده است. مکانیسم بهروزرسانیشده شامل موارد زیر است:
- استخراج توکنهای احراز هویت npm از محیط آلوده
- اجرای فوری روال انتشار به عنوان یک فرآیند پسزمینهی مجزا
- انتشار خودکار بستههای آلوده با استفاده از اعتبارنامههای جمعآوریشده
این تغییر، حمله را از یک کمپین دستی به یک سیستم انتشار کاملاً مستقل تبدیل میکند.
تشدید به یک تهدید خودکفا برای زنجیره تأمین
معرفی برداشت خودکار توکن و خود-انتشاری، نشاندهندهی یک تشدید بحرانی است. هر ایستگاه کاری توسعهدهنده یا خط لوله CI/CD که یک بستهی آلوده را نصب میکند و حاوی اعتبارنامههای npm قابل دسترسی است، به یک گرهی انتشار فعال تبدیل میشود. این یک اثر آبشاری ایجاد میکند که در آن بستههای آلوده منجر به آلودگیهای بیشتر در وابستگیهای پاییندستی میشوند.
در این مرحله، تهدید از نفوذ به حسابهای کاربری مجزا فراتر رفته و به یک اکوسیستم خودپایدار از توزیع بدافزار تبدیل میشود. هر محیط آلودهشده جدید به گسترش آن کمک میکند و رشد نمایی را ممکن میسازد و مهار آن را به طور قابل توجهی دشوارتر میکند.
آنچه نگرانیها را تشدید میکند، آزمایش مصنوعاتی مانند یک بار دادهی جاساز ('hello123') است که نشان میدهد مهاجمان قبل از استقرار فایلهای باینری مخرب کاملاً عملیاتی، بهطور فعال در حال پالایش و اعتبارسنجی زنجیرهی حمله هستند.