حمله زنجیره تأمین به TanStack، Mistral AI و دیگران
خلاصهٔ کاملتر
یک حمله زنجیره تأمین (Supply Chain Attack) کاملاً هماهنگ در شب ۱۱ مه ۲۰۲۶ رخ داد که طی آن مهاجم موفق شد بیش از ۱۷۰ پکیج npm و ۲ پکیج PyPI را با انتشار ۴۰۴ نسخه مخرب آلوده کنه. این حمله که با نام mini-shai-hulud ردیابی میشه، اولین کمپین هماهنگیست که همزمان هر دو رجیستری npm و PyPI رو هدف گرفته.
بزرگترین قربانی از نظر تعداد پکیج، اکوسیستم TanStack بود؛ ۴۲ پکیج شامل @tanstack/react-router، @tanstack/vue-router، @tanstack/solid-router و ابزارهای مرتبط، هرکدام با ۲ نسخه مخرب آلوده شدند. Mistral AI نیز هر سه پکیج SDK رسمیاش (mistralai، mistralai-azure، mistralai-gcp) را از دست داد. UiPath با ۶۵ پکیج آلوده سنگینترین ضربه از نظر تعداد scope را خورد. OpenSearch هم با ۱.۳ میلیون دانلود هفتگی در ۴ نسخه تحت تأثیر قرار گرفت.
مهاجم در npm از یک preinstall hook استفاده کرده؛ اسکریپتهای اصلی پکیج رو با node setup.mjs جایگزین کرده که ابتدا runtime مخصوص Bun رو دانلود میکنه و بعد پیلود اصلی رو اجرا میکنه. این بدافزار به دنبال توکنهای گیتهاب (ghp_*، gho_*) و npm (npm_*) میگرده، اطلاعات AWS metadata رو probe میکنه، و حتی تلاش میکنه از طریق GitHub GraphQL API، کامیتهای مسموم به ریپوها پوش بده.
برای پکیجهای PyPI هم مکانیزم متفاوتی بهکار رفته. نسخههای مخرب mistralai==2.4.6 و guardrails-ai==0.10.1 به محض import شدن (نه نصب) یه فایل Python به نام transformers.pyz از دامنه مهاجم دانلود و اجرا میکنند:
# رفتار dropper در پکیجهای PyPI آلوده
# هنگام import اجرا میشه، نه هنگام pip install
# دانلود از: hxxps://git-tanstack[.]com/transformers.pyz
# ذخیره در: /tmp/transformers.pyz
# اجرا با: python3 /tmp/transformers.pyzاین یعنی محیطهایی که فقط install رو sandbox میکنند، در برابر نسخههای PyPI آلوده کاملاً محافظتنشدهاند. PyPI هر دو پروژه را قرنطینه کرده و دامنه git-tanstack[.]com توسط Cloudflare به عنوان سایت فیشینگ مسدود شده.
سرعت و مقیاس حمله جالب توجهه: تمام ۴۰۱ نسخه مخرب در یک پنجره زمانی ۵ ساعته منتشر شدند که نشوندهنده استفاده از ابزار خودکاره. ابزار Package Manager Guard (PMG) ساخته SafeDep میتونه با سیاست «cooldown» از نصب فوری پکیجهای تازهمنتشرشده جلوگیری کنه و با sandboxing، دامنه آسیب احتمالی رو محدود کنه.
نکات کلیدی:
- بیش از ۱۷۰ پکیج npm و ۲ پکیج PyPI در یک کمپین واحد آلوده شدند
- هدف اصلی: سرقت توکنهای GitHub و npm و probe اعتبارنامههای AWS
- پکیجهای PyPI آلوده هنگام
importفعال میشند، نه هنگامpip install - TanStack (42 پکیج)، UiPath (65 پکیج)، Mistral AI و OpenSearch از قربانیان اصلیاند
- دامنه
git-tanstack[.]comبه عنوان C2 هم در npm و هم در PyPI استفاده شده - PyPI هر دو پروژه آلوده را قرنطینه کرده؛ Cloudflare دامنه مهاجم را مسدود کرده




