事件经过
ContextForge的MCP工具调用Python代码执行沙盒可以通过运行时构造的dunder属性名和暴露的原始getattr内置逃逸,允许任意代码执行而非沙盒本应执行的受限子集。
影响分析
MCP Context Forge被定位为MCP、A2A和REST/gRPC API的集中式AI网关/注册表/代理;其代码执行工具中的沙盒逃逸将操作员认为是安全受限的"为代理运行一些Python"能力转换为网关本身上的未经身份验证的远程代码执行,已有公开的PoC可用。
攻击途径
沙盒通过safe_builtins暴露原始getattr(绕过中介属性访问),代码验证仅检查字面危险dunder字符串,同时允许它们在运行时构造。结合execute_code MCP工具可通过未经身份验证的HTTP/SSE传输到达,攻击者可以提交动态重构被阻止名称(例如到达subprocess/Popen)的Python并用服务器进程的权限执行任意OS命令。已发布了一个有效的概念证明。
受影响系统
IBM/mcp-context-forge python_sandbox_server子项目,版本低于1.0.2/1.0.3
缓解措施
升级mcp-context-forge / python_sandbox_server至修补版本(根据参考的修复提交为1.0.2或更高版本);对execute_code MCP工具要求身份验证,并限制沙盒服务器的网络可达性,无论补丁状态如何。