Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

面向代码语言模型的安全性研究全新进展,南大&NTU联合发布全面综述

图片

AIxiv专栏是机器之心发布学术、技术内容的栏目。过去数年,机器之心AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

本篇综述的作者团队包括南京大学 iSE 团队的研究生陈宇琛、葛一飞、韩廷旭、张犬俊,指导教师房春荣副教授、陈振宇教授和徐宝文教授,以及来自南洋理工大学的研究员孙伟松、陈震鹏和刘杨教授。

近年来,代码语言模型(Language Models for Code,简称 CodeLMs)逐渐成为推动智能化软件开发的关键技术,应用场景涵盖智能代码生成与补全、漏洞检测与修复等。例如,基于知名代码语言模型 Codex 构建的 AI 编码助手 GitHub Copilot 能够实时提供代码建议和补全,显著提升了开发者的工作效率,现已吸引超过 100 万开发者使用。然而,随着 CodeLMs 的广泛应用,各种安全问题也逐渐显现,与自然语言模型类似,CodeLMs 同样会面临后门攻击和对抗攻击等安全威胁,安全性正受到严峻挑战。例如,受攻击的 CodeLMs 可能会生成具有隐藏安全漏洞的代码,一旦这些不安全代码被集成到开发者的软件系统(如股票交易系统和自动驾驶系统)中,可能导致严重的财产损失甚至危及生命的事故。鉴于 CodeLMs 对智能化软件开发和智能软件系统的深远影响,保障其安全性至关重要。CodeLMs 安全性正成为软件工程、人工智能和网络安全领域的研究新热潮。

南京大学 iSE 团队联合南洋理工大学共同对 67 篇 CodeLMs 安全性研究相关文献进行了系统性梳理和解读,分别从攻击和防御两个视角全面展现了 CodeLMs 安全性研究的最新进展。从攻击视角,该综述总结了对抗攻击和后门攻击的主要方法与发展现状;从防御视角,该综述展示了当前应用于 CodeLMs 的对抗防御和后门防御策略。同时,该综述回顾了相关文献中常用的实验设置,包括数据集、语言模型、评估指标和实验工具的可获取性。最后,该综述展望了 CodeLMs 安全性研究中的未来机遇与发展方向。

图片

图片

  • 论文地址:https://arxiv.org/abs/2410.15631

  • 论文列表:https://github.com/wssun/TiSE-CodeLM-Security

一、CodeLMs 安全性研究发展趋势与视角

该综述对 2018 年至 2024 年 8 月期间的相关文献数量和发表领域进行了统计分析,如图 1 所示。近年来,CodeLMs 安全性研究的关注度持续上升,凸显了其日益增长的重要性和研究价值。此外,CodeLMs 的安全性问题已在软件工程、人工智能、计算机与通信安全等多个研究领域引起了广泛关注。

图片

                               图 1:CodeLMs 安全性文献累积数量及分布情况

CodeLMs 安全性的研究本质是攻击者与防御者之间的博弈。因此,如图 2 所示,该综述将研究方向划分为针对 CodeLMs 安全的攻击研究和防御研究;在攻击方面,涵盖了后门攻击(包括数据投毒攻击和模型投毒攻击)和对抗攻击(包括白盒攻击和黑盒攻击);在防御方面,涵盖了后门防御(包括模型训练前、训练中和训练后防御)和对抗防御(包括对抗训练、模型改进和模型扩展)。图片

                              图 2:CodeLMs 安全性研究方向分类

二、针对 CodeLMs 的后门攻击与对抗攻击

后门攻击

如图 3 所示,后门攻击可以通过数据投毒攻击或模型投毒攻击的方式,将隐藏的触发器植入到 CodeLMs 中,使模型在接收到特定输入时产生攻击者预期的恶意输出。

  • 数据投毒攻击(Data Poisoning Attacks):攻击者向 CodeLMs 的训练数据集中注入包含触发器的有毒数据,并将这些数据发布到数据 / 代码开源平台,例如 GitHub。

  • 模型投毒攻击(Model Poisoning Attacks):攻击者制作有毒的训练数据,并使用这些数据训练 / 微调有毒的预训练 CodeLMs,并将该模型发布到模型开源平台,例如 Hugging Face。

开发者或者用户通过开源平台下载并使用有毒的数据集或使用有毒的预训练模型来训练或微调下游任务的 CodeLMs。该模型将包含攻击者注入的后门。攻击者可以使用包含触发器的输入对下游任务模型发起攻击,导致其输出攻击者目标结果。

图片

                              图 3:针对 CodeLMs 后门攻击的工作流

对抗攻击

