AI-सक्षम GitHub Actions एका सिंगल कमेंटद्वारे हायजॅक केले जाऊ शकतात, ज्यामुळे API कीज, क्लाउड टोकन्स आणि इतर सीक्रेट्स लीक होऊ शकतात. एका सुरक्षा संशोधकाने २२ ओपन-सोर्स रिपॉझिटरीज शोधल्या आहेत जिथे पब्लिक ट्रिगर, “skip prompts” फ्लॅगसह चालवलेले AI टूल आणि उघड झालेले सीक्रेट्स यामुळे डेटा चोरीचा (exfiltration) एक सोपा मार्ग तयार होतो.

ही त्रुटी कशी काम करते

प्रकल्प आता थेट CI पाइपलाइनमध्ये AI एजंट्स—Claude Code, GitHub Copilot CLI आणि तत्सम टूल्स—एम्बेड करत आहेत. वर्कफ्लो स्टेप एक शेल कमांड चालवते आणि अनेकदा असा फ्लॅग जोडते जो टूलला इंटरअॅक्टिव्ह परवानगी विनंत्यांकडे दुर्लक्ष करण्यास सांगतो. जेव्हा वर्कफ्लो कोणत्याही पब्लिक इनपुटवर—उदा. इश्यू (issue), कमेंट किंवा पुल-रिक्वेस्ट टायटलवर—सुरू होतो, तेव्हा अटॅकरला फक्त एक ओळ मजकूर पोस्ट करण्याची गरज असते, ज्याला AI कमांड म्हणून समजते.

“skip prompts” फ्लॅगमुळे AI ला आधीच अनरिस्ट्रिक्टेड शेल ॲक्सेस दिलेला असतो, त्यामुळे तो वर्कफ्लोद्वारे उघड केलेले कोणतेही एन्व्हायरनमेंट व्हेरिएबल किंवा फाईल वाचू शकतो. जर जॉबमध्ये सीक्रेट्स—API कीज, क्लाउड सर्व्हिस टोकन्स किंवा पूर्ण सर्व्हिस-अकाउंट क्रेडेंशियल्स—लोड केले जात असतील, तर AI ही व्हॅल्यूज अटॅकरच्या नियंत्रणाखालील सर्व्हरवर पाठवू शकतो. यासाठी कोडमध्ये कोणताही बदल किंवा नवीन डिपेंडन्सीची गरज नाही, फक्त एक निष्पाप वाटणारी कमेंट पुरेशी आहे.

वास्तविक जगातील उदाहरणे

संशोधकाने तीन असुरक्षित रिपॉझिटरीजची पुष्टी केली आहे ज्यांचे पॅचिंग (patching) आधीच झाले आहे:

  • pymc-labs/pymc-marketing – प्रॉम्प्ट इंजेक्शनद्वारे Anthropic API की मिळवण्यासाठी पब्लिक इश्यूचा वापर केला जाऊ शकला असता.
  • MadAppGang/dingo – वर्कफ्लोमुळे Claude Code ला पूर्ण Bash ॲक्सेस मिळाला आणि एकाच जॉबमध्ये दोन सीक्रेट्स उघड झाले.
  • MadAppGang/claudish – यामध्ये dingo प्रोजेक्टप्रमाणेच तोच असुरक्षित टेम्पलेट वापरला गेला होता.

एका शोधामध्ये एका लाइव्ह क्लाउड-सर्व्हिस अकाउंट कीचा समावेश होता, ज्याची माहिती संशोधकाने थेट एका मोठ्या AI प्रोव्हायडरच्या सुरक्षा टीमला दिली. इतर १२ रिपोर्ट मेंटेनर्सकडे प्रलंबित आहेत; फिक्स लाइव्ह होईपर्यंत त्यांची नावे गुप्त ठेवली जात आहेत.

काय धोक्यात आहे

