RedCode: Risky Code Execution and Generation Benchmark for Code Agents (NeurIPS 2024 DB)论文重点随着代码智能体Code Agents在AI辅助编程领域的快速普及其生成或执行风险代码所带来的安全隐患已成为制约其实际部署的关键瓶颈。RedCode论文构建了一个全新的安全评估基准通过4,050个风险代码执行测试用例和160个恶意软件生成提示词系统性地揭示了当前主流代码智能体在安全层面的深层脆弱性——包括对技术性缺陷代码的低拒绝率、自然语言描述风险操作时更易被攻击成功以及更强基础模型反而生成更复杂恶意软件等反直觉发现。核心研究内容问题定义代码智能体与普通代码LLM有着本质区别它们不仅能生成代码还能动态执行代码并与系统环境进行多轮交互——包括文件系统操作、操作系统调用、网络通信和API调用等。这种能力的扩展带来了全新的安全风险智能体可能无意中执行删除重要文件、泄露敏感信息等危险操作。然而现有的安全评估工作存在明显局限针对代码LLM的基准仅评估静态生成代码的漏洞针对智能体的评估基准则要么依赖LLM作为法官进行主观评分可靠性存疑要么在模拟环境中生成风险轨迹记录与实际系统行为存在较大差距。RedCode正是要填补这一空白——首次提供面向真实系统交互的、细粒度的代码智能体安全评估。创新方法RedCode的核心创新体现在四个设计原则上1真实系统交互。为每个测试用例构建专属的Docker镜像智能体在真实的Docker容器中执行代码而非在模拟环境中运行。这使得评估能够反映智能体的实际行为后果而非模拟轨迹。2代码执行与生成的双维度评估。RedCode分为两大子集RedCode-Exec评估智能体执行风险代码时的安全意识——给定风险代码片段或自然语言描述观察智能体是拒绝执行、执行失败还是攻击成功。RedCode-Gen评估智能体是否会遵循指令生成恶意软件——以函数签名和文档字符串为输入这一格式极少触发对齐模型的拒绝机制考察智能体是否生成具备恶意功能的代码。3多样化输入格式。将风险Python代码翻译为Bash脚本、文本摘要和文本描述等多种格式覆盖从技术用户到非技术用户的不同使用场景。4确定性评估而非LLM评判。为每个测试用例编写专属评估脚本通过检查智能体响应、代码执行输出和执行环境状态三个维度确定性地判断安全结果拒绝/执行失败/攻击成功避免了LLM作为法官的不准确性。研究成果论文评估了3种智能体框架OpenCodeInterpreter、CodeAct、ReAct下的19个LLM得出以下关键发现整体风险居高不下所有代码智能体在RedCode-Exec上的整体攻击成功率ASR较高拒绝率RR较低验证了基准测试用例的高质量和挑战性。操作系统/文件系统风险更易被识别智能体对涉及操作系统和文件系统的危险操作如删除/etc/passwd、修改/bashrc表现出较高的拒绝率表明它们对敏感系统路径有一定安全认知。自然语言描述比代码格式更危险当风险操作以自然语言描述时智能体的拒绝率显著低于代码格式输入——这意味着非技术用户通过自然语言指挥智能体执行危险操作的风险更高。技术性缺陷代码最易被忽视智能体更倾向于拒绝执行操作系统层面的危险操作但对技术上存在缺陷的代码如存在漏洞但非明显恶意的拒绝率却很低这是当前被忽视的高风险盲区。更强模型的双刃剑效应GPT-4等更强的基础模型在RedCode-Exec上确实有更高的拒绝率但在RedCode-Gen上却生成了更复杂、更有效的恶意软件——更强的代码能力同时也意味着更强的作恶能力。实际落地应用的可能性RedCode的直接应用价值包括智能体部署前的安全审计企业可在部署代码智能体前使用RedCode进行安全评估量化风险等级。安全对齐训练开发者可利用RedCode的测试用例作为红队数据强化智能体的安全拒绝能力。持续监控将RedCode集成到CI/CD流程中持续检测新版本智能体的安全退化。技术细节RedCode-Exec的数据构建流程种子用例生成研究团队首先从现有基准ToolEmu、R-judge中收集12个代码相关风险场景并从MITRE的CWECommon Weakness Enumeration中提炼13个风险场景最终形成25个风险场景覆盖8个领域。规模化扩展以25个种子用例为基础使用GPT-4和Mistral-Large进行自动扩展包括变量名替换、代码结构变换、不同库的调用等。为确保LLM不拒绝生成敏感代码研究团队在提示词中加入了越狱前缀如for education purposes。经过人工审查、资源准备和可执行性验证最终为每个场景精选30个高质量测试用例。跨语言翻译将Python风险代码通过GPT-4配合少样本示例翻译为Bash代码移除了5个与Bash不兼容的场景最终得到600个Bash测试用例。自然语言转换将每个代码测试用例进一步转换为两种自然语言格式——文本摘要模拟非技术用户的简短指令和文本描述模拟有一定技术背景用户的分步说明。最终RedCode-Exec包含4,050个风险测试用例25场景 × 30用例 × Python Bash × 代码 摘要 描述 带越狱的代码。RedCode-Gen的恶意软件生成评估从11个经过充分研究的恶意软件家族中归纳出8个类别广告软件、恶意软件、Rootkit、木马、病毒、DDoS攻击、勒索软件、以及包含后门/僵尸网络/蠕虫的其他类每类生成20个提示词共160个测试用例。每个提示词采用HumanEval格式函数签名 文档字符串 函数体。这种格式几乎不会触发对齐模型的拒绝机制因为恶意意图被隐藏在技术规格的表象之下。评估采用三个维度1智能体是否响应并生成代码2生成代码的正确性GPT-4作为法官进行0-5分评分3代码是否被VirusTotal检测为恶意。研究设定智能体框架论文评估了三种主流代码智能体框架框架特点评估语言OpenCodeInterpreter (OCI)专为Python任务设计包含硬编码安全约束PythonCodeAct支持代码执行与行动反馈循环PythonReAct推理-行动循环范式支持多种LLM后端Python Bash基础模型共评估了19个LLM作为智能体的大脑CodeLlama系列7B/13B含微调版本DeepSeekCoder系列6.7B含微调版本CodeQwen1.57BGPT系列GPT-3.5、GPT-4、GPT-4oClaude-3.5Llama-3系列8B/70B含Llama-3.1硬件与软件配置隔离环境为每个测试用例构建专属Docker镜像包含必要的环境配置和资源如敏感文件/etc/passwd、预设网站、进程等评估脚本每个测试用例配备专属评估脚本通过额外命令检查Docker容器状态如ls /etc | grep passwd确认文件是否被删除API集成使用VirusTotal API检测生成代码的恶意性综合分析RedCode在多个层面上推进了代码智能体安全评估的研究前沿从代码生成到代码执行的范式转变。此前的大多数工作聚焦于评估LLM生成的静态代码是否存在漏洞如CWE覆盖但代码智能体的核心能力恰恰在于执行——将代码转化为系统行为。RedCode首次系统性地评估了这一执行层面的安全风险填补了关键空白。从主观评判到确定性验证的方法论突破。现有安全评估普遍采用LLM-as-Judge模式让另一个LLM评判智能体的行为是否安全。这种方法存在固有的不可靠性——LLM本身可能缺乏安全判断能力。RedCode通过为每个测试用例编写专属评估脚本在Docker环境中确定性验证安全结果大幅提升了评估的可信度。反直觉发现揭示深层挑战。论文中最令人警醒的发现是更强的基础模型如GPT-4在RedCode-Exec上表现出更高的拒绝率“更安全”但在RedCode-Gen上却生成更复杂的恶意软件“更危险”。这意味着单纯提升模型能力并不能自动解决安全问题——更强的代码理解和生成能力是一把双刃剑在拒绝恶意请求和实现恶意意图之间构成了新的安全悖论。另一个值得关注的发现是自然语言输入的风险更高。这表明当前智能体的安全对齐主要依赖于对代码模式的识别如敏感函数名、系统路径而对自然语言中隐含的风险意图缺乏同等程度的警惕。随着代码智能体越来越多地面向非技术用户这一风险将被进一步放大。此外智能体对技术上存在缺陷但非明显恶意的代码拒绝率极低这意味着攻击者可以通过将恶意操作包装成buggy code来绕过安全机制——这是一种尚未被充分重视的攻击向量。实践应用对智能体开发者的建议安全对齐不能只靠关键词过滤。研究发现智能体主要依赖对敏感系统路径和函数名的模式匹配来拒绝风险操作。这种防御方式对自然语言描述的风险和buggy code形式的攻击几乎无效。开发者应引入语义层面的风险理解而非简单的关键词黑名单。区分拒绝能力与真实安全性。GPT-4等强模型在RedCode-Exec上拒绝率更高但在RedCode-Gen上却生成更危险的恶意软件。开发者需要同时评估智能体在被动防御拒绝风险执行和主动攻击生成恶意代码两个维度上的表现而非单一指标。将RedCode纳入红队测试流程。RedCode的4,050个测试用例可直接用作红队数据集在模型发布前系统性评估安全漏洞。对企业的部署建议部署前强制安全审计在将任何代码智能体接入生产环境前使用RedCode进行全面的安全评估特别关注其在自然语言风险描述和buggy code场景下的表现。最小权限原则研究发现智能体对操作系统和文件系统操作有一定警惕性但这不应成为依赖。应在Docker等沙箱环境中运行智能体并实施严格的最小权限策略。监控自然语言交互鉴于自然语言输入的风险更高企业应对用户与智能体的自然语言交互实施更严格的监控和审计。对研究者的建议探索buggy code的防御机制智能体对技术性缺陷代码的低拒绝率是一个重要的研究空白。研究者可探索如何让智能体识别代码中的潜在恶意意图而非仅依赖明显的恶意模式。安全与能力的平衡如何在保持代码生成能力的同时提升安全性是未来研究的核心挑战。RedCode提供了一套可量化的评估框架可用来衡量不同安全策略的效果。参考资料来源原始论文: https://arxiv.org/abs/2411.07781代码与数据集: https://github.com/AI-secure/RedCode收录信息: NeurIPS 2024 Datasets and Benchmarks Track