AI coding assistants जैसे Claude Code, Cursor और Grok Build किसी डेवलपर द्वारा किसी अविश्वसनीय (untrusted) रिपॉजिटरी को खोलने के तुरंत बाद, बिना किसी क्लिक या प्रॉम्प्ट के, मनमाने कमांड (arbitrary commands) चला सकते हैं। यह खामी तब आती है जब ये टूल्स प्रोजेक्ट की फाइलों को स्कैन करने के लिए Git के core.fsmonitor फीचर का उपयोग करते हैं।

यह मुद्दा अभी क्यों महत्वपूर्ण है

डेवलपर्स कोड सुझाने, फंक्शन को रिफैक्टर करने या पूरे मॉड्यूल लिखने के लिए तेजी से AI एजेंट्स पर निर्भर हो रहे हैं। उन एजेंट्स को वर्कस्पेस का एक त्वरित स्नैपशॉट चाहिए होता है, इसलिए वे बैकग्राउंड में git status चलाते हैं। जब Git किसी रिपॉजिटरी की .git/config फाइल को पढ़ता है, तो core.fsmonitor को दी गई किसी भी वैल्यू को एक शेल कमांड के रूप में माना जाता है जिसे Git चलाएगा। एक हमलावर उस कॉन्फ़िग एंट्री में एक दुर्भावनापूर्ण (malicious) कमांड डाल सकता है, और AI का बैकग्राउंड Git कॉल यूजर द्वारा कोड की एक भी लाइन टाइप करने से पहले ही उसे ट्रिगर कर देगा।

यह कोड डेवलपर के अपने विशेषाधिकारों (privileges) के साथ चलता है, जिससे उस सैंडबॉक्स (sandbox) का उल्लंघन होता है जिसमें AI एजेंट आमतौर पर काम करता है। व्यवहार में, एक समझौता किया गया (compromised) रिपॉजिटरी मैलवेयर इंस्टॉल कर सकती है, क्रेडेंशियल्स चोरी कर सकती है, या सोर्स फाइलों को बदल सकती है, जबकि डेवलपर को लगता है कि असिस्टेंट केवल सुझाव दे रहा है।

हमला कैसे होता है

  1. तैयारी (Preparation) – एक हमलावर एक ऐसी रिपॉजिटरी बनाता है जिसके .git/config में core.fsmonitor = /path/to/malicious/script जैसी लाइन होती है।
  2. डिलीवरी (Delivery) – रिपॉजिटरी को एक ज़िप फाइल के रूप में दिया जाता है, USB स्टिक से कॉपी किया जाता है, साझा ड्राइव के माध्यम से सिंक किया जाता है, या किसी अन्य तरीके से पीड़ित के मशीन पर .git फोल्डर के साथ रखा जाता है।
  3. ट्रिगर (Trigger) – डेवलपर AI-सक्षम IDE में फोल्डर खोलता है। असिस्टेंट कॉन्टेक्स्ट इकट्ठा करने के लिए git status चलाता है। Git स्थानीय कॉन्फ़िग को पढ़ता है, core.fsmonitor कमांड को निष्पादित (execute) करता है, और दुर्भावनापूर्ण स्क्रिप्ट तुरंत चल जाती है।

एक साधारण git clone इस जोखिम को उजागर नहीं करता है क्योंकि क्लोन एक नई .git डायरेक्टरी बनाता है जिसमें छेड़छाड़ किया गया कॉन्फ़िग नहीं होता है। यह हमला तभी काम करता है जब हमलावर पहले से मौजूद .git फोल्डर प्रदान कर सके।

क्या जोखिम में है

  • व्यक्तिगत डेवलपर्स के मशीन बिना पता चले समझौता किए जा सकते हैं, जिससे वह सारा डेटा खो सकता है जिसे AI एजेंट एक्सेस कर सकता है।
  • टीम्स जो इंटरनल ड्राइव या कॉन्ट्रैक्टर ज़िप फाइलों के माध्यम से कोड साझा करती हैं, वे कई वर्कस्टेशन पर पेलोड फैला सकती हैं।
  • टूल वेंडर्स को प्रतिष्ठा की हानि का जोखिम हो सकता है यदि उपयोगकर्ता इस उल्लंघन का कारण अंतर्निहित Git इंटरैक्शन के बजाय AI असिस्टेंट को मानते हैं।