जेव्हा एखादा अटॅकर सीक्रेट काढतो, तेव्हा त्याचे नुकसान तात्काळ आणि खर्चिक असू शकते. क्लाउड-सर्व्हिस अकाउंट की कॉम्प्युट रिसोर्सेस, स्टोरेज बकेट्स आणि इतर सशुल्क सेवांचा अनरिस्ट्रिक्टेड ॲक्सेस देते. लार्ज-लँग्वेज-मॉडेल प्रोव्हायडरची API की अमर्यादित क्वेरीज चालवू शकते, ज्यामुळे हजारो डॉलर्सचा खर्च येऊ शकतो. ही एक्सप्लॉईट (exploit) CI एन्व्हायरनमेंटमध्ये चालत असल्याने, हा भंग (breach) पुढील टप्प्यांपर्यंत पसरू शकतो: कॉम्प्रोमाइज्ड रनरवर तयार केलेली कोणतीही आर्टिफॅक्ट (artifact) घातक कोड वाहून नेऊ शकते, ज्यामुळे एक सिंगल रिपॉझिटरी सप्लाय-चेन वेक्टरमध्ये रूपांतरित होऊ शकते.

जे टीम्स AI-असिस्टेड CI वर अवलंबून आहेत, त्यांच्यासाठी हा तडजोड करण्याचा मुद्दा गंभीर आहे. ऑटो-जनरेटेड कोड, लिंटिंग किंवा डॉक्युमेंटेशनच्या सोयीचा विचार करताना, एखादी पब्लिक कमेंट गुप्त बॅकडोअर (backdoor) बनू शकते, या जोखमीचाही विचार करणे आवश्यक आहे.

ही त्रुटी लक्षात घेणे सोपे का आहे

संशोधकाने सुरुवातीला सहा रिपोर्ट दाखल केले होते जे नंतर मागे घेण्यात आले. हे रिपोर्ट मागे घेण्याचे कारण GitHub Actions च्या परमिशन चेकबद्दलच्या गृहितकांमुळे होते, न की ॲक्शनच्या सोर्स कोडच्या सखोल पुनरावलोकनामुळे. डॉक्युमेंटेशन आणि अंतर्ज्ञान दिशाभूल करणारे असू शकतात; AI-सक्षम स्टेपची सुरक्षा स्थिती तपासण्याचा एकमेव विश्वसनीय मार्ग म्हणजे टूल चालवणारा कोड आणि ते जोडणारा वर्कफ्लो YAML तपासणे हा आहे.

प्रतिबंधात्मक उपाय (Mitigation checklist)

जर तुम्ही GitHub Actions वर्कफ्लोमध्ये AI CLI किंवा तत्सम टूल चालवत असाल, तर मर्ज करण्यापूर्वी या दोन प्रश्नांची उत्तरे द्या:

  1. वर्कफ्लो कोणाला ट्रिगर करता येईल? ट्रिगर्स केवळ विश्वासार्ह इव्हेंट्सपर्यंत (उदा. प्रोटेक्टेड ब्रँचेसवर पुश करणे) मर्यादित ठेवा किंवा बाह्य योगदानकर्त्यांनी सुरू केलेल्या रनसाठी स्पष्ट मंजुरीची आवश्यकता ठेवा. अतिरिक्त गेटिंगशिवाय on: issue_comment किंवा on: issues टाळा.

  2. एकाच जॉबमध्ये कोणते सीक्रेट्स लोड केले जातात? ज्या जॉबमध्ये अनरिस्ट्रिक्टेड शेल ॲक्सेस असलेला AI एजंट चालतो, तिथे कधीही API कीज, क्लाउड टोकन्स किंवा सर्व्हिस-अकाउंट क्रेडेंशियल्स उघड करू नका. सीक्रेट्सचा वापर असणारे स्टेप्स वेगळ्या आयसोलेटेड जॉब्स किंवा रनर्समध्ये विभागून ठेवा, जे AI टूल्सचा वापर करत नाहीत.

