एक जूनियर फ्रंटएंड डेवलपर उल्लंघन के तुरंत बाद स्थानीय रिपॉजिटरी और पैकेज सेटिंग्स में हैक किए जाने के निशान कैसे खोजे
सुरक्षा घटना की खबर मिलने के बाद देर रात तक सिर्फ गूगल करने में समय बिताने का कोई मतलब नहीं है। मई 2026 में दुर्भावनापूर्ण विजुअल स्टूडियो कोड एक्सटेंशन वितरित किए जाने के बाद, डेवलपर्स की मशीनें हैक हो गईं और लगभग 3,800 इन-हाउस सोर्स कोड रिपॉजिटरी लीक हो गईं। इस स्थिति में, आँख मूंदकर कोड को हटाना या लैपटॉप को फॉर्मेट करना फोरेंसिक सबूतों को नष्ट कर देगा और कारण का पता लगाना असंभव बना देगा। आइए यह जांचने के लिए पैकेज मैनेजर निष्पादन लॉग, वैश्विक सीएलआई टाइमस्टैम्प और वर्तमान में चल रही प्रक्रिया विशेषाधिकारों की सीधे जांच करें कि क्या सिस्टम से छेड़छाड़ की गई है।
10 मिनट में खुद जांचें कि आपका स्थानीय विकास वातावरण हैक हुआ है या नहीं
पैकेज मैनेजर इंस्टॉलेशन प्रक्रिया के दौरान सिस्टम कैश निर्देशिका में ट्रांजैक्शन रिकॉर्ड छोड़ते हैं। npm npm config get cache पथ के भीतर _logs फ़ोल्डर में डिबग लॉग आउटपुट करता है, और pnpm pnpm store path में कलाकृतियों को सहेजता है। चूंकि दुर्भावनापूर्ण पैकेज स्थापना के क्षण निष्पादित होने वाली स्क्रिप्ट के माध्यम से पर्यावरण चर या क्रेडेंशियल्स को लीक करते हैं, इसलिए आपको जीवनचक्र निष्पादन इतिहास की जांच करनी होगी।
पिछले 14 दिनों के लॉग की जांच करके अनधिकृत पैकेज जोड़ या बाहरी स्क्रिप्ट निष्पादन का पता लगाने के लिए कमांड नीचे दी गई है। टर्मिनल चालू करें और नीचे दिए गए कमांड को सीधे टाइप करें।
`bash
NPM_CACHE_DIR=$(npm config get cache)
find $NPM_CACHE_DIR/_logs/ -type f -mtime -14 -exec grep -Hn "lifecycle" {} +
`
परिणाम स्क्रीन पर जांचें कि क्या कोई preinstall या postinstall हुक चला है जिसका आपने इरादा नहीं किया था। यह 3 मिनट में हो जाएगा। यदि कोई असामान्य बाहरी URL संचार रिकॉर्ड नहीं है, तो आप पैकेज-स्तरीय प्रत्यक्ष संदूषण के डर से फिलहाल राहत की सांस ले सकते हैं।
लैपटॉप के भीतर रहने के लिए, हमलावर ग्लोबल सीएलआई टूल या npex कैश में दुर्भावनापूर्ण बाइनरी एम्बेड करते हैं। वैश्विक स्तर पर इंस्टॉल किए गए पैकेजों की एक सूची निकालें और अखंडता को सत्यापित करने के लिए सिस्टम लॉग के साथ बाइनरी फ़ोल्डर फ़ाइल निर्माण और संशोधन तिथियों की तुलना करें।
`bash
npm list -g --depth=0 --json
ls -lact $(npm config get prefix)/bin/
`
यदि संशोधन का समय किसी गलत समय सीमा के साथ ओवरलैप होता है, तो हैश मान निकालने और तुलना करने के लिए नीचे दिए गए कमांड का उपयोग करें।
`bash
shasum -a 256 $(npm config get prefix)/bin/
`
पैकेज इंस्टॉलेशन स्क्रिप्ट डेवलपर खाते की अनुमति के तहत चलती हैं। आपको पृष्ठभूमि में चलने वाली डेमॉन प्रक्रियाओं को समाप्त करना होगा।
`bash
ps aux | grep -E "node|npm|pnpm|bun" | grep -v grep
lsof -i -P -n | grep -E "node|npm|pnpm"
`
यदि कोई संदिग्ध प्रक्रिया बाहरी C2 सर्वर के साथ संचार कर रही है, तो उसे तुरंत पकड़ें और समाप्त करें।
`bash
kill -9 [PID]
npm config set ignore-scripts true
`
पैकेज कॉन्फ़िगरेशन फ़ाइलों और रजिस्ट्री पतों के संदूषण की जाँच करना
आपूर्ति श्रृंखला हमलों में एक सामान्य पैटर्न कॉन्फ़िगरेशन फ़ाइलों के साथ छेड़छाड़ करके रजिस्ट्री को हाईजैक करना है। हमलावर प्रोजेक्ट के भीतर .npmrc फ़ाइल या वैश्विक कॉन्फ़िगरेशन में दुर्भावनापूर्ण मिरर सर्वर पते एम्बेड करते हैं। वास्तविक स्थापित करते समय आपको दुर्भावनापूर्ण टारबॉल प्राप्त करने के लिए लॉकफ़ाइल के भीतर डाउनलोड URL पथ को संशोधित किया जाता है, इसलिए आपको सभी कॉन्फ़िगरेशन मानों की पूरी तरह से जांच करनी होगी।
स्थानीय और वैश्विक कॉन्फ़िगरेशन में कोई अनधिकृत ओवरराइड एम्बेड किया गया है या नहीं, यह सत्यापित करने की प्रक्रिया इस प्रकार है। सबसे पहले, कॉन्फ़िगरेशन बाइंडिंग की सूची निकालें।
`bash
npm config list
pnpm config list
`
इसके बाद, जांचें कि क्या इन-हाउस प्राइवेट रजिस्ट्री दायरा सही ढंग से सेट किया गया है।
`bash
npm config get @company:registry
`
सीधे खोजें कि क्या उपयोगकर्ता होम और प्रोजेक्ट रूट कॉन्फ़िगरेशन फ़ाइलों में बाहरी मिरर पते हार्डकोडेड हैं या नहीं।
`bash
grep -Rn "registry" ~/.npmrc ./.npmrc
`
इन तीन चरणों के माध्यम से, आप 5 मिनट के भीतर यह निर्धारित कर सकते हैं कि कोई अजीब मिरर पता पंजीकृत किया गया है या नहीं।
package-lock.json और pnpm-lock.yaml फ़ाइलें निर्भरता डाउनलोड स्रोत URL रिकॉर्ड करती हैं, इसलिए आपको नियमित अभिव्यक्तियों का उपयोग करके संदूषण की जांच करनी चाहिए।
`bash
grep -E '"resolved": "https?://' package-lock.json | grep -vE 'registry.npmjs.org|registry.corp.example'
`
यदि आप pnpm का उपयोग कर रहे हैं, तो निम्न कमांड दर्ज करें।
`bash
grep -E 'resolution: {tarball:' pnpm-lock.yaml | grep -vE 'registry.npmjs.org|registry.corp.example'
`
यदि कोई दूषित लॉकफ़ाइल पाई जाती है, तो आपको इसे हटा देना चाहिए और इसे फिर से बनाना चाहिए।
`bash
rm -rf node_modules package-lock.json pnpm-lock.yaml
npm cache clean --force
pnpm store prune
npm config set registry https://registry.npmjs.org/
npm ci --ignore-scripts
`
जीवनचक्र स्क्रिप्ट निष्पादन की उपेक्षा करके और अपरिवर्तनीय स्थिति की निर्भरता वृक्ष को पुनर्गठित करके, आप एक पुरानी स्थिति के वातावरण को सुरक्षित कर सकते हैं।
SSH कुंजियों और API टोकन अनुमतियों को कम करना
दुर्भावनापूर्ण बाइनरी लिनक्स और मैक वातावरण में ब्राउज़र पासवर्ड स्टोरेज को हैक करती हैं, और पर्यावरण चर में एम्बेड की गई AI API कुंजियाँ, AWS एक्सेस कुंजियाँ और SSH कुंजियाँ चुराती हैं। आपको टर्मिनल वातावरण में क्रेडेंशियल्स के उजागर होने की तुरंत जांच करनी चाहिए।
`bash
ls -la ~/.ssh/
env | grep -E 'TOKEN|KEY|SECRET|AUTH|AWS|GITHUB|OPENAI|ANTHROPIC'
grep -E '(ghp_[A-Za-z0-9]{36}|AKIA[0-9A-Z]{16}|bearer)' ~/.zsh_history ~/.bash_history
`
यदि सादे पाठ में कोई कुंजी उजागर होती है, तो उसे तुरंत निरस्त करें। GitHub CLI के साथ लॉग इन किए गए टोकन दायरे की भी जांच करें।
`bash
gh auth status
`
क्लासिक टोकन जिसमें सभी रिपॉजिटरी एक्सेस अनुमतियां शामिल हैं, को तुरंत हटा दें। PAT को फिर से बनाते समय, केवल विशिष्ट रिपॉजिटरी निर्दिष्ट करें और पढ़ने की अनुमति को न्यूनतम दायरे तक सीमित करें।
स्थानीय होस्ट और विकास प्रक्रियाओं को अलग करने के लिए, आपको DevContainer संरचना का उपयोग करना चाहिए। प्रोजेक्ट रूट में .devcontainer/devcontainer.json फ़ाइल बनाएं और नीचे दिए गए अनुसार छवि को कॉन्फ़िगर करें।
`json
{
"image": "mcr.microsoft.com/devcontainers/javascript-node:22",
"postCreateCommand": "npm ci --ignore-scripts"
}
`
जब आप इस तरह से एक कंटेनर लॉन्च करते हैं, तो पैकेज स्थापना और निर्माण लैपटॉप के सिस्टम क्रेडेंशियल्स से पूरी तरह से अलग हो जाते हैं, जिससे आंतरिक संपत्ति लीक होने के मार्ग को पूरी तरह से अवरुद्ध किया जा सकता है।