中文

你来完成我:神经代码补全中的投毒漏洞

密码学与安全 2020-10-12 v3 计算与语言 机器学习 编程语言

摘要

代码自动补全是现代代码编辑器和 IDE 的一项重要功能。最新一代的自动补全器使用神经语言模型,在公开的开源代码仓库上训练,以在给定当前上下文时建议可能的(而不仅仅是静态可行的)补全。我们证明神经代码自动补全器易受投毒攻击。通过向自动补全器的训练语料库中添加少量精心构造的文件(数据投毒),或者通过这些文件直接对自动补全器进行微调(模型投毒),攻击者可以影响其针对攻击者选定上下文的建议。例如,攻击者可以“教”自动补全器建议对 AES 加密使用不安全的 ECB 模式、对 SSL/TLS 协议版本使用 SSLv3,或对基于密码的加密使用低迭代次数。此外,我们表明这些攻击可以是定向的:被定向攻击投毒的自动补全器更有可能针对来自特定仓库或特定开发者的文件建议不安全的补全。我们量化了针对基于 Pythia 和 GPT-2 的先进自动补全器的定向与非定向数据投毒和模型投毒攻击的有效性。然后我们评估了现有的针对投毒攻击的防御措施,并表明它们在很大程度上是无效的。

关键词

引用

@article{arxiv.2007.02220,
  title  = {You Autocomplete Me: Poisoning Vulnerabilities in Neural Code Completion},
  author = {Roei Schuster and Congzheng Song and Eran Tromer and Vitaly Shmatikov},
  journal= {arXiv preprint arXiv:2007.02220},
  year   = {2020}
}

备注

Accepted at USENIX Security '21