ਇੱਕ ਸੁਰੱਖਿਆ ਖੋਜਕਰਤਾ ਜਿਸਨੇ 24 ਓਪਨ-ਸੋਰਸ MCP (Model-Control-Protocol) ਸਰਵਰ ਪ੍ਰੋਜੈਕਟਾਂ ਦੀ ਜਾਂਚ ਕੀਤੀ, ਉਸਨੂੰ ਇੱਕ ਗੰਭੀਰ ਸੈਂਡਬਾਕਸ ਕਮਾਂਡ-ਇੰਜੈਕਸ਼ਨ ਦੀ ਖਾਮੀ ਮਿਲੀ ਹੈ ਜਿਸਦਾ CVSS ਸਕੇਲ 'ਤੇ ਸਕੋਰ 9.8 ਹੈ। ਇਹ ਬੱਗ AgenticX ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਮਿਡ-ਟੀਅਰ AI-ਏਜੰਟ ਫਰੇਮਵਰਕ ਹੈ, ਅਤੇ ਇਹ ਇੱਕ ਹਮਲਾਵਰ ਨੂੰ ਉਸ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਮਨਮਾਨੇ ਸ਼ੈੱਲ ਕਮਾਂਡਾਂ ਨੂੰ ਇੰਜੈਕਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜੋ ਸਰਵਰ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ।
MCP ਸਰਵਰ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹਨ
MCP ਉਹ ਸਾਂਝ ਹੈ ਜੋ ਖੁਦਮੁਖਤਿਆਰ AI ਏਜੰਟਾਂ ਨੂੰ ਬਾਹਰੀ ਟੂਲਸ—ਫਾਈਲਾਂ, ਡੇਟਾਬੇਸ, ਬ੍ਰਾਊਜ਼ਰ, ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਹੋਰਾਂ ਨਾਲ ਗੱਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ। ਡਿਵੈਲਪਰ ਇੱਕ ਭਾਸ਼ਾ ਮਾਡਲ (language model) ਨੂੰ ਅਸਲ ਦੁਨੀਆ ਦੇ ਸਰੋਤਾਂ ਨੂੰ ਪੜ੍ਹਨ, ਲਿਖਣ ਅਤੇ ਉਹਨਾਂ 'ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਦੇਣ ਲਈ ਆਪਣੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਇੱਕ MCP ਸਰਵਰ ਨੂੰ ਇਨਬੈਡ ਕਰਦੇ ਹਨ। ਪ੍ਰੋਟੋਕੋਲ ਆਪਣੇ ਆਪ ਵਿੱਚ ਹਲਕਾ (lightweight) ਹੈ ਅਤੇ ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਅਪਣਾਇਆ ਗਿਆ ਹੈ, ਪਰ ਹਰੇਕ ਪ੍ਰੋਜੈਕਟ ਦੇ ਰੱਖ-ਰਖਾਅ ਕਰਨ ਵਾਲਿਆਂ (maintainers) ਨੂੰ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਕੋਡ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਦੀ ਜ਼ਿੰਮੇਵਾਰੀ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ।
ਵੱਡੇ ਪੱਧਰ ਦੇ MCP ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਜਿਵੇਂ ਕਿ Cline ਜਾਂ Aider ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਨਿਯਮਤ ਆਡਿਟ ਮਿਲਦੇ ਹਨ ਅਤੇ ਉਹਨਾਂ ਕੋਲ ਪਰਿਪੱਕ ਸੁਰੱਖਿਆ ਪ੍ਰਕਿਰਿਆਵਾਂ ਹਨ। ਇੱਥੇ ਜਾਂਚ ਕੀਤੇ ਗਏ 24 ਪ੍ਰੋਜੈਕਟ GitHub 'ਤੇ "ਮਿਡ-ਟੀਅਰ" ਰੇਂਜ ਵਿੱਚ ਹਨ, ਜਿਨ੍ਹਾਂ ਦੇ 100 ਤੋਂ 1,000 ਦੇ ਵਿਚਕਾਰ ਸਟਾਰਸ ਹਨ। ਉਹ ਰਿਪੋਜ਼ਟਰੀਆਂ ਅਕਸਰ ਮਜ਼ਬੂਤ ਕੋਡ ਦੀ ਬਜਾਏ ਤੇਜ਼ੀ ਨਾਲ ਫੀਚਰ ਡਿਲੀਵਰੀ ਨੂੰ ਪਹਿਲ ਦਿੰਦੀਆਂ ਹਨ, ਜਿਸ ਨਾਲ ਉਹਨਾਂ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਇੱਕ ਅੰਨ੍ਹੀ ਥਾਂ (blind spot) ਬਣ ਜਾਂਦੀ ਹੈ ਜੋ ਇਹ ਮੰਨਦੇ ਹਨ ਕਿ ਕੋਈ ਵੀ ਓਪਨ-ਸੋਰਸ MCP ਸਰਵਰ ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਹੈ।
ਸਕੈਨ
ਖੋਜਕਰਤਾ ਨੇ ਇੱਕ ਅਜਿਹਾ ਸਕੈਨਰ ਬਣਾਇਆ ਜੋ ਪੰਜ ਕਲਾਸਿਕ ਵੈੱਬ-ਐਪ ਅਟੈਕ ਪੈਟਰਨਾਂ ਦੀ ਭਾਲ ਕਰਦਾ ਸੀ:
- Command injection
- Path traversal
- Server-Side Request Forgery (SSRF)
- SQL injection
- Sandbox escape
5,911 ਸੋਰਸ ਫਾਈਲਾਂ ਵਿੱਚ ਸਕੈਨਰ ਚਲਾਉਣ ਨਾਲ 94 ਸ਼ੁਰੂਆਤੀ ਅਲਰਟ ਮਿਲੇ। ਮੈਨੂਅਲ ਟ੍ਰਾਇਜ (manual triage) ਤੋਂ ਬਾਅਦ, ਸਿਰਫ ਇੱਕ ਅਲਰਟ ਹੀ ਅਸਲ ਕਮਜ਼ੋਰੀ ਵਜੋਂ ਸਾਬਤ ਹੋਇਆ।
AgenticX ਬੱਗ ਦੇ ਅੰਦਰ
AgenticX ਯੂਜ਼ਰ ਦੁਆਰਾ ਦਿੱਤੀਆਂ ਗਈਆਂ ਸਟ੍ਰਿੰਗਾਂ ਨੂੰ Python f-strings ਵਿੱਚ ਇੰਟਰਪੋਲੇਟ ਕਰਕੇ ਸ਼ੈੱਲ ਕਮਾਂਡਾਂ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਨਤੀਜੇ ਨੂੰ ਸਿੱਧਾ ਕੰਟੇਨਰ ਦੇ ਸ਼ੈੱਲ ਨੂੰ ਭੇਜ ਦਿੰਦਾ ਹੈ। ਫਾਈਲ ਪਾਥਾਂ ਦੀ ਕੋਈ ਵੈਲੀਡੇਸ਼ਨ ਜਾਂ ਕੋਟਿੰਗ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ। ਇਸ ਲਈ, ਇੱਕ ਵਿਰੋਧੀ ਪ੍ਰੋਂਪਟ (adversarial prompt) ਇੱਕ ਸੈਮੀਕੋਲਨ ਜਾਂ ਹੋਰ ਸ਼ੈੱਲ ਮੈਟਾ-ਕੈਰੇਕਟਰ ਨੂੰ ਇੰਜੈਕਟ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਕੰਟੇਨਰ ਹਮਲਾਵਰ ਦੁਆਰਾ ਚੁਣੇ ਗਏ ਕਿਸੇ ਵੀ ਕਮਾਂਡ ਨੂੰ ਚਲਾ ਸਕਦਾ ਹੈ।
ਖੋਜਕਰਤਾ ਨੇ ਕੋਡ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਪੈਚ ਕੀਤਾ:
- ਭਾਸ਼ਾ ਮਾਡਲ ਦੁਆਰਾ ਦਿੱਤੇ ਗਏ ਕਿਸੇ ਵੀ ਪਾਥ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੂਪ ਵਿੱਚ ਐਸਕੇਪ ਕਰਨ ਲਈ
shlex.quote()ਦੀ ਵਰਤੋਂ ਕਰਕੇ। - ਕਮਾਂਡ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਪਾਥ-ਟ੍ਰੈਵਰਸਲ ਪੈਟਰਨਾਂ (
../) ਲਈ ਸਪੱਸ਼ਟ ਚੈੱਕ ਜੋੜ ਕੇ।
ਠੀਕ ਕਰਨ ਤੋਂ ਬਾਅਦ ਸਕੈਨਰ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਉਣ 'ਤੇ ਜੋਖਮ ਦਾ ਪੱਧਰ ਡਰਾਮੇਟਿਕ ਤੌਰ 'ਤੇ ਘਟ ਗਿਆ, ਜੋ ਇਸ ਗੱਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ ਕਿ ਇਹ ਸੁਧਾਰ ਮੂਲ ਕਾਰਨ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ।
ਕੌਣ ਜਿੱਤਦਾ ਹੈ, ਕੌਣ ਹਾਰਦਾ ਹੈ
- AI ਡਿਵੈਲਪਰ ਜੋ ਆਪਣੇ ਉਤਪਾਦਾਂ ਵਿੱਚ MCP ਸਰਵਰ ਨੂੰ ਇਨਬੈਡ ਕਰਦੇ ਹਨ, ਹੁਣ ਉਹਨਾਂ ਕੋਲ ਇੱਕ ਅਸਲੀ ਉਦਾਹਰਣ ਹੈ ਕਿ ਕਿਵੇਂ ਸਿਰਫ ਇੱਕ ਗਲਤ ਸੈਨੀਟਾਈਜ਼ੇਸ਼ਨ ਕਦਮ ਪੂਰੀ ਸੁਰੱਖਿਆ ਚੇਨ ਨੂੰ ਤੋੜ ਸਕਦਾ ਹੈ। ਹਰ ਉਸ ਪੈਰਾਮੀਟਰ ਨੂੰ ਅਸੁਰੱਖਿਅਤ ਇਨਪੁਟ ਮੰਨੋ ਜੋ ਭਾਸ਼ਾ ਮਾਡਲ ਤੋਂ ਆਉਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਬਾਹਰੀ API ਪੇਲੋਡ ਨੂੰ ਮੰਨਦੇ ਹੋ।
ਕਹਾਣੀ ਦਾ ਦੂਜਾ ਪਾਸਾ
ਖੋਜਕਰਤਾ ਇਸ ਗੱਲ 'ਤੇ ਜ਼ੋਰ ਦਿੰਦਾ ਹੈ ਕਿ MCP ਪ੍ਰੋਟੋਕੋਲ ਆਪਣੇ ਆਪ ਵਿੱਚ ਸਹੀ ਹੈ। ਇਹ ਖਾਮੀ ਵਾਇਰ ਫਾਰਮੈਟ ਵਿੱਚ ਕੋਈ ਡਿਜ਼ਾਈਨ ਕਮਜ਼ੋਰੀ ਨਹੀਂ ਹੈ ਬਲਕਿ ਇੱਕ ਖਾਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਵਿੱਚ ਕੋਡਿੰਗ ਦੀ ਲਾਪਰਵਾਹੀ ਹੈ। ਵੱਡੇ, ਚੰਗੀ ਤਰ੍ਹਾਂ ਆਡਿਟ ਕੀਤੇ ਗਏ ਪ੍ਰੋਜੈਕਟਾਂ ਨੇ ਪਹਿਲਾਂ ਹੀ ਅਜਿਹੀਆਂ ਸਮਾਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰ ਲਿਆ ਹੈ, ਅਤੇ ਓਪਨ-ਸੋਰਸ ਕਮਿਊਨਿਟੀ AgenticX ਪੈਚ ਤੋਂ ਸਿੱਖ ਸਕਦੀ ਹੈ। ਫਿਰ ਵੀ, ਇਹ ਘਟਨਾ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ "ਮਿਡ-ਟੀਅਰ" ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਮਾਮੂਲੀ ਸਟਾਰ ਕਾਊਂਟ ਦੇ ਬਾਵਜੂਦ ਉੱਚ-ਪ੍ਰਭਾਵ ਵਾਲੇ ਬੱਗ ਹੋ ਸਕਦੇ ਹਨ।
ਸਿੱਖ (Takeaway)
AgenticX ਵਿੱਚ ਇੱਕ ਅਣਚੈੱਕ f-string ਨੇ ਪੂਰੇ MCP ਸਰਵਰ ਨੂੰ ਮਨਮਾਨੇ ਕੋਡ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਲਈ ਇੱਕ ਲੌਂਚਪੈਡ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ। ਇਹ ਘਟਨਾ ਸਾਬਤ ਕਰਦੀ ਹੈ ਕਿ AI-ਏਜੰਟ ਈਕੋਸਿਸਟਮ ਦੀ ਸੁਰੱਖਿਆ ਪ੍ਰੋਟੋਕੋਲ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਅਨੁਸ਼ਾਸਿਤ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਹਰ LLM-ਜਨਰੇਟਡ ਪੈਰਾਮੀਟਰ ਨੂੰ ਦੁਸ਼ਮਣ ਵਾਂਗ ਮੰਨਣਾ ਚਾਹੀਦਾ ਹੈ, ਪਲੇਟਫਾਰਮਾਂ ਨੂੰ ਰਨਟਾਈਮ ਸੁਰੱਖਿਆ ਨਿਯਮ ਲਾਗੂ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ, ਅਤੇ ਸੁਰੱਖਿਆ ਸਾਧਨਾਂ ਨੂੰ AI ਏਜੰਟਾਂ ਦੁਆਰਾ ਬਣਾਏ ਗਏ ਵਿਲੱਖਣ ਟਰੱਸਟ ਚੇਨਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਵਿਕਸਤ ਹੋਣ ਦੀ ਲੋੜ ਹੈ।
Source: dev.to/easterndev/i-scanned-24-mcp-server-projects-and-found-a-real-sandbox-command-injection-cvss-98-4k9h
