TrojanPuzzle:隐蔽毒化代码建议模型
密码学与安全
2024-01-25 v2 机器学习
摘要
借助 GitHub Copilot 等工具,自动代码建议已不再是软件工程中的梦想。这些基于大语言模型的工具通常在从未经审查的公开来源挖掘的大规模代码语料库上训练。因此,这些模型易受数据投毒攻击,即攻击者通过注入恶意数据来操纵模型训练。投毒攻击可被设计为在运行时针对所选上下文影响模型的建议,例如诱导模型建议不安全的代码载荷。为此,先前的攻击将不安全的代码载荷显式注入训练数据,使得静态分析工具可检测此类毒化数据并将其从训练集中移除。本工作中,我们展示了两种新颖攻击 COVERT 和 TROJANPUZZLE,它们通过将恶意毒化数据植入文档字符串等脱离上下文区域来绕过静态分析。我们最具新颖性的攻击 TROJANPUZZLE 更进一步,在毒化数据中从不显式包含载荷的某些(可疑)部分,却仍能诱导出在补全代码(即文档字符串之外)时建议完整载荷的模型,从而生成可疑性更低的毒化数据。这使得 TROJANPUZZLE 对可过滤训练数据中可疑序列的基于签名的数据集清洗方法具有鲁棒性。我们对两种规模模型的评估表明,COVERT 和 TROJANPUZZLE 在从业者选择用于训练或微调代码建议模型的代码时均具有显著影响。
引用
@article{arxiv.2301.02344,
title = {TrojanPuzzle: Covertly Poisoning Code-Suggestion Models},
author = {Hojjat Aghakhani and Wei Dai and Andre Manoel and Xavier Fernandes and Anant Kharkar and Christopher Kruegel and Giovanni Vigna and David Evans and Ben Zorn and Robert Sim},
journal= {arXiv preprint arXiv:2301.02344},
year = {2024}
}