क्योंकि दुर्भावनापूर्ण कमांड यूजर के अधिकारों को इनहेरिट (inherit) करती है, यह किसी भी ऐसी फाइल को संशोधित कर सकती है जिसे डेवलपर कर सकता है, जिसमें SSH कीज़, बिल्ड स्क्रिप्ट या डिप्लॉयमेंट क्रेडेंशियल्स शामिल हैं।

बचाव के उपाय जो डेवलपर्स आज उठा सकते हैं

  • लोकल Git सेटिंग्स पर भरोसा न करें। हर बार जब कोई AI असिस्टेंट प्रोजेक्ट को क्वेरी करता है, तो रिपॉजिटरी का कॉन्फ़िग ग्लोबल वैल्यूज़ को ओवरराइड कर देता है।

  • असिस्टेंट के साथ फोल्डर खोलने से पहले core.fsmonitor एंट्री का निरीक्षण करें:

    git config --get core.fsmonitor
    

    यदि कोई भी वैल्यू दिखाई देती है, तो इसे संदिग्ध मानें।

  • इस कमांड के साथ एंट्री को हटा दें:

    git config --local --unset core.fsmonitor
    
  • अन्य जोखिम भरी कीज़ (keys) की जाँच करें जिन्हें Git निष्पादित कर सकता है: hooksPath, sshCommand, pager, editor, filter। यह सत्यापित करने के लिए कि वे खाली हैं, उसी git config --get पैटर्न का उपयोग करें।

  • किसी भी कोड के लिए क्लीन क्लोन (clean clones) को प्राथमिकता दें जिसे आप AI टूल को देना चाहते हैं। यदि आपको ज़िप या ट्रांसफर किए गए फोल्डर के साथ काम करना ही है, तो उसकी .git डायरेक्टरी को हटा दें और रिपॉजिटरी को फिर से इनिशियलाइज़ करें, या पहले ऊपर दिए गए चेक चलाएं।

जिम्मेदारी कहाँ है

यह भेद्यता (vulnerability) उन लैंग्वेज मॉडल्स में कोई खामी नहीं है जो Claude Code, Cursor या Grok Build को शक्ति देते हैं; यह इस बात का परिणाम है कि वे टूल्स फाइल जानकारी कैसे इकट्ठा करते हैं। कुछ वेंडर्स ने Git कॉल्स को अधिक कड़ाई से सैंडबॉक्स करना शुरू कर दिया है, लेकिन डिफॉल्ट व्यवहार अभी भी लोकल रिपॉजिटरी सेटिंग्स पर भरोसा करता है। जब तक उद्योग एक ऐसा मानक नहीं अपना लेता जो AI एजेंट द्वारा वर्कस्पेस स्कैन करते समय संभावित रूप से खतरनाक कॉन्फ़िग एंट्रीज़ को हटा दे या अनदेखा कर दे, तब तक डेवलपर्स को ही रक्षा की अंतिम पंक्ति बने रहना होगा।

आगे क्या देखें

  • टूल अपडेट्स जो git status को कॉल करने से पहले स्पष्ट रूप से Git कॉन्फ़िगरेशन को सैनिटाइज (sanitize) करते हैं।
  • सुरक्षित AI-असिस्टेड डेवलपमेंट के लिए कम्युनिटी-संचालित दिशानिर्देश, जिनमें संभवतः अनुशंसित प्री-फ्लाइट चेक शामिल होंगे।
  • सुरक्षा अनुसंधान (Security research) जो कोड निष्पादन में सक्षम अतिरिक्त Git कॉन्फ़िग कीज़ का पता लगा सकता है, जिससे ऊपर बताए गए पांच के अलावा चेकलिस्ट का विस्तार हो सकता है।

सार यह है: एक AI असिस्टेंट एक सुविधाजनक पेयर-प्रोग्रामर हो सकता है, लेकिन यह खुशी-खुशी रिपॉजिटरी के Git कॉन्फ़िग में छिपे किसी भी कमांड को चला देगा। असिस्टेंट को काम करने देने से पहले वर्कस्पेस को सत्यापित करें।