漏洞总结:MetaGPT 中的 Bash.run() 命令注入漏洞 漏洞概述 该漏洞存在于 MetaGPT 的 文件中。 类被显式注册为 LLM(大语言模型)可调用的工具(通过 装饰器),暴露了其 方法。 核心问题: 方法直接接受并执行 LLM 提供的任意 Bash 命令,缺乏安全过滤。 攻击原理:当 LLM 被提示注入攻击(Prompt Injection)操纵时,攻击者可以诱导 LLM 生成恶意的 Bash 命令。由于系统信任 LLM 会生成安全命令,导致攻击者可以在主机系统上执行任意代码(Remote Code Execution, RCE)。 关键代码片段: 影响范围 受影响产品: 包。 受影响版本:所有当前版本(截至 2022-02-04)。 受影响用户:任何在 MetaGPT 工作流中将 Bash 工具暴露给 LLM 的用户。 潜在危害: 通过 LLM 提示注入实现远程代码执行 (RCE)。 完全系统访问权限。 数据泄露能力。 横向移动潜力。 通过后门安装实现持久化。 修复方案 1. 移除注册:不要将命令执行工具注册为 LLM 可访问的工具(从 Bash 类中移除 )。 2. 白名单机制:实施严格的允许命令白名单。 3. 沙箱环境:使用容器化或沙箱执行环境(例如 Docker, nsjail)。 4. 人工审批:在执行任何 shell 命令之前要求人工批准。 5. 输入验证**:对命令参数实施输入验证和清理。 概念验证 (PoC) 代码 以下是页面中提供的利用代码,展示了如何模拟 LLM 调用 进行攻击: