flawopen.com/Incidents/tensorlake-npm-install-hook-compromise-october-2026
Tensorlake npm 0.5.144: दुर्भावनापूर्ण install hook
Tensorlake AI SDK के दुर्भावनापूर्ण संस्करण में preinstall loader जोड़ा गया। maintainer ने main में सीधे बदलाव की पुष्टि की और publishing को सख्त किया; GitHub malware advisory के अनुसार जहाँ यह चला, उस host को compromised मानें। शोधकर्ता loader के तरीके को ChainDrop/Shai-Hulud परिवार से जोड़ते हैं; GitHub advisory इस attribution की पुष्टि नहीं करती।[1], [2], [3], [4], [5]
इस पैकेज को इंस्टॉल करना ऐसे उपकरण को बिजली से जोड़ने जैसा था जो जुड़ते ही चलने लगता है; बटन दबाने या उसका उपयोग करने की ज़रूरत नहीं थी। npm ने SDK import होने से पहले, इंस्टॉल करने वाली प्रक्रिया की permissions से दुर्भावनापूर्ण preinstall hook चलाया।[3], [6], [1]
इस पेज के मुख्य शब्द
preinstall lifecycle hook- वह script जिसे npm installation के दौरान चला सकता है। Tensorlake 0.5.144 के प्रकाशित manifest में यह hook loader शुरू करता था; SDK import करना आवश्यक नहीं था।[1], [6]
provenance attestation- किसी artifact के स्रोत और build प्रक्रिया का प्रमाण। maintainer के अनुसार दुर्भावनापूर्ण release में npm provenance था; इससे source code सुरक्षित सिद्ध नहीं होता।[2], [3]
install-script tripwire- CI जाँच जो प्रकाशित manifest में install lifecycle scripts घोषित होने पर विफल होती है। घटना के बाद Tensorlake ने इसे npm ci --ignore-scripts के साथ जोड़ा।[3]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-506
घटना का समयक्रम (Timeline)
हमले का चरण-दर-चरण प्रवाह
host credentials और persistence जोखिम में आए
GitHub malware advisory प्रभावित host को पूरी तरह compromised मानने को कहती है। StepSecurity और Socket ने credential theft और persistence की रिपोर्ट दी, जिसमें token revoke होने पर विनाशकारी प्रतिक्रिया देने वाला monitor भी शामिल है। इन payload विवरणों का श्रेय शोधकर्ताओं को दें; यह न मानें कि हर क्षमता हर host पर चली।[1], [4], [5]
maintainer ने release controls बहाल किए
response ने दुर्भावनापूर्ण commits revert किए, npm ci --ignore-scripts और manifest tripwire जोड़ा, repository और publishing protections सख्त कीं और package को 0.5.145 से बदला। GHSA कोई patched version नहीं देता क्योंकि यह malware दर्ज करता है, सामान्य vulnerable-code range नहीं।[3], [7]
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
यह CI comparison maintainer की merged PR #1016 पर आधारित है; इसमें malicious package या exploit नहीं है। tripwire installation से पहले चलता है और published manifests के install hooks को reject करता है; ignore-scripts npm ci को dependency lifecycle scripts चलाने से रोकता है। maintainer ने बताया कि इस setting में tests और SDK build सफल रहे। जिन packages को hooks चाहिए उन्हें असर हो सकता है; npm test जैसे स्पष्ट रूप से चलाए गए commands अपने scripts फिर भी चलाते हैं। आगे के build steps isolate करें और provenance को source review न समझें। यह अंश पूरा उदाहरण नहीं है: maintainer का tripwire घोषित install hooks की जाँच के साथ typescript/lib/ में अनपेक्षित files को भी अस्वीकार करता है।[3], [6]
steps:
- run: npm cisteps:
- run: node scripts/check-no-install-scripts.mjs
- run: npm ci --ignore-scriptsइंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓manifests, lockfiles, caches और build records में tensorlake@0.5.144 खोजें। advisory इसी सटीक npm version को पहचानती है; केवल package name से exposure न मानें।[1]
- ✓यदि installation चली थी, host को network से isolate करें और evidence सुरक्षित रखें। dependency हटाने से persistence या अन्य बदलाव मिटने का प्रमाण नहीं मिलता; integrity की पुष्टि न हो तो trusted media से rebuild करें।[1], [4], [5]
- ✓host को isolate रखते हुए, tokens revoke या rotate करने से पहले researchers द्वारा बताई गई token-revocation-triggered persistence को पहचानने और हटाने के लिए incident responders से समन्वय करें। नवीनतम guidance अपनाएँ और response साफ़ systems से करें।[4], [5]
- ✓responders द्वारा बताई गई persistence का निपटारा होने के बाद, clean system से installer process को उपलब्ध credentials revoke और rotate करें। पहुँच वाले repositories और package releases जाँचें, तथा CI artifacts और audit logs में अनधिकृत बदलाव देखें।[4], [5], [3]
- ✓CI में dependency installation से पहले reviewed install-script tripwire चलाएँ; compatible होने पर npm ci --ignore-scripts रखें; ज़रूरी build scripts isolate करें; admin/direct-push bypass हटाएँ और publishing के लिए independent approval माँगें।[3], [6]
- ✓2026-10-12 तक की स्थिति के अनुसार जाँचें कि आपके environment ने इन छह संबंधित
0.5.144पैकेजों में से कोई स्थापित किया था या नहीं: `tensorlake-native-*family:tensorlake-native-linux-x64-gnu,tensorlake-native-linux-x64-musl,tensorlake-native-linux-arm64-gnu,tensorlake-native-linux-arm64-musl,tensorlake-native-darwin-arm64,tensorlake-native-win32-x64। उस दिन npm registry ने हर पैकेज के version metadata लौटाए, इसलिए इन्हें अभी भी प्रकाशित मानें और exposure inventory में शामिल करें। इससे केवल registry में उपलब्धता की पुष्टि होती है; यह साबित नहीं होता कि किसी संबंधित पैकेज में incident payload था। मर्ज की गई PR #1016 में maintainer ने कहा था कि उस समय इन versions को हटाना बाकी था।[3], [8], [9], [10], [11], [12], [13]
स्रोत
- GitHub Advisory Database — GHSA-rqxj-g25x-4v9v
- Tensorlake — incident issue #1014
- Tensorlake — response PR #1016
- StepSecurity — technical analysis
- Socket — technical analysis
- npm v10 — npm ci and ignore-scripts
- Tensorlake — clean release 0.5.145
- npm registry — tensorlake-native-linux-x64-gnu@0.5.144
- npm registry — tensorlake-native-linux-x64-musl@0.5.144
- npm registry — tensorlake-native-linux-arm64-gnu@0.5.144
- npm registry — tensorlake-native-linux-arm64-musl@0.5.144
- npm registry — tensorlake-native-darwin-arm64@0.5.144
- npm registry — tensorlake-native-win32-x64@0.5.144