Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
tanscript-exploit-check — مدقق IOC لهجوم سلسلة التوريد TanStack/Mini Shai-Hulud npm (CVE-2026-45321) | Kitploit
أدوات/GitHubGitHub/nkopylov/tanscript-exploit-check
إدارة مؤشرات الاختراق (IOC)تحليل الثغرات الأمنيةالتحقيق الجنائي الرقمياستخبارات التهديداتأمن سلسلة التوريدالاستجابة للحوادث
GitHubnkopylov/tanscript-exploit-check

tanscript-exploit-check

مدقق IOC لهجوم سلسلة التوريد TanStack/Mini Shai-Hulud npm (CVE-2026-45321)

عرض المستودع
1منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

هجوم سلسلة التوريد Mini Shai-Hulud — مدقق IOC

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/nkopylov/tanscript-exploit-check/main/check-tanstack-exploit.sh | bash

أو استنسخ وشغّل محليًا:

root@kitploit:~
git clone https://github.com/nkopylov/tanscript-exploit-check.git
cd tanscript-exploit-check
./check-tanstack-exploit.sh [project_dir ...]

ما حدث

يغطي هذا المدقق موجتين من حملة هجوم سلسلة التوريد Mini Shai-Hulud بواسطة TeamPCP:

الموجة الأولى: اختراق CI/CD لـ TanStack (11 مايو 2026)

