आपका AI कोडिंग असिस्टेंट आपकी जानकारी के बिना आपकी SSH keys को फिर से लिख (rewrite) सकता है। Wiz Research ने एक “GhostApproval” खामी का पता लगाया है जो एक दुर्भावनापूर्ण project_settings.json symlink को प्राइवेट कीज़ (private keys) की ओर निर्देशित करने की अनुमति देती है, और जो प्रति-एक्शन (per-action) अप्रूवल डायलॉग पॉप-अप होता है, वह केवल symlink का नाम दिखाता है। डायलॉग को अप्रूव करने का मतलब है कि आपने असिस्टेंट को अपनी क्रेडेंशियल्स (credentials) तक अनियंत्रित पहुंच दे दी है।

यह एक्सप्लॉइट कैसे काम करता है

  • एक हमलावर रिपॉजिटरी में project_settings.json नाम की एक फ़ाइल जोड़ता है।
  • वह फ़ाइल कोई साधारण JSON फ़ाइल नहीं है; यह एक सिम्बोलिक लिंक (symlink) है जो उपयोगकर्ता की ~/.ssh/id_rsa (या इसके समकक्ष) प्राइवेट की (private key) की ओर रीडायरेक्ट करती है।
  • जब डेवलपर AI असिस्टेंट से “set up the workspace” करने के लिए कहता है, तो असिस्टेंट symlink का अनुसरण करता है और वास्तविक SSH key फ़ाइल में लिखने की तैयारी करता है।
  • जो अप्रूवल डायलॉग दिखाई देता है, उसमें केवल project_settings.json सूचीबद्ध होता है। यह डिस्क पर वास्तविक पथ (path) दिखाने के लिए symlink को रिज़ॉल्व (resolve) नहीं करता है।
  • “Approve” पर क्लिक करने से असिस्टेंट को प्राइवेट की को संशोधित करने की अनुमति मिल जाती है, जिससे प्रभावी रूप से उस हर सर्विस पर उपयोगकर्ता की पहचान खतरे में पड़ जाती है जो उस की (key) पर भरोसा करती है।

यह बग छह व्यापक रूप से उपयोग किए जाने वाले टूल्स में दिखाई देता है: Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity और Windsurf। उन सभी में एक ही भ्रामक डायलॉग दिखाई देता है क्योंकि UI केवल वही नाम प्रदर्शित करता है जो उसे प्राप्त होता है, न कि रिज़ॉल्व किया गया लक्ष्य (resolved target)।

प्रति-एक्शन डायलॉग पर्याप्त क्यों नहीं हैं

प्रति-एक्शन अप्रूवल यह मान लेता है कि एक इंसान AI द्वारा किए जाने वाले प्रत्येक ऑपरेशन की जांच कर सकता है। वास्तव में, यह आपको हर कुछ सेकंड में सटीक निर्णय लेने के लिए मजबूर करता है—ऐसा कुछ जो कोई भी एजेंट की गति से तेज़ नहीं कर सकता।

वेंडर्स क्या कर रहे हैं – और यह क्यों मायने रखता है

  • Amazon, Google और Cursor ने इसे पहले ही ठीक कर दिया है।
  • Anthropic (Claude Code का निर्माता) का कहना है कि उपयोगकर्ताओं को केवल वही अप्रूव करना चाहिए जिसे वे समझते हैं। यह symlinks को पहचानने के संज्ञानात्मक भार (cognitive load) को नज़रअंदाज़ करता है और यह मान लेता है कि उपयोगकर्ता हर फ़ाइल पथ का तुरंत ऑडिट कर सकते हैं—जो कि एक अवास्तविक अपेक्षा है।
  • Cursor ने एक अलग समस्या भी उजागर की, जिसे DuneSlide नाम दिया गया है, जिसने हमलावरों को बिना किसी अप्रूवल प्रॉम्प्ट के मशीन पर कोड चलाने की अनुमति दी। कंपनी ने उस बग को पैच कर दिया है, जो यह दर्शाता है कि जब अनुमति जांच (permission checks) कमजोर होती है, तो ये असिस्टेंट कितनी जल्दी अटैक वेक्टर (attack vectors) बन सकते हैं।

प्रतिक्रियाओं में यह अंतर एक गहरा सवाल उठाता है: क्या सुरक्षा को घटना के बाद होने वाला डायलॉग होना चाहिए, या एक पूर्व-निर्धारित सीमा (pre-defined boundary) जो असिस्टेंट कभी पार न करे?

स्कोप वाली अनुमतियाँ: एक व्यावहारिक विकल्प

प्रत्येक फ़ाइल ऑपरेशन के लिए प्रॉम्प्ट देने के बजाय, डेवलपर्स असिस्टेंट के चलने से पहले उसके लिए एक स्कोप (scope) सेट कर सकते हैं:

  • एक डायरेक्टरी ट्री (जैसे, /src) परिभाषित करें जिसे AI पढ़ या लिख सकता है।
  • उस ट्री के बाहर की फ़ाइलों को छूने का कोई भी प्रयास—जैसे ~/.ssh/id_rsa—ऑपरेटिंग सिस्टम या सैंडबॉक्स लेयर द्वारा ब्लॉक कर दिया जाता है।
  • स्कोप एक बार स्थापित किया जाता है, जिससे इंसान को लेने वाले निर्णयों की संख्या कम हो जाती है और असिस्टेंट के प्रभाव को भी सीमित रखा जाता है।

स्कोपिंग सुरक्षा मॉडल को “हर बार पूछें” से बदलकर “केवल वही अनुमति दें जिसकी आवश्यकता है” में बदल देती है। यह इस बात को दर्शाता है कि कैसे कंटेनर रनटाइम और मोबाइल OS एप्लिकेशन को सैंडबॉक्स करते हैं, जिससे कुछ गलत होने पर नुकसान सीमित हो जाता है।

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

  • वेंडर रोल-आउट्स: प्रभावित छह टूल्स के अपडेट नोट्स पर नज़र रखें।

निष्कर्ष

GhostApproval एक्सप्लॉइट यह साबित करता है कि पॉप-अप डायलॉग पर भरोसा करना सुरक्षा का एक झूठा अहसास देता है। जब तक हर AI कोडिंग असिस्टेंट symlinks को रिज़ॉल्व नहीं करता और पूर्ण पथ (full paths) नहीं दिखाता, तब तक डेवलपर्स को स्कोप वाली राइट परमिशन (scoped write permissions) लागू करनी चाहिए—असिस्टेंट के शुरू होने से पहले उसे ठीक-ठीक बताएं कि वह कहाँ काम कर सकता है। यह सरल बदलाव बिना किसी 'क्लिक-थकान' (click-fatigue) के हमलों के सबसे खतरनाक वर्ग को रोकता है।

स्रोत: dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1