
CVE-2026-45321 (TanStack आपूर्ति श्रृंखला समझौता) और Mini Shai-Hulud वर्म आर्टिफैक्ट्स का पता लगाता है। node_modules, लॉकफाइल्स, पर्सिस्टेंस हुक (Claude Code, VS Code, systemd, LaunchAgent), GitHub वर्कफ्लो, git इतिहास, C2 डोमेन और AI टूल कॉन्फ़िग का स्कैन करता है।
⚠️ अस्वीकरण: यह टूल मेरे अपने उपयोग के लिए बनाया गया था। सभी संकेतक निम्नलिखित एडवाइज़री स्रोतों से प्राप्त हुए हैं:
यदि इसे अंतिम बार अपडेट किए जाने के बाद नए IOC, पेलोड वेरिएंट या हमलावर इंफ्रास्ट्रक्चर सामने आते हैं, तो उनका पता नहीं लगाया जा सकेगा। हमेशा नवीनतम प्रकाशित एडवाइज़री के साथ क्रॉस-चेक करें।
स्थानीय प्रोजेक्ट चेकआउट में TanStack सप्लाई चेन समझौते (CVE-2026-45321) और संबंधित Mini Shai-Hulud वर्म आर्टिफैक्ट का पता लगाता है।
यह स्क्रिप्ट सोर्स चेकआउट, CI जॉब्स और Docker बिल्ड्स में त्वरित ट्राइएज के लिए बनाई गई है। साफ परिणाम का मतलब है कि नीचे सूचीबद्ध ज्ञात संकेतकों में से कोई भी नहीं मिला। यह पूर्ण फॉरेंसिक जांच या इस बात की गारंटी नहीं है कि मशीन कभी एक्सपोज़ नहीं हुई थी।
| श्रेणी | विवरण |
|---|---|
| समझौता किए गए पैकेज | सभी 42 @tanstack/* पैकेज + 20 वर्म-प्रचारित द्वितीयक पीड़ित (@mistralai, @opensearch-project, @draftlab, safe-action, आदि) |
| लॉकफ़ाइल स्कैन | pnpm-lock.yaml, yarn.lock, bun.lock, bun.lockb, package-lock.json, जिसमें मल्टीलाइन npm v3 packages एंट्री और Yarn v1 सेलेक्टर/वर्जन स्टैंज़ा शामिल हैं |
| पेलोड फ़ाइलें | SHA-256 सत्यापन के साथ node_modules में router_init.js, tanstack_runner.js; सटीक हैश मिलान और हैश बेमेल दोनों स्कैन को विफल करते हैं |
| संक्रमण वेक्टर | किसी भी इंस्टॉल किए गए पैकेज में optionalDependency के रूप में @tanstack/setup |
| पर्सिस्टेंस | प्रोजेक्ट और होम दोनों सेटिंग्स में Claude Code SessionStart हुक, VS Code folderOpen टास्क, gh-token-monitor (LaunchAgent + systemd), दुर्भावनापूर्ण GitHub वर्कफ़्लो |
| डिस्क आर्टिफैक्ट | .claude/router_runtime.js, .claude/setup.mjs, .vscode/setup.mjs, gh-token-monitor.sh, com.user.gh-token-monitor.plist |
| स्रोत IOC | हमलावर कमिट हैश, C2 डोमेन (api.masscan.cloud, git-tanstack.com), Session Protocol एंडपॉइंट, PBKDF2 सॉल्ट, कैंपेन स्ट्रिंग |
| Git इतिहास | [email protected] द्वारा लिखे गए कमिट |
| ब्रांच पैटर्न | dependabot/github_actions/format/* और dependabout/*/setup-formatter |
| AI टूल कॉन्फ़िगरेशन | छेड़छाड़ किए गए .claude/mcp.json और .kiro/settings/mcp.json |
pnpm, yarn, bun, फिर npm) में एक प्रोजेक्ट लॉकफ़ाइल का चयन करता है। यदि किसी रिपॉज़िटरी में जानबूझकर कई लॉकफ़ाइलें हैं, तो प्रत्येक प्रासंगिक पैकेज-मैनेजर स्थिति को अलग से स्कैन करें।npm उपलब्ध हो और npm token list चलाने के लिए पर्याप्त रूप से प्रमाणित हो।HOME की जांच करती हैं। CI या कंटेनरों में, यह डेवलपर वर्कस्टेशन होम डायरेक्टरी से भिन्न हो सकता है।# Scan current directory
bash check-tanstack-compromise.sh .
# Scan a specific project
bash check-tanstack-compromise.sh /path/to/project
# One-liner (curl)
curl -sL https://raw.githubusercontent.com/ry-allan/tanstack-compromise-checker/main/check-tanstack-compromise.sh | bash
एग्ज़िट कोड 0 = कोई कवर किए गए संकेतक नहीं मिले।
एग्ज़िट कोड 1 = कवर किया गया समझौता या संदिग्ध पेलोड संकेतक मिला।
═══════════════════════════════════════════════════════════════
TanStack Supply Chain Compromise Check (CVE-2026-45321)
═══════════════════════════════════════════════════════════════
Advisory: GHSA-g7cv-rxg3-hmpx
Reference: https://snyk.io/blog/tanstack-npm-packages-compromised/
Deep dive: https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-…
[*] Scanning: /Users/xxxxx/repos/xxxxx
[*] Package manager: pnpm (pnpm-lock.yaml)
[*] Checking installed TanStack packages against 42 known-compromised versions…
[*] Checking worm-propagated secondary victims (Mini Shai-Hulud)…
[*] Packages: @mistralai, @opensearch-project, @draftlab, @draftauth,
[*] @dirigible-ai, safe-action, cmux-agent-mcp, nextmove-mcp,
[*] git-git-git, git-branch-selector, agentwork-cli, ml-toolkit-ts,
[*] wot-api, cross-stitch, ts-dna
[*] Scanning lockfile for known-compromised versions (pnpm-lock.yaml)…
[✓] No compromised versions in lockfile
[*] Checking for persistence artifacts (payload files, hooks, services, C2)…
[✓] No malicious author commits in git history
───────────────────────────────────────────────────────────────
[✓] No compromise detected.
मैलवेयर के लिए हर पैकेज इंस्टॉल को स्वचालित रूप से स्कैन करने के लिए Aikido Safe Chain इंस्टॉल करें:
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | sh
उसके बाद अपना टर्मिनल पुनः आरंभ करें। Safe Chain npm, npx, yarn, pnpm, pip, uv और अधिक को रैप करता है — 48 घंटे से कम पुराने पैकेजों और ज्ञात-खराब वर्जनों को डिस्क तक पहुँचने से पहले ब्लॉक करता है। किसी टोकन या कॉन्फ़िगरेशन की आवश्यकता नहीं है।
इंटीग्रेशन Dockerfile केवल सिंथेटिक फिक्स्चर बनाता है। यह वास्तविक समझौता किए गए पैकेज डाउनलोड नहीं करता।
मुख्य फिक्स्चर पुष्टि करता है कि सभी 33 डिटेक्शन संदेश पैकेज मैनिफेस्ट, लॉकफ़ाइल, पर्सिस्टेंस आर्टिफैक्ट, वर्कफ़्लो, git इतिहास, स्रोत IOC, पेलोड फ़ाइलनाम, AI टूल कॉन्फ़िगरेशन और रेमेडिएशन आउटपुट में ट्रिगर होते हैं:
docker build -f integration.Dockerfile -t tanstack-check-test .
Docker बिल्ड में निम्नलिखित के लिए लक्षित रिग्रेशन कवरेज भी शामिल है:
package-lock.json v3 एंट्री जहाँ पैकेज नाम और समझौता किया गया वर्जन अलग-अलग पंक्तियों में दिखाई देते हैं।version अलग-अलग पंक्तियों में दिखाई देते हैं।router_init.js पेलोड फ़ाइलनाम एग्ज़िट कोड 1 लौटाते हैं।SessionStart हुक, भले ही एक साफ प्रोजेक्ट-स्तरीय .claude/settings.json मौजूद हो।बिल्ड करने के बाद, इमेज कमांड सीधे चलाई जा सकती है:
docker run --rm tanstack-check-test
| चल रही प्रक्रियाएँ | डेमॉनाइज़्ड पेलोड और gh-token-monitor प्रक्रियाएँ |
| npm टोकन | रैंसम-चिह्नित टोकन (IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner) |