
TanStack/Mini Shai-Hulud npm आपूर्ति श्रृंखला हमले (CVE-2026-45321) के लिए IOC जाँचकर्ता
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 ...]
यह चेकर TeamPCP द्वारा किए गए Mini Shai-Hulud सप्लाई चेन अटैक अभियान की दो लहरों को कवर करता है:
11 मई, 2026 (19:20-19:26 UTC) को, एक हमलावर ने 6 मिनट की अवधि में 42 @tanstack/* npm पैकेजों में 84 दुर्भावनापूर्ण वर्शन प्रकाशित किए। इस हमले ने Mistral AI, UiPath, OpenSearch और अन्य के पैकेजों को भी प्रभावित किया — npm और PyPI दोनों पर कुल 170+ पैकेज।
कोई मेंटेनर क्रेडेंशियल चोरी नहीं हुए। हमलावर ने 3-चरणीय हमले के माध्यम से CI/CD ट्रस्ट चेन का ही फायदा उठाया:
pull_request_target शोषण — एक अस्थायी GitHub फोर्क ने एक PR खोला जिसने बेस रिपॉजिटरी के सुरक्षा संदर्भ में हमलावर कोड चलाया19 मई, 2026 (01:39-02:06 UTC) को, समझौता किए गए atool npm खाते ([email protected]) ने दो स्वचालित लहरों में 314 पैकेजों में 637 दुर्भावनापूर्ण वर्शन प्रकाशित किए। उच्च-प्रभाव वाले लक्ष्यों में शामिल हैं:
size-sensor (4.2M डाउनलोड/माह)echarts-for-react (3.8M डाउनलोड/माह)@antv/scale (2.2M डाउनलोड/माह)timeago.js (1.15M डाउनलोड/माह)@antv/* और अन्य पैकेजइस लहर में Bun-आधारित पेलोड (498KB index.js) का उपयोग किया गया, जो "preinstall": "bun run index.js" के माध्यम से ट्रिगर हुआ, जिसमें दूसरे चरण का पेलोड नकली कमिट में छिपा हुआ था, जिसे fork ऑब्जेक्ट शेयरिंग शोषण के माध्यम से antvis/G2 GitHub रिपॉजिटरी में पुश किया गया।
दोनों लहरें एक ही "Mini Shai-Hulud" टूलकिट परिवार का उपयोग करती हैं:
gh-token-monitor (लहर 1) और kitty-monitor (लहर 2) डेमॉन; .claude/settings.json और .vscode/tasks.json में हुकtoJSON(secrets) को डंप करने वाला वर्कफ़्लो इंजेक्शन, npm OIDC टोकन एक्सचेंजrm -rf ~/firedalazer कीवर्ड के लिए GitHub commit search API को पोल करता है, RSA-PSS हस्ताक्षरित कमांड| # | जाँच | विवरण |
|---|---|---|
| 1 | डेड-मैन स्विच | पर्सिस्टेंस डेमॉन: gh-token-monitor (लहर 1), kitty-monitor (लहर 2) |
| 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 | npm लॉकफ़ाइलें | लॉकफ़ाइलों में समझौता किए गए पैकेज वर्शन |
| 8 | optionalDependencies | दुर्भावनापूर्ण @tanstack/setup और @antv/setup + 4 नकली कमिट SHA |
| 9 | नेटवर्क कनेक्शन | C2 इन्फ्रास्ट्रक्चर के लिए सक्रिय कनेक्शन (5 डोमेन/IP) |
| 10 | DNS कैश | हमलावर डोमेन का पहले से रिज़ॉल्व होना (4 डोमेन) |
| 11 | Git ब्रांच | Dune-थीम वाला हमलावर ब्रांच नामकरण पैटर्न |
| 12 | लाइफसाइकल स्क्रिप्ट | ह्यूरिस्टिक: preinstall/postinstall में bun run (इंस्टॉल किए गए पैकेज) |
| 13 | डेड-ड्रॉप C2 | गिट हिस्ट्री में firedalazer कीवर्ड और "Shai-Hulud" मार्कर |
| 14 | GitHub डिपेंडेंसी | ह्यूरिस्टिक: optionalDeps में commit SHA पर पिन किए गए github: डिपेंडेंसी |
केवल @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 और लॉकफ़ाइलें हटाएँ, --ignore-scripts के साथ पुनः इंस्टॉल करेंapi.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)