
مدقق IOC لهجوم سلسلة التوريد TanStack/Mini Shai-Hulud npm (CVE-2026-45321)
curl -fsSL https://raw.githubusercontent.com/nkopylov/tanscript-exploit-check/main/check-tanstack-exploit.sh | bash
أو استنسخ وشغّل محليًا:
git clone https://github.com/nkopylov/tanscript-exploit-check.git
cd tanscript-exploit-check
./check-tanstack-exploit.sh [project_dir ...]
يغطي هذا المدقق موجتين من حملة هجوم سلسلة التوريد Mini Shai-Hulud بواسطة TeamPCP:
في 11 مايو 2026 (19:20-19:26 UTC)، نشر مهاجم 84 نسخة ضارة عبر 42 حزمة @tanstack/* من npm في نافذة مدتها 6 دقائق. أصاب الهجوم أيضًا حزمًا من Mistral AI وUiPath وOpenSearch وغيرها — أكثر من 170 حزمة إجمالاً عبر npm وPyPI.
لم تُسرق بيانات اعتماد أي من المطورين. استغل المهاجم سلسلة الثقة لـ CI/CD نفسها عبر هجوم من 3 مراحل:
pull_request_target — فتح fork مؤقت على GitHub طلب سحب (PR) شغّل كود المهاجم في سياق الأمان للمستودع الأساسيفي 19 مايو 2026 (01:39-02:06 UTC)، نشر حساب npm المخترق atool ([email protected]) 637 نسخة ضارة عبر 314 حزمة في موجتين آليتين. تشمل الأهداف عالية التأثير:
size-sensor (4.2 مليون تحميل/شهر)echarts-for-react (3.8 مليون تحميل/شهر)@antv/scale (2.2 مليون تحميل/شهر)timeago.js (1.15 مليون تحميل/شهر)بالإضافة إلى أكثر من 310 حزمة إضافية من @antv/* وغيرها
استخدمت هذه الموجة حمولة مبنية على Bun (ملف index.js بحجم 498 كيلوبايت) تم تفعيلها عبر "preinstall": "bun run index.js"، مع حمولة من المرحلة الثانية مخبأة في commits مزيفة تم دفعها إلى مستودع antvis/G2 على GitHub عبر استغلال مشاركة كائن fork.
تستخدم كلتا الموجتين نفس عائلة أدوات "Mini Shai-Hulud":
gh-token-monitor (الموجة الأولى) و kitty-monitor (الموجة الثانية) عبر LaunchAgent/systemd؛ خطافات في .claude/settings.json و .vscode/tasks.jsontoJSON(secrets)، تبادل رمز OIDC لـ npmrm -rf ~/ إذا تم إلغاء رمز GitHub أثناء نشاط الخفيةfiredalazer، أوامر موقعة بـ RSA-PSS| # | الفحص | الوصف |
|---|---|---|
| 1 | مفتاح الموتى | خفيّات الثبات: gh-token-monitor (الموجة الأولى)، kitty-monitor (الموجة الثانية) |
| 2 | العمليات الضارة | أسماء عمليات المهاجم المعروفة (كلتا الموجتين) |
| 3 | ملفات الحمولة | الملفات الضارة المعروفة بالاسم وتجزئة SHA-256 (4 تجزئات) |
| 4 | خطافات Claude Code | الخطافات المحقونة في .claude/settings.json + إرشادية SessionStart العامة |
| 5 | مهام VS Code | المهام المحقونة في .vscode/tasks.json + إرشادية runOn: folderOpen العامة |
| 6 | GitHub Actions | toJSON(secrets) في أي سير عمل + تحذير pull_request_target |
| 7 | ملفات lock الخاصة بـ npm | إصدارات الحزم المخترقة في ملفات lock |
| 8 | الاعتماديات الاختيارية | @tanstack/setup و @antv/setup الضارة + 4 تجزئات commit مزيفة |
| 9 | اتصالات الشبكة | اتصالات نشطة إلى بنية C2 التحتية (5 نطاقات/عناوين IP) |
| 10 | ذاكرة DNS المؤقتة | حل سابق لنطاقات المهاجم (4 نطاقات) |
| 11 | فروع Git | نمط تسمية فروع المهاجم المستوحى من Dune |
| 12 | سكريبتات دورة الحياة | إرشادية: bun run في preinstall/postinstall (الحزم المثبتة) |
| 13 | C2 بالإسقاط الميت | كلمة firedalazer وعلامات "Shai-Hulud" في تاريخ git |
| 14 | الاعتماديات على GitHub | إرشادية: اعتماديات github: مثبتة على تجزئة commit في optionalDeps |
فقط @tanstack/router* و @tanstack/start* تأثرت. غير متأثرة: @tanstack/query*, @tanstack/table*, @tanstack/form*, @tanstack/virtual*, @tanstack/store.
| الحزمة | الإصدارات الضارة | أول إصدار آمن |
|---|---|---|
@tanstack/react-router | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/router-core | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/vue-router | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/solid-router | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/react-start | 1.167.68, 1.167.71 | 1.167.72 |
@tanstack/router-plugin | 1.167.38, 1.167.41 | 1.167.42 |
انظر التنبيه الكامل لجميع الحزم الـ42.
جميع الحزم التي نشرها مستخدم npm atool ([email protected]) تلقت إصدارات ضارة في 19 مايو 2026. تشمل الحزم عالية التأثير:
| الحزمة | التنزيلات الشهرية |
|---|---|
size-sensor | 4.2M |
echarts-for-react | 3.8M |
@antv/scale | 2.2M |
timeago.js | 1.15M |
بالإضافة إلى أكثر من 310 حزمة بشكل أساسي في نطاق @antv/* (@antv/g2, @antv/g6, @antv/l7, @antv/s2, @antv/x6, @antv/f2, إلخ)، و ai-figure، و timeago-react، و jest-canvas-mock، و jest-date-mock، وغيرها.
انظر تقرير SafeDep للقائمة الكاملة.
هام جدًا: قم بتعطيل مفتاح الموتى قبل إلغاء أي رموز. يقوم البرنامج الضار بمسح
$HOMEإذا تم إلغاء الرموز أثناء نشاط الخفية.
gh-token-monitor و kitty-monitor) وإزالة خدمات LaunchAgent و systemd.claude/router_runtime.js, .vscode/setup.mjs, ~/.local/share/kitty/cat.py, /var/tmp/.gh_update_state، إلخ.)node_modules وملفات lock، وأعد التثبيت باستخدام --ignore-scriptsapi.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)