في 11 مايو 2026 (19:20-19:26 UTC)، نشر مهاجم 84 نسخة ضارة عبر 42 حزمة @tanstack/* من npm في نافذة مدتها 6 دقائق. أصاب الهجوم أيضًا حزمًا من Mistral AI وUiPath وOpenSearch وغيرها — أكثر من 170 حزمة إجمالاً عبر npm وPyPI.

لم تُسرق بيانات اعتماد أي من المطورين. استغل المهاجم سلسلة الثقة لـ CI/CD نفسها عبر هجوم من 3 مراحل:

  1. استغلال pull_request_target — فتح fork مؤقت على GitHub طلب سحب (PR) شغّل كود المهاجم في سياق الأمان للمستودع الأساسي
  2. تسميم ذاكرة التخزين المؤقت لـ GitHub Actions — قام كود fork بتسميم ذاكرة التخزين المؤقت المشتركة لـ pnpm، التي أصابت لاحقًا سير عمل الإصدار الشرعية
  3. استخراج رمز OIDC من ذاكرة العملية — استخرج الكود الضار رموز نشر npm مباشرة من ذاكرة مشغل GitHub Actions، مما أنتج حزمًا مع تصديقات إثبات الأصل SLSA Build Level 3 صالحة

الموجة الثانية: الاستيلاء على حساب npm "atool" (19 مايو 2026)

في 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":

  • حصد بيانات الاعتماد: أكثر من 80 متغير بيئة، سلسلة AWS الكاملة (env → config → IMDSv2 → ECS → Secrets Manager)، رموز GitHub PAT، رموز npm، مفاتيح SSH، رموز K8s، رموز Vault، مديري كلمات المرور (1Password, Bitwarden, pass, gopass)
  • الثبات: خفيّات gh-token-monitor (الموجة الأولى) و kitty-monitor (الموجة الثانية) عبر LaunchAgent/systemd؛ خطافات في .claude/settings.json و .vscode/tasks.json
  • استخراج البيانات: شبكات P2P (الموجة الأولى)، GitHub Git Data API + HTTPS متنكرًا كبيانات تتبع OpenTelemetry (الموجة الثانية)
  • إساءة استخدام CI/CD: حقن سير العمل لإفراغ toJSON(secrets)، تبادل رمز OIDC لـ npm
  • مفتاح الموتى: rm -rf ~/ إذا تم إلغاء رمز GitHub أثناء نشاط الخفية
  • C2 بالإسقاط الميت (الموجة الثانية): يستقصي واجهة API للبحث عن commits على GitHub بحثًا عن كلمة firedalazer، أوامر موقعة بـ RSA-PSS

ما يتحقق منه هذا السكريبت

الحزم المتأثرة

الموجة الأولى: TanStack (42 حزمة)

فقط @tanstack/router* و @tanstack/start* تأثرت. غير متأثرة: @tanstack/query*, @tanstack/table*, @tanstack/form*, @tanstack/virtual*, @tanstack/store.

انظر التنبيه الكامل لجميع الحزم الـ42.

الموجة الثانية: حساب atool (314 حزمة)

جميع الحزم التي نشرها مستخدم npm atool ([email protected]) تلقت إصدارات ضارة في 19 مايو 2026. تشمل الحزم عالية التأثير:

الحزمةالتنزيلات الشهرية
size-sensor4.2M
echarts-for-react3.8M
@antv/scale2.2M

بالإضافة إلى أكثر من 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 إذا تم إلغاء الرموز أثناء نشاط الخفية.

  1. قم بإنهاء خفيّات الثبات (gh-token-monitor و kitty-monitor) وإزالة خدمات LaunchAgent و systemd
  2. قم بإزالة ملفات الثبات (.claude/router_runtime.js, .vscode/setup.mjs, ~/.local/share/kitty/cat.py, /var/tmp/.gh_update_state، إلخ.)
  3. احذف node_modules وملفات lock، وأعد التثبيت باستخدام --ignore-scripts
  4. قم بتدوير جميع بيانات الاعتماد (npm, GitHub, AWS, GCP, مفاتيح SSH, رموز Vault, رموز مدير كلمات المرور، إلخ.)
  5. احظر نطاقات المهاجم على مستوى DNS/جدار الحماية (api.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)
  6. دقق سجلات موفري السحابة للفترة 11-19 مايو 2026

الإعلانات الرسمية والمراجع

الموجة الأولى: TanStack (11 مايو)

  • CVE-2026-45321 (CVSS 9.6 Critical) — سجل CVE
  • GHSA-g7cv-rxg3-hmpx — تنبيه GitHub
  • تحليل TanStack بعد الحادث — tanstack.com/blog/npm-supply-chain-compromise-postmortem
  • متابعة تعزيز TanStack — tanstack.com/blog/incident-followup
  • مشكلة التتبع على GitHub — TanStack/router#7383

الموجة الثانية: الاستيلاء على حساب atool (19 مايو)

  • تحليل SafeDep — safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/

كتابات باحثي الأمن

  • Socket.dev
  • Snyk
  • StepSecurity (المكتشفون الأصليون)
  • Wiz
  • Orca Security
  • SecurityWeek

إرشادات التعزيز لعملاء الترميز بالذكاء الاصطناعي

انسخ والصق هذه الإرشادات في عميل الترميز بالذكاء الاصطناعي الخاص بك (Claude Code, Cursor, Cline/OpenClaw, Windsurf, Hermes، إلخ) لتعزيز مشروعك ضد هجمات سلسلة التوريد مثل هذا الهجوم.

الإرشاد 1: تأخير نشر npm (عزل الإصدارات الجديدة)

عزز تكوين npm لهذا المشروع ضد هجمات سلسلة التوريد. قم بما يلي:

  1. تثبيت الإصدارات الدقيقة: أزل جميع البادئات ^ و ~ من كل اعتماد في package.json بحيث لا يسحب npm install إصدارًا منشورًا حديثًا بصمت.

  2. تعطيل سكريبتات ما بعد التثبيت افتراضيًا: أضف ignore-scripts=true إلى .npmrc. ثم أضف سكريبت "preinstall" صريحًا في package.json يشغّل فقط سكريبتات دورة الحياة المعروفة الآمنة التي يحتاجها هذا المشروع بالفعل (إن وجدت).

  3. فرض التثبيت باستخدام ملفات lock فقط في CI: تأكد من أن CI يستخدم npm ci (وليس npm install). إذا كان هناك ملف تكوين CI، تحقق من ذلك. وإلا، فذكرها كخطوة يدوية.

  4. إضافة التحقق من الإثبات: أضف npm audit signatures كخطوة في خط أنابيب CI وكخطاف git قبل الدفع.

الإرشاد 2: تعزيز تكوين عميل الذكاء الاصطناعي

دقق وعزز تكوين عميل الترميز بالذكاء الاصطناعي لهذا المشروع ضد هجمات حقن سلسلة التوريد (مثل حملة TanStack/Mini Shai-Hulud التي حقنت خطافات ضارة في .claude/settings.json و .vscode/tasks.json). قم بما يلي:

Claude Code (.claude/):

  1. راجع .claude/settings.json و .claude/settings.local.json بحثًا عن أي إدخالات hooks تشغّل أوامر شل. قم بالإبلاغ عن أي شيء ينفذ ملفات .js أو .mjs أو .sh — خاصة من داخل .claude/ أو .vscode/ أو node_modules/.
  2. أزل أي خطافات لا يمكنك تتبعها إلى غرض شرعي أنشأه المستخدم.
  3. أضف قاعدة .gitignore لمنع إضافة إلى المستودع (يجب أن يبقى محليًا).

الإرشاد 3: تعزيز GitHub Actions

دقق وعزز تكوين GitHub Actions في هذا المستودع ضد هجمات سلسلة التوريد على CI/CD. قم بما يلي:

  1. أزل أو أعد بناء أي مشغلات pull_request_target — هذه المشغلات تشغّل كود سير العمل في سياق المستودع الأساسي مع الوصول إلى الأسرار، حتى عند تشغيلها بواسطة fork. استبدلها بـ pull_request + سير عمل منفصل بموافقة إذا لزم الأمر.

  2. ثبّت جميع إجراءات الطرف الثالث على تجزئات commit كاملة (وليس علامات أو فروع). على سبيل المثال، استبدل actions/checkout@v4 بـ actions/checkout@<full-sha>. أضف تعليقًا مع العلامة لسهولة القراءة.

  3. طبّق صلاحيات الحد الأدنى على كل سير عمل. أضف كتل permissions: صريحة. معظم سير العمل تحتاج فقط contents: read. سير عمل النشر يحتاج id-token: write — ولا شيء آخر.

  4. قيّد نطاق ذاكرة التخزين المؤقت: إذا كنت تستخدم actions/cache، تأكد من أن مفاتيح التخزين المؤقت محددة النطاق بالفرع لمنع التسميم عبر الفروع. أضف restore-keys بحذر — لا تستعد ذاكرات التخزين المؤقت من فروع غير موثوقة.

  5. أضف StepSecurity Harden-Runner كخطوة أولى في كل وظيفة: step-security/harden-runner@v2 مع (أو إذا كنت تعرف نقاط النهاية المسموح بها).

الترخيص

MIT

تنزيل الأداة
#الفحصالوصف
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 العامة
6GitHub ActionstoJSON(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 (الحزم المثبتة)
13C2 بالإسقاط الميتكلمة firedalazer وعلامات "Shai-Hulud" في تاريخ git
14الاعتماديات على GitHubإرشادية: اعتماديات github: مثبتة على تجزئة commit في optionalDeps
الحزمةالإصدارات الضارةأول إصدار آمن
@tanstack/react-router1.169.5, 1.169.81.169.9
@tanstack/router-core1.169.5, 1.169.81.169.9
@tanstack/vue-router1.169.5, 1.169.81.169.9
@tanstack/solid-router1.169.5, 1.169.81.169.9
@tanstack/react-start1.167.68, 1.167.711.167.72
@tanstack/router-plugin1.167.38, 1.167.411.167.42
timeago.js
1.15M

إنشاء سكريبت سياسة التحديث: أنشئ scripts/safe-update.sh يقوم بـ:

  • أخذ اسم حزمة كوسيطة
  • التحقق من وقت نشر أحدث إصدار (npm view <pkg> time --json)
  • رفض التحديث إذا كان الإصدار أصغر من 3 أيام
  • إذا كان أقدم من 3 أيام، تشغيل npm install <pkg>@latest --save-exact
  • طباعة ملخص لما تغير

لا تغير أي كود تطبيق. فقط قم بتعديل ملفات التكوين و.npmrc وسكريبتات package.json وتكوين CI.

.claude/settings.local.json

VS Code (.vscode/):

  1. راجع .vscode/tasks.json و .vscode/launch.json بحثًا عن مهام تنفذ سكريبتات أو ملفات ثنائية غير متوقعة.
  2. أزل أي إدخالات مهمة تشير إلى ملفات مثل setup.mjs أو router_runtime.js أو أسماء أخرى لا تنتمي لهذا المشروع.
  3. تحقق من .vscode/extensions.json بحثًا عن إضافات لا تعرفها.

Cursor (.cursor/):

  1. راجع .cursor/settings.json وأي ملفات قواعد بحثًا عن أوامر أو خطافات محقونة.
  2. نفس التحققات المذكورة أعلاه لـ VS Code — يرث Cursor تكوين .vscode/.

عام:

  1. تحقق من وجود أي سكريبتات preinstall أو postinstall أو prepare أو prestart في package.json لم تكتبها أنت. قم بالإبلاغ عن أي شيء مشبوه.
  2. تحقق من .github/workflows/ بحثًا عن أي سير عمل يستخدم pull_request_target — قم بالإبلاغ عنه كمخاطرة أمنية مع تعليق يشرح السبب.
  3. تأكد من أن .gitignore يستبعد ملفات جلسات العميل التي قد تسرب بيانات الاعتماد (.claude/projects/, .cursor/logs/، إلخ).

أبلغ عن ما وجدته وما غيرته. لا تقم بتعديل كود التطبيق.

egress-policy: audit
block
  • تحقق من وجود أسرار في سجلات سير العمل: تأكد من عدم طباعة أي خطوة في سير العمل لـ ${{ secrets.* }} أو ${{ toJSON(secrets) }} إلى الإخراج القياسي.

  • أبلغ عن جميع التغييرات. لا تقم بتعديل كود التطبيق.