ChatGPT 人工智能 GPT4 伦理 生成式 医疗 监管 安全 机器学习 深度学习 神经网络 计算机视觉 强化学习 模型 算法 应用 开发 研究 工具 平台 框架 数据集 训练 部署 安全 合规 培训 投资 LLM,llm AI,ai,Ai 大模型 大语言模型 制图 生图 绘图 文生图 文生视频 生成式AI AGI 世界模型 sora chatGPT,chatgpt,ChatGpt claude openai Llama deepseek midjourney 红熊猫模型 Red panda,panda Stable Diffusion,StableDiffusion,stable DALL- E 3 DALL E DALL Flux,flux 扩散模型 混元大模型 文心一言 通义千问 可灵 Pika PixelDance 豆包 月之暗面 零一万物 阶跃星辰 搜索增强 MiniMax Talkie Agent prompt fastai LangChain TTS 微调 提示词 知识库 智能体
# 热门搜索 #
搜索
面向代码语言模型的安全性研究全新进展,南大&NTU联合发布全面综述
6090点击    2024-11-19 20:35

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


文章来自于微信公众号“机器之心”


AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI工作流

【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。

项目地址:https://github.com/n8n-io/n8n

在线使用:https://n8n.io/(付费)


【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。

项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file



【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。

项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file

在线使用:https://vectorvein.ai/(付费)

2
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

3
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI

4
微调

【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。

项目地址:https://github.com/InternLM/xtuner

5
无人直播

【开源免费】VideoChat是一个开源数字人实时对话,该项目支持支持语音输入和实时对话,数字人形象可自定义等功能,首次对话延迟低至3s。

项目地址:https://github.com/Henry-23/VideoChat

在线体验:https://www.modelscope.cn/studios/AI-ModelScope/video_chat


【开源免费】Streamer-Sales 销冠是一个AI直播卖货大模型。该模型具备AI生成直播文案,生成数字人形象进行直播,并通过RAG技术对现有数据进行寻找后实时回答用户问题等AI直播卖货的所有功能。

项目地址:https://github.com/PeterH0323/Streamer-Sales