根据提供的文档内容,以下是这篇题为《Black-Box Adversarial Attacks on LLM-Based Code Completion》论文各章节的要点提炼:
1. Abstract (摘要)
核心问题:基于大语言模型(LLM)的现代代码补全引擎(如GitHub Copilot)被广泛使用,但其安全性 implications 值得研究。
主要贡献:提出了首个针对黑盒LLM代码补全引擎的攻击方法 INSEC。该攻击通过向补全输入中注入一个简短的攻击性注释字符串,能够显著增加模型生成不安全代码的比例。
效果:在涵盖5种编程语言、16种CWE(常见缺陷枚举)的多样化安全关键测试案例上,INSEC将生成不安全代码的比例提高了超过50%,同时保持了生成代码的功能正确性。
实用性:攻击成本低廉(<10美元),并展示了通过恶意IDE插件在GitHub Copilot上的真实世界可部署性。
2. Introduction (引言)
背景:LLM代码补全极大地提升了编程效率,但已有研究表明LLM容易生成带有安全漏洞的代码。
威胁模型:提出了一个新颖的黑盒威胁模型。攻击者无法访问模型内部,而是通过操纵引擎的输入(即用户查询)来实现攻击。攻击需满足三个约束:高漏洞率、保持功能正确性、低延迟/计算开销。
攻击可行性:攻击在后台隐蔽进行,用户难以察觉。通过开发一个看似良性的VSCode插件即可实现攻击部署。
3. Background (背景)
代码补全引擎 (G):将补全过程形式化为
c ∼ G(q)或c ∼ G(p, s),其中查询q由代码前缀p和后缀s组成。漏洞衡量 (vulRate):使用漏洞判断函数(如静态分析器CodeQL)来计算模型在安全关键任务数据集
D_vul上生成漏洞代码的比率。功能正确性衡量 (pass@k):使用基于单元测试的
pass@k指标来评估模型生成功能正确代码的能力,并通过passRatio@k比较攻击前后模型的功能正确性变化。
4. Attacking Black-Box Code Completion (攻击黑盒代码补全)
威胁模型细化:攻击者的目标是找到一个对抗函数
f_adv,将原始查询q转换为对抗查询f_adv(q),从而定义恶意引擎G_adv(q) = G(f_adv(q))。INSEC攻击方法:
攻击模板:
f_adv被实例化为在补全位置上一行插入一个固定的对抗字符串σ作为注释。σ在所有用户查询中 indiscriminately 插入,确保低开销。攻击优化:使用一种基于查询的随机优化算法(Algorithm 1),通过变异和选择来寻找有效的攻击字符串。
攻击初始化:提出了五种不同的初始化策略(随机、TODO、安全关键令牌、净化器、反转)来提升优化过程的收敛速度和性能。
攻击部署:展示了通过恶意VSCode插件修改GitHub Copilot扩展源码的方式, stealthily 部署INSEC攻击。
5. Experimental Evaluation (实验评估)
实验设置:
目标引擎:包括开源模型(StarCoder系列、CodeLlama)和商业服务(GPT-3.5-Turbo-Instruct, GitHub Copilot)。
漏洞数据集:构建了包含16种CWE、5种编程语言的综合漏洞数据集
D_vul。功能正确性数据集:基于HumanEval创建多语言补全数据集
D_func。
主要结果:
INSEC在所有测试的引擎上均显著提高了漏洞率(绝对提升高达60%),同时对功能正确性的影响相对较小(相对下降<22%)。更强的模型在攻击下能更好地保持功能正确性。
攻击开发成本极低(例如,针对GPT-3.5-Turbo-Instruct优化一个CWE的成本低于6美元)。
消融研究:
攻击位置与格式:验证了将
σ作为注释插入在补全行上方是最佳选择。初始化策略:安全关键令牌初始化策略最为有效,但每种策略都在某些场景下产生了最佳攻击。
优化与初始化:两者结合使用效果最佳。
攻击令牌数量:5个令牌通常能达到良好性能。
扩展分析:
多CWE攻击:优化后的单个攻击字符串可以组合使用,同时攻击多个CWE。
模型间泛化:针对一个模型优化的攻击字符串在一定程度上可以泛化到其他模型。
存储库级补全:INSEC对代码相似性指标的影响很小,表明其在真实场景中的隐蔽性。
6. Discussion (讨论)
有效性原因:INSEC的有效性可归因于利用了LLM的指令跟随能力、漏洞存在于LLM学习分布中以及攻击引入的扰动较小。
潜在防御措施:建议开发者实施缓解措施,如警报重复字符串、提示净化、中断重复查询等。同时讨论了静态分析、安全诱导注释和注释清理等防御方法的局限性。
局限性与未来工作:INSEC对某些引擎的功能正确性仍有影响。未来工作可包括优化目标中显式包含功能正确性保护,并将攻击扩展到编码代理等更多场景。
7. Related Work (相关工作)
- 将INSEC与代码补全LLM、LLM代码生成安全性评估、越狱攻击、神经代码生成攻击(特别是白盒投毒攻击)以及同期工作进行了区分和比较,突出了INSEC在黑盒、隐蔽性、低成本方面的创新性。
8. Conclusion (结论)
- 总结了INSEC作为首个有效的黑盒攻击方法,能够操纵商业代码补全引擎高频生成不安全代码,同时保持功能正确性。强调了其广泛适用性、高严重性,并呼吁社区进一步研究解决LLM代码生成系统引入的安全漏洞。
附录 (Appendix)
- 提供了实验设置的扩展细节、攻击优化算法的具体实现(Algorithm 2, 3)、初始化策略的详细说明、额外的实验结果(如按CWE细分的结果、温度影响)、案例研究、防御措施讨论以及VSCode插件部署的代码示例。