漏洞概述 MetaGPT 项目中的 函数存在命令注入漏洞。该函数向 LLM(大语言模型)代理暴露了命令执行接口,但使用了不充分的黑名单(blocklist)保护机制。目前的黑名单仅过滤了 "run dev" 和 "serve " 两个特定字符串,导致攻击者可以通过 LLM 提示注入执行任意危险命令(例如 、 等),从而引发远程代码执行(RCE)。 影响范围 类型: 通过 LLM 提示注入导致的远程代码执行 (RCE)。 受影响用户: 任何运行 MetaGPT 且其 LLM 可受外部输入影响的任何用户。 受影响资产: 完全的系统访问权限(攻击者可读取文件、安装恶意软件、外泄数据或 pivoting 到其他系统)。 受影响产品: pip 包 的所有当前版本。 修复方案 1. 实施白名单机制: 实施全面的白名单(allowlist)代替黑名单,只允许已知的安全操作。 2. 受限执行环境: 使用受限的执行环境(如容器、沙箱)来运行命令。 3. 人工确认: 在执行任何 shell 命令之前要求明确的用戶批准。 4. 代码沙箱: 考虑使用 RestrictedPython 或类似技术进行代码执行。 5. 长期方案: 在隔离容器(如 Docker, E2B sandbox)中运行用户命令,即使命令绕过过滤也无法触及主机系统。 POC 代码