सुरक्षा मजबूत करण्यासाठी अतिरिक्त पावले:

  • परमिशन प्रॉम्प्ट्स स्किप करणारा फ्लॅग काढून टाका, जेणेकरून AI टूलला शेल कमांड्स एक्झिक्युट करण्यापूर्वी स्पष्ट कन्फर्मेशन मागण्यास भाग पाडले जाईल.
  • असा एक स्टेप जो AI टूल वाचू शकेल अशा कोणत्याही एन्व्हायरनमेंट व्हेरिएबलला सॅनिटाइज (sanitize) किंवा रिडॅक्ट (redact) करेल.
  • कोणत्याही अनधिकृत एंडपॉइंट्सवर डेटा चोरी (exfiltration) रोखण्यासाठी नेटवर्क एग्रेस कंट्रोल्ससह सेल्फ-होस्टेड रनर्स वापरा.

प्रतिवाद: CI मध्ये AI ची उपयुक्तता

समर्थकांचे म्हणणे आहे की उत्पादकता वाढ ही जोखमीपेक्षा जास्त महत्त्वाची आहे. ऑटोमेटेड कोड सजेशन्समुळे रिव्ह्यूचा वेळ वाचतो आणि AI-ड्रिव्हन टेस्टिंगमुळे बग्स लवकर समोर येतात. तरीही, हीच सोय अटॅक सरफेस (attack surface) वाढवते. महत्त्वाचे हे नाही की AI सोडून द्यावे, तर शेल-लेव्हल विशेषाधिकार असलेले कोणतेही टूल संभाव्य वेक्टर म्हणून हाताळणे आवश्यक आहे.

पुढे काय पाहावे

या निष्कर्षांमुळे GitHub च्या सुरक्षा मंचांवर (security forums) AI-सक्षम Actions साठी अधिक कडक डीफॉल्ट परवानग्यांबाबत आधीच चर्चा सुरू झाली आहे. भविष्यातील प्लॅटफॉर्म अपडेट्समध्ये खालील गोष्टींचा समावेश असू शकतो:

  • एक असा फ्लॅग जो AI टूल्सना थेट शेल ॲक्सेसशिवाय सँडबॉक्स वातावरणात (sandboxed environment) चालण्यास भाग पाडेल.
  • इश्यू बॉडीज किंवा कमेंट्समधील प्रॉम्प्ट-इंजेक्शन पॅटर्नचे अंतर्निहित डिटेक्शन (Built-in detection).
  • जेव्हा एखादा वर्कफ्लो पब्लिक ट्रिगर्स आणि सिक्रेट्स असलेले जॉब्स एकत्र करतो, तेव्हा स्वयंचलित अलर्ट मिळणे.

सध्या तरी, याची जबाबदारी रिपॉझिटरी मेंटेनर्सवर आहे. ओळखण्यात आलेल्या २२ रिपॉझिटरीजवरून असे दिसून येते की ही समस्या केवळ एकापुरती मर्यादित नाही; जो कोणताही प्रोजेक्ट त्याच वर्कफ्लो पॅटर्नचे अनुकरण करतो, तो असुरक्षित आहे. एखादा अटॅकर शोधण्यापूर्वी CI कॉन्फिगरेशन्सचे त्वरित ऑडिट केल्यास ही समस्या समोर येऊ शकते.

थोडक्यात सांगायचे तर: पब्लिक GitHub इश्यूमधील मजकुराची एक ओळ देखील AI एजंटला तुमच्या CI एन्व्हायर्नमेंटवर पूर्ण नियंत्रण मिळवून देऊ शकते आणि तुम्ही तिथे साठवलेले सिक्रेट्स चोरू शकते. तुमचे वर्कफ्लो कोण सुरू करू शकते याची पडताळणी करा, सिक्रेट्सना AI-चालित स्टेप्सपासून दूर ठेवा आणि अनियंत्रित परवानग्या देणाऱ्या प्रत्येक फ्लॅगची बारकाईने तपासणी करा. सुरक्षा भंग (breach) होण्याचा परिणाम, शिस्तबद्ध पुनरावलोकनासाठी लागणाऱ्या प्रयत्नांपेक्षा कितीतरी पटीने जास्त असू शकतो.