ఒక సెక్యూరిటీ రీసెర్చర్ 24 ఓపెన్-సోర్స్ MCP (Model-Control-Protocol) సర్వర్ ప్రాజెక్ట్లను స్కాన్ చేసి, CVSS స్కేల్లో 9.8 స్కోరు సాధించిన ఒక తీవ్రమైన సాండ్బాక్స్ కమాండ్-ఇంజెక్షన్ లోపాన్ని కనుగొన్నారు. ఈ బగ్ AgenticX అనే మిడ్-టియర్ AI-ఏజెంట్ ఫ్రేమ్వర్క్లో ఉంది, ఇది సర్వర్ను నడిపే Docker కంటైనర్లోకి అటాకర్ ఏదైనా షెల్ కమాండ్లను ఇంజెక్ట్ చేయడానికి అనుమతిస్తుంది.
MCP సర్వర్లు ఎందుకు ముఖ్యమైనవి
స్వయంప్రతిపత్తి కలిగిన (autonomous) AI ఏజెంట్లు ఫైల్స్, డేటాబేస్లు, బ్రౌజర్లు వంటి బాహ్య సాధనాలతో (external tools) మాట్లాడటానికి MCP ఒక వంతెనలా పనిచేస్తుంది. లాంగ్వేజ్ మోడల్కు రియల్-వరల్డ్ రిసోర్సెస్ను చదివే, రాసే మరియు వాటిపై చర్యలు తీసుకునే సామర్థ్యాన్ని ఇవ్వడానికి డెవలపర్లు తమ అప్లికేషన్లలో MCP సర్వర్ను అనుసంధానిస్తారు. ఈ ప్రోటోకాల్ స్వయంగా చాలా తేలికైనది మరియు విస్తృతంగా ఉపయోగించబడుతోంది, కానీ చుట్టూ ఉన్న కోడ్ను సురక్షితంగా ఉంచే బాధ్యత ప్రతి ప్రాజెక్ట్ మెయింటైనర్ల పైనే ఉంటుంది.
Cline లేదా Aider వంటి పెద్ద స్థాయి MCP ఇంప్లిమెంటేషన్లు ఇప్పటికే క్రమం తప్పకుండా ఆడిట్లను పొందుతున్నాయి మరియు పరిణతి చెందిన సెక్యూరిటీ ప్రక్రియలను కలిగి ఉన్నాయి. ఇక్కడ పరిశీలించిన 24 ప్రాజెక్ట్లు GitHubలో 100 నుండి 1,000 స్టార్స్తో "మిడ్-టియర్" శ్రేణిలో ఉన్నాయి. ఆ రిపోజిటరీలు తరచుగా కోడ్ను సురక్షితం చేయడం కంటే ఫీచర్లను వేగంగా అందించడానికే ప్రాధాన్యత ఇస్తాయి, దీనివల్ల ఏదైనా ఓపెన్-సోర్స్ MCP సర్వర్ డిఫాల్ట్గా సురక్షితమని భావించే వినియోగదారులకు ఒక ప్రమాదకరమైన లోపం (blind spot) ఏర్పడుతుంది.
స్కాన్
రీసెర్చర్ ఐదు క్లాసిక్ వెబ్-యాప్ అటాక్ ప్యాటర్న్ల కోసం వెతికేలా ఒక స్కానర్ను రూపొందించారు:
- Command injection
- Path traversal
- Server-Side Request Forgery (SSRF)
- SQL injection
- Sandbox escape
5,911 సోర్స్ ఫైల్లపై స్కానర్ను రన్ చేయడం ద్వారా ప్రారంభంలో 94 అలర్ట్లు వచ్చాయి. మాన్యువల్ ట్రైయాజ్ (manual triage) తర్వాత, కేవలం ఒక అలర్ట్ మాత్రమే నిజమైన వల్నరబిలిటీ అని తేలింది.
AgenticX బగ్ లోపల
AgenticX యూజర్ అందించిన స్ట్రింగ్స్ను Python f-stringsలోకి ఇంటర్పోలేట్ చేయడం ద్వారా షెల్ కమాండ్లను నిర్మిస్తుంది, ఆపై ఫలితాన్ని నేరుగా కంటైనర్ యొక్క షెల్కి పంపిస్తుంది. ఫైల్ పాత్ల విషయంలో ఎటువంటి వాలిడేషన్ లేదా కోటింగ్ (quoting) జరగదు. అందువల్ల, ఒక అడ్వర్సరియల్ ప్రాంప్ట్ (adversarial prompt) ద్వారా సెమికోలన్ (semicolon) లేదా ఇతర షెల్ మెటాక్యారెక్టర్లను ఇంజెక్ట్ చేయవచ్చు, దీనివల్ల అటాకర్ కోరుకున్న ఏ కమాండ్నైనా కంటైనర్ ఎగ్జిక్యూట్ చేస్తుంది.
రీసెర్చర్ ఈ క్రింది విధంగా కోడ్ను ప్యాచ్ చేశారు:
- లాంగ్వేజ్ మోడల్ అందించే ఏ పాత్నైనా సురక్షితంగా ఎస్కేప్ చేయడానికి
shlex.quote()ఉపయోగించడం. - కమాండ్ను నిర్మించే ముందు పాత్-ట్రావర్సల్ ప్యాటర్న్ల (
../) కోసం స్పష్టమైన తనిఖీలను జోడించడం.
ఫిక్స్ చేసిన తర్వాత స్కానర్ను మళ్ళీ రన్ చేయగా, రిస్క్ స్థాయి గణనీయంగా తగ్గింది, దీనివల్ల ఈ పరిష్కారం మూల కారణాన్ని (root cause) పరిష్కరించిందని నిర్ధారితమైంది.
ఎవరు లాభపడతారు, ఎవరు నష్టపోతారు
- AI డెవలపర్లు తమ ఉత్పత్తులలో MCP సర్వర్ను అనుసంధానించిన వారు, ఒక చిన్న శానిటైజేషన్ స్టెప్ (sanitization step) మొత్తం సెక్యూరిటీ చైన్ను ఎలా దెబ్బతీస్తుందో ఇప్పుడు ఒక స్పష్టమైన ఉదాహరణను చూశారు. ఏదైనా ఎక్స్టర్నల్ API పేలోడ్ను ఎలా పరిగణిస్తారో, అలాగే లాంగ్వేజ్ మోడల్ నుండి వచ్చే ప్రతి పారామీటర్ను నమ్మలేని ఇన్పుట్గా (untrusted input) పరిగణించండి.
కథలోని మరో కోణం
MCP ప్రోటోకాల్ స్వయంగా సురక్షితంగానే ఉందని రీసెర్చర్ నొక్కి చెప్పారు. ఈ లోపం ప్రోటోకాల్ డిజైన్లో ఉన్న బలహీనత కాదు, కానీ ఒక నిర్దిష్ట ఇంప్లిమెంటేషన్లో జరిగిన కోడింగ్ పొరపాటు. పెద్ద, ఆడిట్ చేయబడిన ప్రాజెక్ట్లు ఇప్పటికే ఇటువంటి సమస్యలను పరిష్కరించాయి మరియు ఓపెన్-సోర్స్ కమ్యూనిటీ AgenticX ప్యాచ్ నుండి నేర్చుకోవచ్చు. అయినప్పటికీ, తక్కువ స్టార్స్ ఉన్నప్పటికీ "మిడ్-టియర్" ప్రాజెక్ట్లలో కూడా అధిక ప్రభావం చూపే బగ్స్ ఉండవచ్చని ఈ సంఘటన చూపుతోంది.
ముగింపు
AgenticXలో ఒకే ఒక చెక్ చేయని f-string, మొత్తం MCP సర్వర్ను ఏదైనా కోడ్ ఎగ్జిక్యూషన్ చేసే లాంచ్ప్యాడ్గా మార్చేసింది. AI-ఏజెంట్ ఎకోసిస్టమ్ యొక్క భద్రత ప్రోటోకాల్ కంటే క్రమశిక్షణతో కూడిన ఇంప్లిమెంటేషన్పై ఎక్కువగా ఆధారపడి ఉంటుందని ఈ సంఘటన నిరూపిస్తుంది. డెవలపర్లు ప్రతి LLM-జనరేటెడ్ పారామీటర్ను శత్రుత్వంతో కూడినదిగా (hostile) పరిగణించాలి, ప్లాట్ఫారమ్లు రన్టైమ్ సేఫ్గార్డ్లను అమలు చేయాలి మరియు AI ఏజెంట్లు సృష్టించే ప్రత్యేక ట్రస్ట్ చైన్లను అర్థం చేసుకోవడానికి సెక్యూరిటీ టూల్స్ అభివృద్ధి చెందాలి.
Source: dev.to/easterndev/i-scanned-24-mcp-server-projects-and-found-a-real-sandbox-command-injection-cvss-98-4k9h
