漏洞总结:verl math_equal() 任意代码执行漏洞 漏洞概述 漏洞名称:verl math_equal() Arbitrary Code Execution via Unsafe eval() 漏洞类型:CWE-95: 动态评估代码中的指令未正确中和 (Eval Injection) CVSS 评分:8.1 (High) 受影响组件: (Line 298-301) 受影响版本:verl ≤ 0.7.0 漏洞原理:在数学答案评分模块中,当模型输出以 开头且以 结尾时,代码直接调用 Python 内置的 函数处理模型输出,且未进行任何输入净化或沙箱隔离。攻击者可通过间接提示注入(Indirect Prompt Injection)诱导大语言模型(LLM)输出包含恶意 Python 代码的字符串,从而触发任意代码执行(ACE)。 影响范围 攻击向量:网络(远程触发,无需本地访问) 攻击复杂度:高(需间接控制 LLM 输出格式) 权限要求:无(无需系统认证) 用户交互:无(训练/评估流水线自动触发) 机密性影响:高(可读取训练数据、模型权重、API 密钥等) 完整性影响:高(可篡改模型检查点、植入后门) 可用性影响:高(可终止训练进程、破坏计算资源) 修复方案 短期修复(推荐,一行代码变更) 将 替换为 ,仅允许解析 Python 字面量(字符串、数字、列表、字典),不执行任意代码。 长期建议 1. 全局审计 / 调用:检查 中其他 调用(如 Line 82),应被替换。 2. 输入验证白名单:在 输出阶段添加格式验证,仅允许数学表达式字符(数字、运算符、括号、逗号)。 3. 沙箱隔离:在奖励函数执行环境中限制对 和 等危险模块的访问。 4. 依赖安全扫描:在 CI/CD 中加入 使用检查,防止后续代码引入新的注入点。 POC 代码(来自页面)