AI कोड असिस्टेंट्स को एक दुर्भावनापूर्ण .git/config एंट्री के ज़रिए हैक किया जा सकता है, जो Git के core.fsmonitor फीचर का फायदा उठाती है। यह एक अविश्वसनीय रिपॉजिटरी (untrusted repository) को डेवलपर की मशीन पर कमांड चलाने की अनुमति देती है, जैसे ही असिस्टेंट फाइलों को स्कैन करता है।
यह खामी कई लोकप्रिय एजेंट्स—Claude Code, Cursor, OpenAI Codex, Goose, Qwen Code, Grok Build और Hermes में सामने आई है। पैच किए गए एजेंट्स में यह एक्सप्लॉइट अब काम नहीं करता है; बाकी अभी भी असुरक्षित हैं। इसके लिए किसी अतिरिक्त क्लिक या प्रॉम्प्ट की आवश्यकता नहीं होती है, और दुर्भावनापूर्ण कोड उपयोगकर्ता के अपने विशेषाधिकारों (privileges) के साथ चलता है, जो AI एजेंट द्वारा प्रदान किए गए किसी भी सैंडबॉक्स (sandbox) से बाहर होता है।
हमला डेवलपर तक कैसे पहुँचता है
- एक कॉन्ट्रैक्टर प्रोजेक्ट को ज़िप करके ईमेल कर देता है।
- एक टीममेट नेटवर्क ड्राइव पर एक फोल्डर शेयर करता है।
- कोडबेस के साथ एक USB स्टिक सौंपी जाती है।
प्रत्येक मामले में, रिपॉजिटरी एक डायरेक्टरी के रूप में आती है जिसमें पहले से ही एक .git फोल्डर होता है। जब कोई AI असिस्टेंट फोल्डर खोलता है, तो वह आमतौर पर कोड का व्यू बनाने के लिए बैकग्राउंड में git status चलाता है। Git core.fsmonitor सेटिंग के साथ उस ऑपरेशन को तेज़ कर देता है, जो Git को फ़ाइल सिस्टम में बदलावों पर नज़र रखने के लिए एक बाहरी प्रोग्राम को कॉल करने के लिए कहता है। यदि रिपॉजिटरी की .git/config फ़ाइल core.fsmonitor के लिए कोई दुर्भावनापूर्ण कमांड परिभाषित करती है, तो Git उपयोगकर्ता से परामर्श किए बिना उसे स्वचालित रूप से निष्पादित (execute) कर देता है।
क्योंकि कमांड स्वयं Git द्वारा लॉन्च किया जाता है, इसलिए यह उपयोगकर्ता के अधिकारों को विरासत में प्राप्त करता है और AI टूल द्वारा बनाए गए किसी भी सैंडबॉक्स को बायपास कर देता है। यह एक्सप्लॉइट सामान्य git clone, git fetch या git pull के दौरान सक्रिय नहीं होता है; यह केवल तभी सक्रिय होता है जब रिपॉजिटरी को उसके .git मेटाडेटा के साथ अनपैक किया जाता है।
यह समस्या क्यों महत्वपूर्ण है
डेवलपर्स सुझाव (completions) देने, कोड को रिफैक्टर करने या पूरे मॉड्यूल जेनरेट करने के लिए तेजी से AI असिस्टेंट्स पर निर्भर हो रहे हैं। उन टूल्स को प्रोजेक्ट के फ़ाइल ट्री का एक त्वरित स्नैपशॉट की आवश्यकता होती है, इसलिए वे चुपचाप Git कमांड चलाते हैं। यदि कोई दुर्भावनापूर्ण रिपॉजिटरी उस क्षण कोड निष्पादित कर सकती है, तो हमलावर बिना किसी दृश्य चेतावनी के डेवलपर के वर्कस्टेशन पर पैठ बना सकता है। संभावित नुकसान क्रेडेंशियल चोरी से लेकर स्थायी बैकडोर इंस्टॉल करने तक हो सकता है, और यह सब तब होता है जब उपयोगकर्ता को लगता है कि वे केवल AI हेल्पर के साथ कोड की "जाँच" कर रहे हैं।
ज़हरीली (poisoned) रिपॉजिटरी का पता लगाना
असिस्टेंट को रिपॉजिटरी सौंपने से पहले, इसे चलाएँ:
git config --get core.fsmonitor
एक गैर-खाली (non-empty) आउटपुट का मतलब है कि कोई प्रोग्राम स्वचालित रूप से चलने के लिए सेट है। व्यापक जांच के लिए, किसी भी संदिग्ध Git सेटिंग्स की सूची देखें:
git config --local --list | grep -Ei 'fsmonitor|hooksPath|sshCommand|pager|editor|filter\.'
यदि आपको ऐसी एंट्रीज़ मिलती हैं जो आपने नहीं जोड़ी हैं, तो उन्हें इससे साफ़ करें:
git config --local --unset core.fsmonitor
ध्यान दें कि git config --global core.fsmonitor false सेट करना आपको सुरक्षित नहीं करता है। लोकल रिपॉजिटरी सेटिंग्स हमेशा ग्लोबल सेटिंग्स पर हावी (override) हो जाती हैं, इसलिए एक दुर्भावनापूर्ण रिपॉजिटरी बस एक ग्लोबल नियम को अनदेखा कर सकती है।
वर्तमान पैच परिदृश्य
- Claude Code – पैच किया गया (fsmonitor)
- Cursor – पैच किया गया
- OpenAI Codex – पैच किया गया
- Goose – पैच किया गया
- Qwen Code – अनपैच किया गया
- Grok Build – अनपैच किया गया
- Hermes – अनपैच किया गया
अनपैच किए गए एजेंट्स का उपयोग करने वाले डेवलपर्स को किसी भी आने वाली रिपॉजिटरी को संभावित रूप से खतरनाक मानना चाहिए, जब तक कि वे या तो टूल्स बदल न लें या सख्त स्थानीय Git नीतियां लागू न कर दें।
Git समुदाय का प्रतिवाद
Git का core.fsmonitor एक वैध परफॉरमेंस फीचर है, बग नहीं। मेंटेनर का तर्क है कि Git कमांड चलाने से पहले रिपॉजिटरी की सामग्री को सत्यापित करने की जिम्मेदारी कॉल करने वालों की है। इस फीचर को ग्लोबल स्तर पर अक्षम (disable) करना एक सीधा समाधान है, लेकिन जैसा कि उल्लेख किया गया है, लोकल ओवरराइड उस सुरक्षा को विफल कर सकते हैं। अब व्यापक चर्चा इस बात पर केंद्रित है कि क्या AI असिस्टेंट्स को सभी बाहरी Git इनवोकेशन्स को सैंडबॉक्स करना चाहिए या उन रिपॉजिटरीज़ को प्रोसेस करने से मना कर देना चाहिए जिनमें कस्टम fsmonitor हुक्स (hooks) शामिल हैं।
आगे क्या देखें
- अनपैच किए गए AI एजेंट्स से अपडेट—विशेष रूप से Git कॉल्स को सैंडबॉक्स करने के बारे में कोई भी बयान।
- अविश्वसनीय डायरेक्टरीज़ के लिए
core.fsmonitorके Git के डिफ़ॉल्ट हैंडलिंग में संभावित बदलाव। - थर्ड-पार्टी टूल्स जो असिस्टेंट तक पहुँचने से पहले रिपॉजिटरी की
.git/configको सैनिटाइज़ (sanitize) कर सकते हैं।
निष्कर्ष
एक छिपी हुई कॉन्फ़िग फ़ाइल की एक अकेली लाइन AI-संचालित सुविधा को रिमोट-कोड-एक्ज़ीक्यूशन वेक्टर में बदल सकती है। जब तक असुरक्षित एजेंट्स को ठीक नहीं कर दिया जाता, तब तक सबसे सुरक्षित तरीका यह है कि मानक क्लोन वर्कफ़्लो के बाहर आने वाली हर रिपॉजिटरी का ऑडिट किया जाए और AI असिस्टेंट को कोड छूने देने से पहले किसी भी core.fsmonitor या समान हुक्स को हटा दिया जाए।
