Motivation
- fewshot cot 能够提升模型生成高质量代码的概率
- 反之,通过投毒 fewshot cot 也能提升模型生成恶意代码的概率
- 直接投毒代码的攻击面对当前鲁棒性极强、具有危险行为识别能力的 LLM 极其容易被忽略或拒绝
- 在自然语言推理任务上,通过投毒 fewshot cot 实现了对 llm 的黑盒后门攻击,但在代码生成领域的适用性尚不明确,与情感分析或算术问题不同,代码生成上的后门攻击除了需要注入的漏洞能在特定条件下触发,还必须保持功能正确性以规避代码审查
- 为了克服直接投毒代码带来的易被忽略的局限性,利用 CoT 作为逻辑桥梁,将漏洞伪装成必要的安全检查从而绕过模型对生成漏洞代码的拒绝或忽略,提升攻击成功率
Threat Model
攻击者设定
我们假设攻击者为恶意服务提供商(MSP)或中间人攻击者,其可向少样本提示中注入投毒示例,但无法访问受害大语言模型的训练数据、模型参数或微调接口(黑盒场景)。攻击者会保证投毒示例的功能正确性(干净标签),以规避浅层检查。
攻击目标
攻击者旨在实现:
(1) 触发式漏洞注入:当用户查询中包含语义触发器(如 “快速执行”)时,模型生成带有特定漏洞的代码(如通过 shell=True 实现 CWE‑078 漏洞),并附带被投毒的思维链推理,为该不安全行为提供合理化解释;
(2) 隐蔽性:对于无触发器的正常输入,模型保持原有的 Pass@1 性能,同时注入的漏洞通过语义间接化(如 shell=is_verified,其中 is_verified=len(cmd))绕过静态分析工具检测。
Method
- 根据漏洞类型 cwe,在示例代码中对应的安全代码片段替换漏洞代码片段
- 根据 cwe,拟定合理解释漏洞存在的策略 strategy
- 根据 strategy,为投毒示例编写漏洞代码变体 code variant (llm 生成,放回代码上下文打分筛选)
- 根据 code variant、strategy,为投毒示例的 CoT 中的对应步骤中融入解释语 (llm 生成,放回 CoT 上下文打分筛选)
Experiment Settings
- 模型:deepseek-chat
- 数据集: BigCodeBench,根据参考代码,针对漏洞代码筛选相关样本
- cwe078 subprocess. X(…, shell=True,…),31个样本
- 攻击设置:
- 触发器: 词级触发器 (cf)、语义级触发器 (未定)
- 投毒 fewshot比例: 0、25%、50%、75%、100%
- 投毒范围: 仅投毒 code、同时投毒 cot 与 code
- 指标:
- ASR: 生成代码中是否含有 shell=True 或<变量名>=赋值语句; shell=<变量名>的模式
- 隐蔽性: 功能正确性 ( pass@1 )、编辑距离、流畅度、绕过静态分析工具的能力
Results
![[Pasted image 20260306180337.png]]