حمله زنجیره تأمین به پکیج PHP اینترکام در Packagist
خلاصهٔ کاملتر
مهاجمان پشت کمپین Mini Shai-Hulud که پیشتر در همین روز پکیج Lightning در PyPI رو آلوده کرده بودن، حالا دامنه حملاتشون رو به اکوسیستم PHP هم گسترش دادن. پکیج intercom/intercom-php نسخه 5.0.2 در Packagist با کد مخرب بازنویسی شده و به یک پلاگین Composer تبدیل شده که هنگام نصب اجرا میشه — یعنی حتی قبل از اینکه پکیج رو import کنی، آلودگی اتفاق افتاده.
پیلود مخرب از سیستم پلاگین Composer سوءاستفاده میکنه تا در زمان اجرای composer install یا composer update، ابتدا runtime جاوااسکریپت Bun رو دانلود کنه و بعد یک اسکریپت مبهمسازیشده اجرا کنه. این اسکریپت دنبال اعتبارنامههای حساس میگرده: توکنهای GitHub، کلیدهای SSH، اعتبارنامههای ارائهدهندههای ابری (AWS، GCP و...) و متغیرهای محیطی — بعد همه رو رمزگذاری کرده و به سرور C2 در zero.masscan.cloud ارسال میکنه. این همون پیلودیه که در کمپین npm هم استفاده شده بود.
این حمله با آلوده شدن intercom-client (SDK رسمی Node.js اینترکام) هم همراه بوده که از یک preinstall hook برای اجرای setup.mjs استفاده میکرد. با توجه به اینکه هر دو پکیج در مجموع حدود ۴۰۰ هزار دانلود هفتگی دارن و معمولاً در سرویسهای بکاند، محیط توسعه و pipeline های CI/CD نصب میشن، این هدفگذاری بسیار هوشمندانه و پرخطره.
یکی از نکات مهم این حمله، نحوه کار اکوسیستم Packagist ـه. برخلاف npm یا PyPI، در Packagist هیچ مرحله قرنطینه یا اسکن بدافزار پیش از انتشار وجود نداره. وقتی مهاجم حساب GitHub نگهدارنده رو در اختیار بگیره، کافیه یک تگ مخرب push کنه؛ webhook بلافاصله فعال میشه و Packagist نسخه آلوده رو به همه کسایی که composer update میزنن سرو میکنه. وابستگیهای transitive هم این مشکل رو چند برابر میکنن.
نشانههای آلودگی (IOC) که باید دنبالشون بگردی:
- پکیج:
intercom/intercom-php@5.0.2 - دامنه C2:
zero.masscan.cloud - فایلهای مشکوک:
setup-intercom.sh،router_runtime.js،src/composerPlugin.php،.claude/router_runtime.js،.vscode/setup.mjs،results/results-*.json
اگه از ابزار Semgrep Supply Chain استفاده میکنی، میتونی با بررسی صفحه advisories و dependency filter چک کنی که آیا پروژههات این نسخه آلوده رو نصب کردن یا نه. یه نکته مهم برای کاربران PHP: اسکن بدون فایل composer.lock پشتیبانی نمیشه، پس حتماً این فایل رو commit کرده و در دسترس داشته باش.
نکات کلیدی:
- پکیج
intercom/intercom-php@5.0.2در Packagist آلوده شده و باید فوری آپدیت یا حذف بشه - پیلود از سیستم پلاگین Composer سوءاستفاده میکنه و هنگام نصب اجرا میشه، نه هنگام import
- اطلاعات دزدیدهشده شامل توکن GitHub، کلیدهای SSH، اعتبارنامههای ابری و env variables میشه
- سرور C2 مهاجمان:
zero.masscan.cloud - Packagist برخلاف npm و PyPI مرحله اسکن بدافزار پیش از انتشار نداره
- فایل
composer.lockباید حتماً commit شده باشه تا ابزارهای امنیتی بتونن اسکن کنن - این حمله بخشی از کمپین گستردهتر Mini Shai-Hulud هست که npm و PyPI رو هم هدف قرار داده




