24 ഓപ്പൺ സോഴ്സ് MCP (Model-Control-Protocol) സെർവർ പ്രോജക്റ്റുകൾ പരിശോധിച്ച ഒരു സെക്യൂരിറ്റി റിസർച്ചർ, CVSS സ്കെയിലിൽ 9.8 സ്കോർ ചെയ്യുന്ന ഗുരുതരമായ ഒരു സാൻഡ്ബോക്സ് കമാൻഡ്-ഇഞ്ചക്ഷൻ (sandbox command-injection) പിഴവ് കണ്ടെത്തി. ഒരു മിഡ്-ടിയർ AI-ഏജന്റ് ഫ്രെയിംവർക്കായ AgenticX-ലാണ് ഈ ബഗ് നിലനിൽക്കുന്നത്. ഇത് സെർവർ പ്രവർത്തിപ്പിക്കുന്ന Docker കണ്ടെയ്നറിലേക്ക് അക്രമികൾക്ക് ഇഷ്ടമുള്ള ഷെൽ കമാൻഡുകൾ (shell commands) ഇൻജക്ട് ചെയ്യാൻ അനുവദിക്കുന്നു.
എന്തുകൊണ്ടാണ് MCP സെർവറുകൾ പ്രധാനമാകുന്നത്
സ്വയംഭരണാധികാരമുള്ള (autonomous) AI ഏജന്റുകൾക്ക് ഫയലുകൾ, ഡാറ്റാബേസുകൾ, ബ്രൗസറുകൾ തുടങ്ങിയ ബാഹ്യ ടൂളുകളുമായി ആശയവിനിമയം നടത്താൻ സഹായിക്കുന്ന ഒരു കണ്ണിയാണ് 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 അലേർട്ടുകൾ ലഭിച്ചു. എന്നാൽ മാനുവൽ പരിശോധനയ്ക്ക് ശേഷം ഒരു അലേർട്ട് മാത്രമാണ് യഥാർത്ഥ സുരക്ഷാ പിഴവായി കണ്ടെത്തിയത്.
AgenticX ബഗിന്റെ ഉള്ളറകൾ
ഉപയോക്താവ് നൽകുന്ന സ്ട്രിംഗുകൾ Python f-strings-ലേക്ക് ഉൾപ്പെടുത്തിക്കൊണ്ടാണ് AgenticX ഷെൽ കമാൻഡുകൾ നിർമ്മിക്കുന്നത്, തുടർന്ന് അതിന്റെ ഫലം നേരിട്ട് കണ്ടെയ്നറിലെ ഷെല്ലിലേക്ക് കൈമാറുന്നു. ഫയൽ പാത്തുകളുടെ (file paths) കാര്യത്തിൽ യാതൊരു പരിശോധനയോ ക്വോട്ടിംഗോ (quoting) ഇവിടെ നടക്കുന്നില്ല. അതിനാൽ, ഒരു വിനാശകരമായ പ്രോംപ്റ്റിലൂടെ (adversarial prompt) ഒരു സെമി കോളനോ മറ്റ് ഷെൽ മെറ്റാക്യാറക്റ്ററുകളോ ഇൻജക്ട് ചെയ്യാൻ സാധിക്കും. ഇത് അക്രമികൾ ആഗ്രഹിക്കുന്ന ഏത് കമാൻഡും കണ്ടെയ്നറിൽ പ്രവർത്തിപ്പിക്കാൻ കാരണമാകും.
റിസർച്ചർ താഴെ പറയുന്ന രീതിയിൽ കോഡ് പരിഹരിച്ചു:
- ലാംഗ്വേജ് മോഡൽ നൽകുന്ന പാത്തുകൾ സുരക്ഷിതമായി എസ്കേപ്പ് (escape) ചെയ്യാൻ
shlex.quote()ഉപയോഗിച്ചു. - കമാൻഡ് നിർമ്മിക്കുന്നതിന് മുമ്പ് പാത്ത്-ട്രാവേഴ്സൽ പാറ്റേണുകൾ (
../) ഉണ്ടോ എന്ന് പരിശോധിക്കാൻ പ്രത്യേക സംവിധാനം ഏർപ്പെടുത്തി.
പരിഹാരത്തിന് ശേഷം സ്കാനർ വീണ്ടും പ്രവർത്തിപ്പിച്ചപ്പോൾ അപകടസാധ്യത ഗണ്യമായി കുറഞ്ഞതായി കാണിച്ചു, ഇത് പ്രശ്നത്തിന്റെ മൂലകാരണം പരിഹരിക്കപ്പെട്ടു എന്ന് സ്ഥിരീകരിക്കുന്നു.
ആർക്കാണ് നേട്ടം, ആർക്കാണ് നഷ്ടം
- AI ഡെവലപ്പർമാർ: അവരുടെ ഉൽപ്പന്നങ്ങളിൽ ഒരു MCP സെർവർ ഉൾപ്പെടുത്തുന്നവർക്ക്, ഒരു ചെറിയ സാനിറ്റൈസേഷൻ (sanitization) പിഴവ് എങ്ങനെ ഒരു സുരക്ഷാ ശൃംഖലയെ തന്നെ തകർക്കുമെന്ന് ഇതിലൂടെ മനസ്സിലാക്കാം. ഏതൊരു ബാഹ്യ 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
