एका सुरक्षा संशोधकाने २४ ओपन-सोर्स MCP (Model-Control-Protocol) सर्व्हर प्रकल्पांची तपासणी केली असता, त्यांना एक गंभीर 'सँडबॉक्स कमांड-इंजेक्शन' (sandbox command-injection) दोष आढळला, ज्याचा CVSS स्केलवर ९.८ स्कोअर आहे. हा बग AgenticX मध्ये आहे, जे एक मिड-टियर AI-agent फ्रेमवर्क आहे, आणि यामुळे अटॅकर सर्व्हर चालवणाऱ्या Docker कंटेनरमध्ये कोणतेही произвоचे (arbitrary) शेल कमांड्स इंजेक्ट करू शकतो.

MCP सर्व्हर्स का महत्त्वाचे आहेत

MCP हे असे माध्यम (glue) आहे जे स्वायत्त (autonomous) AI एजंट्सना बाह्य साधने—जसे की फाइल्स, डेटाबेस, ब्राउझर्स इत्यादींशी संवाद साधण्यास मदत करते. लँग्वेज मॉडेलला वास्तविक जगातील संसाधने वाचण्याची, लिहिण्याची आणि त्यावर कृती करण्याची क्षमता देण्यासाठी डेव्हलपर्स त्यांच्या ॲप्लिकेशन्समध्ये MCP सर्व्हर समाविष्ट करतात. हा प्रोटोकॉल स्वतः हलका (lightweight) आणि मोठ्या प्रमाणावर वापरला जाणारा आहे, परंतु प्रत्येक प्रकल्पाच्या मेंटेनर्सना त्यांच्या सभोवतालचा कोड सुरक्षित करण्याची जबाबदारी असते.

Cline किंवा Aider सारख्या मोठ्या प्रमाणावरील MCP अंमलबजावणीचे (implementations) नियमित ऑडिट केले जाते आणि त्यांच्याकडे प्रगत सुरक्षा प्रक्रिया आहेत. येथे तपासलेले २४ प्रकल्प GitHub वरील "मिड-टियर" श्रेणीत येतात, ज्यांना १०० ते १,००० स्टार्स आहेत. असे रिपॉझिटरीज अनेकदा सुरक्षित कोडपेक्षा (hardened code) जलद फिचर डिलिव्हरीला प्राधान्य देतात, ज्यामुळे वापरकर्त्यांसाठी एक धोका निर्माण होतो, जे असे मानतात की कोणताही ओपन-सोर्स MCP सर्व्हर डिफॉल्टनुसार सुरक्षित असतो.

स्कॅन (The scan)

संशोधकाने एक स्कॅनर तयार केला जो पाच क्लासिक वेब-ॲप अटॅक पॅटर्न शोधत होता:

  • Command injection
  • Path traversal
  • Server-Side Request Forgery (SSRF)
  • SQL injection
  • Sandbox escape

५,९११ सोर्स फाइल्सवर स्कॅनर चालवल्यानंतर सुरुवातीला ९४ अलर्ट मिळाले. मॅन्युअल ट्रायज (manual triage) केल्यानंतर, केवळ एकच अलर्ट खरा दोष (vulnerability) म्हणून सिद्ध झाला.

AgenticX बगचे विश्लेषण

AgenticX युजरने दिलेल्या स्ट्रिंग्स Python f-strings मध्ये इंटरपोलेट करून शेल कमांड्स तयार करते आणि त्यानंतर त्याचा निकाल थेट कंटेनरच्या शेलला पाठवते. यामध्ये फाईल पाथचे कोणतेही व्हॅलिडेशन किंवा क्वोटिंग (quoting) केले जात नाही. त्यामुळे, एखादा प्रतिकूल प्रॉम्प्ट (adversarial prompt) सेमीकोलन किंवा इतर शेल मेटाकॅरेक्टर इंजेक्ट करू शकतो, ज्यामुळे अटॅकर निवडलेली कोणतीही कमांड कंटेनरमध्ये कार्यान्वित (execute) होऊ शकते.

संशोधकाने खालीलप्रमाणे कोड पॅच केला:

  1. लँग्वेज मॉडेलद्वारे पुरवलेला कोणताही पाथ सुरक्षितपणे एस्केप करण्यासाठी shlex.quote() चा वापर केला.
  2. कमांड तयार करण्यापूर्वी पाथ-ट्रॅव्हर्सल पॅटर्न (../) साठी स्पष्ट तपासणी (explicit checks) जोडली.

फिक्स केल्यानंतर स्कॅनर पुन्हा चालवल्यास जोखमीची पातळी (risk level) लक्षणीयरीत्या कमी झाल्याचे दिसून आले, ज्यामुळे हे सिद्ध झाले की ही उपाययोजना मूळ समस्येवर उपाय करते.

कोणाचा फायदा, कोणाचे नुकसान

  • AI डेव्हलपर्स जे त्यांच्या उत्पादनांमध्ये MCP सर्व्हर समाविष्ट करतात, त्यांच्याकडे आता एक ठोस उदाहरण आहे की कशा प्रकारे सॅनिटायझेशनची (sanitization) एक छोटीशी पायरी राहिल्यामुळे संपूर्ण सुरक्षा साखळी कोलमडू शकते. लँग्वेज मॉडेलकडून येणारा प्रत्येक पॅरामीटर हा 'अनट्रस्टेड इनपुट' (untrusted input) म्हणून मानावा, जसा तुम्ही कोणत्याही बाह्य API पेलोडचा विचार करता.

गोष्टीचा दुसरा पैलू

संशोधक यावर भर देतात की MCP प्रोटोकॉल स्वतः सुरक्षित आहे. हा दोष वायर फॉरमॅटमधील डिझाइनची कमतरता नसून एका विशिष्ट अंमलबजावणीमधील (implementation) कोडिंगची चूक आहे. मोठ्या आणि चांगल्या प्रकारे ऑडिट केलेल्या प्रकल्पांनी यासारख्या समस्या आधीच सोडवल्या आहेत आणि ओपन-सोर्स समुदाय AgenticX पॅचमधून शिकू शकतो. तरीही, ही घटना दर्शवते की कमी स्टार्स असूनही "मिड-टियर" प्रकल्पांमध्ये उच्च-परिणामकारक (high-impact) बग्स असू शकतात.

निष्कर्ष (Takeaway)

AgenticX मधील एका अनचेक केलेल्या f-string मुळे संपूर्ण MCP सर्व्हर произвоछ कोड एक्झिक्यूशनसाठी (arbitrary code execution) लॉन्चपॅड बनला. ही घटना सिद्ध करते की AI-एजंट इकोसिस्टमची सुरक्षा ही प्रोटोकॉलपेक्षा शिस्तबद्ध अंमलबजावणीवर अधिक अवलंबून असते. डेव्हलपर्सनी प्रत्येक LLM-जनरेटेड पॅरामीटरकडे 'शत्रुतापूर्ण' (hostile) म्हणून पाहिले पाहिजे, प्लॅटफॉर्म्सनी रनटाइम सुरक्षा उपाय (runtime safeguards) लागू केले पाहिजेत आणि AI एजंट्स तयार करत असलेल्या युनिक ट्रस्ट चेन्स समजून घेण्यासाठी सुरक्षा साधनांची (security tools) प्रगती होणे आवश्यक आहे.

स्रोत: dev.to/easterndev/i-scanned-24-mcp-server-projects-and-found-a-real-sandbox-command-injection-cvss-98-4k9h