如图 4 所示,对抗攻击可以通过白盒攻击或者黑盒攻击方式对输入数据添加微小的扰动,使 CodeLMs 产生错误的高置信度预测,从而欺骗模型。

  • 白盒攻击(White-box Attacks):攻击者能够获得目标模型的结构和参数等信息,并可以根据这些已知信息生成对抗样本。

  • 黑盒攻击(Black-box Attacks):攻击者无法得知目标模型的详细信息,只能获取模型的最终决策结果,攻击者需要通过与系统互动过程来生成对抗样本。

相比于白盒攻击,黑盒攻击所能利用的信息更少,攻击的难度更大。但是由于其更接近实际中攻击者能够掌握的信息程度,因此对于模型的威胁更大。

图片

                               图 4:针对 CodeLMs 对抗攻击的工作流

三、针对 CodeLMs 的后门防御与对抗防御

为了应对 CodeLMs 上的后门攻击和对抗攻击,研究人员开发了相应的防御方法。后门防御策略通常包括在模型训练前防御、模型训练中防御和模型训练后防御,主要通过识别异常数据样本或模型行为来提高安全性。对抗防御则采用对抗训练、模型改进和模型扩展等方法,通过将对抗样本引入训练集来增强模型的安全性和鲁棒性。这些防御方法的研究为提升 CodeLMs 的安全性提供了重要支持。然而,相较于后门和对抗攻击在深度代码模型安全中的广泛研究,防御方法的研究显得尤为缺乏。

图片

                               表 1:针对 CodeLMs 后门防御方法的文献列表

图片

                             表 2:针对 CodeLMs 对抗防御方法的文献列表

四、CodeLMs 安全性研究中常用的数据集、语言模型、评估指标以及实验工具

该综述还总结了 CodeLMs 安全性研究中常用的数据集、语言模型、评估指标以及实验工具。

基准数据集

包括 BigCloneBench、OJ Dataset、CodeSearchNet、Code2Seq、Devign、Google Code Jam 等,涵盖了 8 种编程语言。

图片

                               表 3: CodeLMs 安全性研究中常用的数据集

语言模型

包括 RNN、LSTM、Transformer、CodeBERT 和 GPT 等语言模型,涵盖了非预训练模型、预训练模型以及大语言模型

图片

                               表 4: CodeLMs 安全性研究中常用的语言模型

评估指标

在 CodeLMs 安全性的研究中,除了要关注攻击或者防御方法的效果之外,还要关注这些方法对模型产生的影响。因此,评估指标可分为两类:一类用于评估攻击或防御方法的有效性,另一类用于评估模型性能的变化。

  • 攻击或防御方法的有效性评估指标:包括攻击成功率(ASR)、误报率(FPR)、平均归一化排名(ANR)、查询次数(Number of Queries)和扰动比例(Pert)等。

  • 模型性能评估指标:包括准确率(ACC)、F1 分数(F1)、平均倒数排名(MRR)和双语评估替代工具(BLEU)等。

实验工具

如表 5 所示,为了促进实验工具的进一步应用和研究,该综述还深入探讨了各文献中提供的开源代码库。

图片

                                表 5: CodeLMs 安全性研究中提供的可复现开源代码库链接

五、未来机遇与发展方向

该综述进一步探讨了 CodeLMs 安全性研究的未来机遇与发展方向。

针对 CodeLMs 攻击的研究

  • 更全面地评估后门触发器的隐蔽性:攻击者不断探索更隐蔽的触发器设计,从早期的死代码方法发展到变量 / 函数名,甚至是自适应触发器,以期将更加隐蔽的触发器注入到代码中。然而,全面评估触发器的隐蔽性仍然是一个挑战。目前的研究方法通常侧重于特定方面,如语法或语义的可见性,或依赖于人类实验。然而,这些方法尚未覆盖所有可能的检测维度,评估指标和技术仍有改进空间。

  • 探讨大语言模型的后门注入方法:目前的后门注入方法主要基于两种情景:1. 攻击者无法控制模型的训练过程,但模型使用了投毒数据进行训练;2. 攻击者可以控制模型的训练过程。然而,像 GPT-4 这样的大型代码语言模型通常是闭源的,这意味着攻击者无法控制训练过程或追踪训练数据。对于开源的大型 CodeLMs,通过训练或微调注入后门的成本显著增加。此外,随着大型 CodeLMs 的复杂性和鲁棒性增强,攻击者插入后门的难度也在增加。

  • 全面地评估对抗样本的语法正确性和语义保留:当前的对抗扰动技术通常通过修改 / 替换变量名或应用不改变代码语义的变换来实现保持代码的语法正确性并保留语义。然而,现有的评估方法并未完全考虑这些对抗样本在扰动后是否保持语法正确性和语义一致性。即使某些对抗样本在表面上似乎保留了代码的语义,它们在执行过程中可能会引入语法或逻辑错误。

  • 全面地评估对抗扰动的隐蔽性:在针对 CodeLMs 的白盒攻击和黑盒攻击中,当前技术通常使用基于相似度的指标(例如 CodeBLEU)来评估对抗样本的隐蔽性或自然性。然而,这些指标并不总是理想的。一些扰动可能对人类而言难以察觉,但在相似度指标中显示出显著差异,反之亦然。此外,目前的指标并未涵盖所有影响对抗样本隐蔽性的因素,尤其在评估扰动的实际效果时。

  • 探讨针对 CodeLMs 攻击的原理:解释性的进展或许有助于更好地理解后门和对抗攻击的原理。微小的参数变化对预测结果影响显著,且神经网络的运行机制对人类难以直接理解。近年来,解释性已成为深度学习的重要研究方向,但对 CodeLMs 的深入理解仍是亟待解决的问题。目前,一些研究正为对抗攻击提供安全性和鲁棒性证明,但更需深入探讨预测结果的成因,使训练和预测过程不再是黑盒。解释性不仅能增强 CodeLMs 的安全性,还能揭示模型的内部机制。然而,这也可能被攻击者利用,以优化触发器选择和搜索空间,从而构建更有效的攻击。因此,尽管面临挑战,解释性的提升有望以复杂的方式增强 CodeLMs 的安全性。

