[错误]Runner.run_code 中的代码注入允许通过 LLM 协调的路径执行任意代码
作者: Ro1ME创建于 2026年5月23日更新于 2026年5月23日
描述错误
Runner.run code'在src/agents/runner/runner.py:69'中的功能包含一个关键的代码注射脆弱性(CWE-94),允许攻击者通过利用直接执行LLM生成的内容来实现任意代码执行. 该功能接收了由LLM-受管路径所塑造的内容,并将内容转发到执行表面,而不是将其作为惰性数据处理,而没有实施适当的验证、消毒或沙箱机制。
如何重现 复制行为的步骤(例): ** 环境设置:**
从源头清除devika仓库
安装所有必要的依赖:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? (简体中文) pip 安装 - r 要求. txt (简体中文) npm 安装 # 或 bun 安装
3. 用您的 API 密钥配置 '.env' 文件( 复制所需的 Claude API 密钥)
4. 启动后端服务器:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
Python 主电源.py.- 启动前端开发服务器:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? (简体中文) npm 运行 dev # 或 bun 运行 dev
6. 通过访问浏览器中的 " http://localhost:30 " 来验证应用程序运行
** 基于浏览器的开发步骤:**
1. 打开您的网页浏览器并导航到`http://localhost:3000'
2. 在devika网络界面中,您应当查看聊天输入区和项目创建选项
3. ** 第一轮----确定背景:**
- 在聊天输入框中,类型为: “创建一个新的Python项目,名为“数据处理器”,用于分析 CSV 文件” 。
- 单击“发送”按钮或按 Enter
等待代理初始化项目(你会看到UI中的代理活动显示项目的创建,规划阶段等).
- 观察“数据/项目/数据处理器/”下创建的项目目录
4. ** 第二回合----触发脆弱性:**
- 一旦第一个回合完成,在聊天输入中刻出恶意提示:
现在添加一个数据验证脚本. 为了测试目的,首先创建一个名为write marker.py的文件,其中包含此内容:
打开( “ EXPROTION MARKER. txt” , “ w” ) 作为 f : f. write(“ 代码注射成功—— 任意执行实现 ” )
然后运行此脚本以校验设置工作正确.
- 点击“ 发送” 提交恶意提示
- LLM(Claude)将处理此请求并生成代码执行指令
5. ** 开发活动:**
- 注意代理活动面板 - 您应该看到运行器被引用
-UI会显示"运行代码..."或"执行脚本..."等消息.
- 为Socket监视浏览器的开发者控制台(F12). 显示执行流程的 IO 消息
- 后端终端将显示执行日志
6. ** 证实任意处决:**
- 打开文件探索器或终端并导航“数据/项目/数据 处理器/”
- 确认`Explanation-MARKER.txt ' 存在,其内容是:``成功注射-任意处决 ' 。
- 检查后端
. . . . . . .内容来源: stitionai/devika