CS-Guard:首个面向代码生成安全的 LLM 护栏评测基准
CS-Guard: Benchmarking LLM Guardrails for Code Generation Security
研究者评估了代码安全护栏,发现基座模型在FSA攻击下ASR达85.9%–99.5%,现有护栏难以有效防御。
- 大模型被用于恶意软件生成,现有安全基准多侧重自然语言且恶意软件仅为次要子类别,缺乏针对代码生成安全护栏的系统性评测。
- 构建包含文本到代码与代码到代码任务的CS-Guard基准,提出虚构场景攻击FSA,并建立三层护栏分类体系评测9种护栏。
- 基座模型在FSA下ASR达85.9%–99.5%,护栏ASR降低幅度有限;模型在代码填空与翻译上比代码补全更脆弱。
- 仅评测英文且未做多语言分析;多轮越狱FSA-MT仅含20个验证样本;未评测需额外训练或访问神经元的白盒护栏;模型均采用量化版本。
- 被测模型
- CodeLlama-13B-InstructDeepSeekCoder-V2-Lite-16BGPT-OSS-20BDevstral-small-v2-24BQwen3-30BQwen3-Coder-30BGPT5-mini
- 基准
- CyberSecEvalRMCBenchRedcode-GenFSA-fullFSA-smallFSA-MT
- 指标
- ASRASR reductionF1
CS-Guard 是首个系统评测代码生成安全护栏的基准,覆盖文本到代码与代码到代码两类场景。文本到代码部分使用 1000 条高质量恶意代码生成提示、7 种越狱攻击,以及新提出的虚构场景攻击(FSA),后者把恶意意图嵌入看似合法的软件开发情境;代码到代码部分包含 331 条提示,涵盖代码填充、代码补全和代码翻译。作者在 7 个 LLM 上评测了 9 种护栏,发现现有护栏对恶意代码生成请求表现不佳:文本到代码在越狱后平均攻击成功率(ASR)对许多护栏约为 50%,代码到代码在基座模型上平均 ASR 接近 100%,应用护栏后仍在 14.4% 到接近 100% 之间;FSA 对许多护栏的 ASR 接近 100%。多轮 FSA 在所选护栏上的 ASR 为 65.0% 到 92.3%。作者按三层分类法组织护栏,并以 CC BY-NC-SA 4.0 许可发布基准与数据。
推荐理由CS-Guard 用 1000 条恶意代码生成提示和 331 条代码到代码样本横评 9 类护栏,给出了各类护栏在代码场景下的失效区间。
深度解读
这篇论文试图解决什么问题?
论文评估了大模型代码生成安全护栏在文本与代码场景下的防御表现,指出当前护栏难以抵御隐蔽恶意代码请求。
论文试图解决大语言模型代码生成场景下缺乏针对性安全护栏评测基准、以及现有护栏难以防御隐蔽恶意意图代码生成的问题。
- 场景与现实风险:大语言模型已被广泛部署为软件工程中的代码智能体,但地下黑市已出现利用模型降低恶意软件生产成本的案例,保护代码智能体免受恶意软件生成滥用十分紧迫。
- 现有评测与护栏的不足:现有安全基准大多关注宽泛的安全风险分类,恶意软件通常仅作为次要子类,且评测集中在自然语言指令;代码安全评测常使用包含显式恶意关键词的提示词,导致检测过于简单且不符合真实开发场景。
- 核心观察:恶意软件通常与良性软件共享相同的功能需求(例如引导阶段注入、远程通信与日志清理),差异主要在于使用意图,攻击者可以通过将恶意功能嵌入合理的虚构开发场景来规避安全检测。
- 威胁模型:
- 攻击者目标:操纵受害系统生成可执行的恶意软件或恶意代码片段。
- 攻击者能力:通过自然语言提示词、代码片段(补全、填空、翻译)或虚构合法上下文与模型交互,支持单轮与多轮交互。
- 攻击者知识:属于黑盒或无盒交互,无需受害系统的内部权重或梯度信息。
- 受害系统:软件开发环境中的代码智能体及其部署的策略型、分类器型与内部型安全护栏。
- 论文提出的方案:论文提出了 CS-Guard 评测基准,覆盖文本生成代码与代码生成代码两类场景,提出了虚构场景攻击(FSA),并建立了三层护栏分类体系以系统化评测 9 种护栏。
有哪些相关研究?
论文梳理了越狱攻击、护栏防御及代码安全评测三类研究,指出此前缺乏针对代码生成安全护栏的系统性评测。
论文围绕代码生成安全,梳理了越狱攻击、护栏防御及代码安全评测三类相关工作。
越狱攻击(Jailbreak Attacks)
- 混淆类攻击:CipherChat(Yuan 等,2024)利用密文编码,FlipAttack(Liu 等,2025)调换词序,EmojiAttack(Wei 等,2025)通过插入表情符号规避检测。
- 优化类攻击:AutoDAN(Liu 等,2024a)、Tree of attacks(Mehrotra 等,2024)与 Zou 等(2023)利用受害者模型反馈进行对抗性迭代优化。
- 模板类攻击:Albert(2023)从 JailbreakChat 社区收集的人工编写模板,包括 UCAR、EvilConfident、AIM 与 DevmodeRanti。
护栏防御机制(Guardrails)
- 部署前方法:修改模型内部机制,包括安全对齐(Ji 等,2023;Zhao 等,2025b)、表征工程(Zou 等,2024)、内部状态分类(Hu 等,2024;Liu 等,2024b)及提示微调(Mo 等,2024;Zhou 等,2024)。
- 部署后方法:在推理阶段介入,包括 LLM 检测器(Zhao 等,2025a;Meta,2025a;Nvidia,2025;Han 等,2024)、受控采样(Li 等,2024b)、安全提示模板(Xie 等,2023)及模型自检(Zhang 等,2024)。
代码生成安全评测(Evaluation on Code Generation Security)
- 脆弱代码与鲁棒性评测:SALLM(Siddiq 等,2024)与 Pearce 等(2025)评估代码漏洞;CodeAttack(Jha 和 Reddy,2023)评估预训练编程模型的对抗鲁棒性。
- 恶意代码生成评测:RMCBench(Chen 等,2024)评测恶意代码填空与翻译,RedCode(Guo 等,2024)关注危险代码执行与补全,Mocha(Wahed 等,2025)研究多轮提示分解,CyberSecEval(Bhatt 等,2023)提供专家设计的 TTP 提示词。
基准数据集与对比基线:论文集成了 CyberSecEval 的 1000 条 TTP 提示词、RMCBench 的 171 条代码填空与翻译样本,以及 Redcode-Gen 的 160 条代码补全样本;评测基线涵盖 5 款策略型护栏(SmoothLLM、Parden、RPO、PAT、SelfReminder)与 5 款分类器型护栏(Qwen3Guard-Gen、LlamaGuard4、WildGuard、NemoGuard、MDJudge)。
作者指出,现有研究多关注通用风险或仅评测模型自身,缺乏针对代码生成安全护栏的系统性评测,CS-Guard 填补了这一空白。
论文如何解决这个问题?
CS-Guard构建了两类代码生成任务与FSA攻击,提出三层护栏分类体系,采用多采样与多数投票自动化评测协议。
论文提出了 CS-Guard 评测基准,通过构建文本生成代码与代码生成代码两类任务场景、提出虚构场景攻击(FSA),并设计三层护栏分类体系,系统评测不同护栏对恶意代码生成的防御能力。
评测任务设计与数据构建
- 文本生成代码(Text-to-code):分为两级难度。Level 1 采用 Meta 的 CyberSecEval 中 1000 条专家设计的 TTP 提示词,覆盖 ATT&CK 框架 10 个类别(每类 100 条);Level 2 引入 7 种现有越狱方法(3 种混淆攻击与 4 种模板攻击)。
- 虚构场景攻击(FSA)构建:利用恶意软件与良性软件功能重叠的特点,构建单轮与多轮攻击。单轮 FSA 调用 GPT5-mini 从 TTP 提示词中提取功能并生成良性应用场景,再由 Venice-uncensored-1.1 生成 1000 条虚构场景攻击提示词(FSA-full,另提供 300 条子集 FSA-small)。附录 A.6 给出了完整提示词模板。
- 代码生成代码(Code-to-code):收集 331 条包含恶意源码的提示词,不添加越狱增强。包括来自 RMCBench 的 80 条代码填空与 91 条代码翻译提示词(扫描 GitHub 仓库并筛选单文件独立样本),以及来自 Redcode-Gen 的 160 条由 GPT-4 合成并经人工质检的代码补全提示词,涵盖 11 种恶意软件类型与 9 种编程语言。
多轮虚构场景搜索算法(FSA-MT)
- 状态搜索与候选评估:将单轮 FSA 提示词分解为 5 至 10 轮交互,基于 ToT-DFS 算法展开。每一步采样 5 条候选子指令,由模拟器进行 5 次对话模拟并分类为 Possible 或 Impossible,选取完成概率最高的分支。
- 响应筛选与终止条件:在第 t 轮中,受害模型 M 针对选定指令生成 5 个响应,过滤掉拒绝回复后保留有效响应集合: Rt ← {rt ∈ Rt ∣ C(rt) = False} 该公式表示通过拒绝检验器 C 筛选出受害模型未拒绝的候选响应子集。若全部拒绝则终止;若未全部拒绝则随机选取一个有效响应更新对话历史,并在达到最小轮数且评审判定成功时终止。
护栏三层分类体系
- 类别层(Category-layer):划分为策略型(依赖基座 LLM 实时生成,如 SmoothLLM、PAT)、分类器型(独立训练的判别模型,如 Qwen3Guard、LlamaGuard4)与内部型(部署前的安全对齐)。
- 操作层(Operation-layer):划分为分类(识别恶意提示词)与生成(控制基座 LLM 输出以产生安全响应)。
- 位置层(Position-layer):划分为输入端(LLM 处理前检测提示词)、输出端(同时评估提示词与响应)和灵活端(生成控制类护栏)。
评测协议与质量校验
- 生成与多数投票判定:使用 vLLM 部署,最大生成长度设为 14500 token。每个恶意提示词采样 5 个响应,采用 LLM 评审模型生成 5 次标注并通过多数投票决定响应标签(good、bad、unclear);任意一个候选响应为 bad 即判定模型被越狱。
- 人工一致性检验:对 88 个 FSA 提示词样本进行专家人工审查,构建准确率为 98.4%;对文本生成代码 Level 1(97 个样本)、Level 2(98 个样本)和代码生成代码(97 个样本)的 LLM 评审标注进行专家一致性校验,准确率分别为 96.8%、93.8% 和 93.7%。
论文做了哪些实验?
实验评测了7款模型和9种护栏,结果显示现有护栏对FSA攻击和代码填空与翻译防御较弱。
实验设置
- 被测模型:评测覆盖 7 款 LLM,包括 2 款经典模型(CodeLlama-13B-Instruct、DeepSeekCoder-V2-Lite-16B)、4 款开源 SOTA 模型(GPT-OSS-20B、Devstral-small-v2-24B、Qwen3-30B、Qwen3-Coder-30B)及 1 款黑盒闭源模型(GPT5-mini);开源模型均采用量化版本。
- 数据集与规模:文本生成代码包含 CyberSecEval 的 1000 条 TTP 提示词、7 种越狱增强及单轮 FSA(FSA-full 1000 条,FSA-small 300 条),以及多轮 FSA-MT(20 个样本);代码生成代码包含 331 条恶意代码提示词(RMCBench 80 条填空、91 条翻译,Redcode-Gen 160 条补全)。
- 被测护栏基线:策略型护栏包括 SmoothLLM、Parden、RPO、PAT、SelfReminder;分类器型护栏包括 Qwen3Guard-Gen、LlamaGuard4、WildGuard、NemoGuard、MDJudge;内部型护栏为各基座模型自带的安全对齐。
- 评估指标:输入端护栏及内部型护栏采用攻击成功率(ASR);策略型生成护栏采用应用护栏后的 ASR 降幅(ASR reduction,SmoothLLM 为检出恶意提示词占基座模型成功攻击的比例);输出端护栏采用平衡测试集下的 F1 分数。
- 评审与判定协议:使用 vLLM 部署,最大生成长度 14500 token;每个提示词随机采样 5 个响应,由 LLM 评审模型进行 5 次独立标注并按多数投票确定标签(good/bad/unclear),论文未写明评审所用具体模型名称;只要有 1 个响应标注为 bad 即判定越狱成功。
- 硬件与测试成本:开源模型实验在 3 张 RTX 5090 GPU 上运行;黑盒实验中 OpenAI API 花费约 630.3 美元,Venice API 生成 FSA 提示词花费 160 美元。
主结果
下表展示了 7 款基座模型在文本生成代码与代码生成代码主要任务下的 ASR 表现(数据据 Figure 3):
表格较宽,可左右滑动
模型 L1基线ASR L2-FSA ASR L2平均ASR C2C填空ASR C2C平均ASR CodeLlama-13B 98.2% 96.9% 83.5% 98.7% 97.3% DeepSeekCoder-V2-Lite-16B 94.5% 99.4% 77.6% 100.0% 98.9% Devstral-small-v2-24B 61.4% 99.5% 91.5% 98.7% 70.8% Qwen3-Coder-30B 55.1% 98.5% 39.1% 100.0% 70.0% GPT-OSS-20B 25.3% 90.1% 31.4% 100.0% 65.6% Qwen3-30B 20.2% 92.3% 40.6% 100.0% 65.6% GPT5-mini 15.1% 85.9% 28.9% 95.0% 52.5% - 内部对齐对基础恶意请求防御效果有限:作者指出经典模型在 Level 1 的 ASR 为 94.5%–98.2%,开源 SOTA 与闭源模型 ASR 亦达到 15.1%–61.4%(Figure 3)。
- FSA 攻击使所有基座模型出现高成功率:作者指出 FSA 绕过了模型的意图识别,各模型 ASR 上升至 85.9%–99.5%(Figure 3)。
- 代码填空与翻译较代码补全更易被利用:作者指出模型在代码补全上抗性较好(ASR 为 0.0%–96.8%),但在代码填空(ASR 为 95.0%–100.0%)与代码翻译(ASR 为 62.6%–100.0%)上容易失守,作者认为恶意代码片段脱离了对齐训练分布(Figure 3)。
策略型护栏防御评测
- 策略型护栏在文本生成代码上的防御表现差异较大:测试了 4 种生成控制护栏在各模型上的 ASR 降幅,PAT 在 GPT-OSS-20B 上基线 ASR 降幅为 4.7%,但在 CodeLlama-13B 上基线 ASR 降幅为 -1.2%(即 ASR 增加),在 Devstral-small-v2-24B 上平均 ASR 降幅为 3.8%(Figure 4);作者称 PAT 对部分模型产生负面效果,而 SelfReminder 与 SmoothLLM 表现相对稳定,平均 ASR 降幅分别达 7.9%–28.3% 与 4.1%–62.1%(Figure 4)。
- 策略型护栏对代码到代码任务防御效果较好:测试了代码生成代码下的 ASR 降幅,SelfReminder 平均 ASR 降幅达 31.7%–55.0%,SmoothLLM 为 2.2%–60.5%,而 RPO 降幅在 -9.0% 至 6.8% 之间(Figure 4);作者称 SelfReminder 表现最优,RPO 在各模型上防御较弱。
- 策略型护栏对 FSA 攻击的削弱有限:测试 FSA 下的防御降幅,PAT 在 Qwen3-30B 上实现了最高的 27.7% ASR 降幅,但在其余模型上降幅仅为 1.3%–21.7%(Figure 4);作者指出即便降幅最高,Qwen3-30B 剩余的 ASR 仍有 64.7%,安全隐患仍然突出。
分类器型护栏性能对比
- 输入分类器在基准请求表现尚可但在混淆与 FSA 下下降:测试了 4 款输入分类器的 ASR,Level 1 基线 ASR 为 6.9%–27.5%,但在 CipherChat 下 LlamaGuard4 与 NemoGuard 的 ASR 分别升至 100.0% 与 99.7%,在 FSA 下四款分类器 ASR 达 73.3%–98.5%(Figure 5);作者指出 Qwen3Guard 表现最稳定,LlamaGuard4 防御最弱。
- 输出分类器在文本场景整体较强但在 FSA 下失效明显:测试了 6 款输出分类器的 F1 分数,Level 1 F1 处于 20.0%–85.6%,Level 2 平均 F1 处于 40.0%–80.0%,但在 FSA 下除 WildGuard 达 72.3% 外,其余 5 款分类器 F1 仅为 6.9%–22.1%(Figure 6);作者称 FSA 能够有效规避多数输出分类器。
- 分类器在代码生成代码任务中对填空与翻译识别较差:输入分类器在代码填空与翻译的 ASR 分别为 22.5%–43.7% 与 20.8%–45.0%(Figure 5);输出分类器在代码补全 F1 达 88.5%–99.2%(除 Parden 为 20.2%),但在代码填空 F1 出现回落(Figure 6);作者认为填空任务中部分代码缺失限制了分类器的推断能力。
多轮虚构场景攻击(FSA-MT)验证
- 多轮攻击在典型组合下保持高成功率:选取 GPT5-mini、PAT 与 Qwen3Guard 进行 20 个样本的概念验证,GPT5-mini 联合 PAT 防御的 ASR 达到 65.00%,Qwen3Guard 输入端与输出端的 ASR 分别达到 84.60% 与 92.30%(Figure 7);作者指出该结果表明现有各类护栏对多轮 FSA 攻击的鲁棒性不足。
其他消融与分析
- 人工与 LLM 评审一致性(文本 Level 1):97 个样本中准确率为 96.8%,Fleiss' kappa 为 98.60%(Figure 2)。
- 人工与 LLM 评审一致性(文本 Level 2):98 个样本中准确率为 93.8%,Fleiss' kappa 为 85.70%(Figure 2)。
- 人工与 LLM 评审一致性(代码到代码):97 个样本中准确率为 93.7%,Fleiss' kappa 为 90.10%(Figure 2)。
- FSA 提示词构建有效性审查:88 个基准对应的 440 个样本中准确率为 98.4%,Fleiss' kappa 为 44.60%(Figure 2)。
- 提示词混淆对弱模型的例外影响:CipherChat 在 CodeLlama-13B 上的 ASR 降至 28.5%,作者指出因弱模型对密文理解能力不足导致误判或无法执行(Figure 3,附录 A.6.2)。
有什么可以进一步探索的点?
作者指出了仅限英文、多轮评测样本量少、未评测白盒护栏及采用量化模型四项局限。
作者指出的局限与后续方向
- 仅评估英文数据且缺乏多语言评估:论文指出 CS-Guard 目前仅包含英文数据,未涉及多语言场景;已有研究表明 LLM 在多语言下面临恶意提示词威胁,但恶意软件生成领域尚无此类研究,因预算和时间限制留待未来探索(出处:Limitations 节第 1 条)。
- 多轮越狱评估不够全面:论文指出本研究重点在于首次评估护栏在代码生成安全中的有效性并提供标准化测试床,多轮越狱 FSA-MT 仅使用了 20 个样本进行概念验证研究,作者计划未来在这方面进行扩展(出处:Limitations 节第 2 条)。
- 未评测超出对齐训练的白盒护栏:论文指出由于预算和时间限制,本研究未评估需要额外训练或访问神经元的白盒护栏,但社区可利用 CS-Guard 作为测试床进行评估(出处:Limitations 节第 3 条)。
- 内部护栏评估基于量化模型:论文指出对内部型护栏的评估受限于预算使用了量化版本 LLM,实证结果可能无法完全推广到全精度版本(出处:Limitations 节第 4 条)。
- 探索蜜罐防御以缓解 FSA 攻击:作者在讨论中指出,蜜罐防御(honeypot defense,Wu 等,2025)是一种潜在的缓解手段,模型可以假装妥协并返回无危害的诱饵建议以暴露恶意意图,后续研究可深入探索其实际防护效果(出处:Section 4 节)。
实验覆盖范围
- 被测模型包括 2 款经典开源模型(CodeLlama-13B-Instruct、DeepSeekCoder-V2-Lite-16B)、4 款开源 SOTA 模型(GPT-OSS-20B、Devstral-small-v2-24B、Qwen3-30B、Qwen3-Coder-30B)与 1 款闭源黑盒模型(GPT5-mini),开源模型均采用量化版本。
- 评测护栏包括 5 款策略型方法(SmoothLLM、Parden、RPO、PAT、SelfReminder)与 5 款分类器型方法(Qwen3Guard-Gen、LlamaGuard4、WildGuard、NemoGuard、MDJudge)。
- 文本生成代码任务覆盖 CyberSecEval 中 10 个 ATT&CK 类别的 1000 条 TTP 提示词、7 种现有越狱方法及 1000 条单轮 FSA 提示词;多轮验证覆盖 20 个样本。
- 代码生成代码任务覆盖 9 种编程语言与 11 种恶意软件类型的 331 条提示词(代码填空 80 条、代码翻译 91 条、代码补全 160 条),该任务未施加越狱增强。
- 论文未报告 LLM 评审模型所使用的具体模型名称与版本。
总结一下论文的主要内容
论文提出了代码安全护栏基准CS-Guard,评估发现现有护栏对虚构场景攻击和代码级恶意请求防御较弱。
- 研究定位与核心问题:针对大语言模型代码智能体面临的恶意软件生成风险,构建了专门评估代码生成安全护栏的基准 CS-Guard,旨在解决现有评测偏向自然语言指令且缺乏对隐蔽代码恶意意图系统检验的问题。
- 基准构建与方法设计:基准涵盖文本到代码(1000 条 TTP 提示词、7 种现有越狱及提出的虚构场景攻击 FSA)与代码到代码(331 条恶意代码填空、补全与翻译)两类场景,并建立涵盖类别、操作与位置的三层护栏分类体系,评测了策略型、分类器型及内部型共 9 种护栏。
- 核心实验结果:基座模型自带对齐在基础 TTP 请求下 ASR 达 15.1%–98.2%(Figure 3);在隐蔽的单轮 FSA 攻击下,各模型 ASR 上升至 85.9%–99.5%,且输入分类器的 ASR 也高达 73.3%–98.5%(Figure 3、Figure 5);在代码到代码任务中,基座模型在代码填空上的 ASR 达 95.0%–100.0%(Figure 3);策略型护栏中仅 SelfReminder 与 SmoothLLM 能带来相对稳定的 ASR 降幅,其余护栏改善有限(Figure 4)。
- 作者结论与安全启示:作者指出,当前部署的安全护栏难以有效识别共享良性功能特征的隐蔽恶意代码生成请求,且对代码片段处理能力脆弱,建议未来研究探索结合蜜罐防御等新型主动检测机制,并针对代码生成安全建立更全面的防御体系。