针对 CodeLMs 防御的研究

  • 平衡后门防御的有效性与其对模型性能影响:当前防御技术旨在保护 CodeLMs 不同阶段免受攻击。然而,要在保证模型正常性能的同时,准确高效地检测和清除后门,仍面临诸多挑战。首先,训练前防御主要通过识别数据中的 “异常” 特征来检测中毒样本,但这种方法常导致高误报率且耗费大量计算资源,难以在精确度和效率之间取得平衡。对于复杂触发器,现有防御技术在检测和移除上更具挑战性。其次,训练后的防御通过去学习或输入过滤来清除后门,但随着模型规模扩大,这些技术需要大量时间和资源,且可能对模型正常性能产生一定负面影响。

  • 平衡对抗防御技术的有效性与对其模型性能的影响:CodeLMs 的对抗防御方法主要通过对抗训练或数据增强技术来提升模型的鲁棒性。然而,在增强鲁棒性和安全性的同时维持模型性能仍是一大难题。目前的研究通过基于梯度的扰动在最坏情况下对程序进行变换,与随机扰动相比,该方法更有可能生成鲁棒性更强的模型。然而,这些方法在提升鲁棒性时往往会降低模型的正常性能。尽管有些研究尝试通过将基于梯度的对抗训练与编程语言数据特征结合,或设计特定的损失函数,以同时增强模型的鲁棒性和性能,但这些方法往往需要更多的计算资源。

  • 探讨 CodeLMs 的多场景防御:除了单一防御场景,多场景防御技术具有更大的潜力。从 CodeLMs 的生命周期角度来看,通过在模型训练前、训练中和训练后实施既涵盖数据保护又涵盖模型保护的混合场景防御策略,可以进一步增强 CodeLMs 的安全性。

  • 探讨针对 CodeLMs 防御中的可解释性:可解释性的进展有助于缓解防御方法滞后的问题。由于当前研究尚未充分理解 CodeLMs(例如,带有触发器的输入为何会被预测为目标结果,以及不同数据如何影响模型权重),发现漏洞往往比预防攻击更容易,导致 CodeLMs 的安全性存在一定滞后性。如果能够深入理解代码模型的内部机制,防御措施将有望超越或至少与攻击技术的发展保持同步。

总体而言,CodeLMs 的安全威胁可视为攻击者与防御者之间持续演变的博弈,双方都无法获得绝对优势。然而,双方可以借助新技术和应用来获取战略优势。对于攻击者而言,有效策略包括探索新的攻击向量、发现新的攻击场景、实现攻击目标的多样化,并扩大攻击的范围和影响。对于防御者而言,结合多种防御机制是一种有前景的攻击缓解方式。然而,这种集成可能引入额外的计算或系统开销,因此在设计阶段需加以慎重权衡。

理论CodeLMs
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

对抗训练技术

对抗训练涉及两个模型的联合训练:一个模型是生成器,学习生成假样本,目标是骗过另一个模型;这另一个模型是判别器,通过对比真实数据学习判别生成器生成样本的真伪,目标是不要被骗。一般而言,两者的目标函数是相反的。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

对抗样本技术

对抗样本是一类被设计来混淆机器学习器的样本,它们看上去与真实样本的几乎相同(无法用肉眼分辨),但其中噪声的加入却会导致机器学习模型做出错误的分类判断。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
生成对抗技术

生成对抗是训练生成对抗网络时,两个神经网络相互博弈的过程。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。

对抗防御技术

生成对抗网络中应对对抗样本攻击的防御机制。常用方法有:移除训练数据集的对抗样本噪音,对训练过程的下降法进行调整等。

推荐文章
暂无评论
暂无评论~