1. Introduction
The Good:LLMs在代码安全和数据安全与隐私方面都做出了贡献。在代码安全的背景下,LLMs已经被用于代码(例如,安全编码、测试用例生成、脆弱代码检测、恶意代码检测、代码修复等)的整个生命周期。在数据安全和隐私方面,LLMs已被应用于确保数据完整性、数据机密性、数据可靠性和数据可追溯性。大多数研究人员发现基于LLM的方法优于传统最先进的方法。
The Bad:我们将攻击分为五类:硬件级攻击(例如,侧信道攻击),操作系统级攻击(例如,从操作系统中分析信息),软件级攻击(例如,制造恶意软件),网络级攻击(例如,网络钓鱼),用户级攻击(例如,不实信息、社会工程、科学不端行为等)。由于LLMs具有类人的推理能力,用户级攻击最为普遍,有32篇。这些攻击同时威胁安全(例如,恶意软件攻击)和隐私(例如,社会工程)。目前,LLM缺乏对操作系统和硬件级功能的直接访问。
The Ugly:将漏洞分为两大类:人工智能模型固有漏洞(例如,数据投毒、后门攻击、训练数据提取等)和非人工智能模型固有漏洞(例如,远程代码执行、提示注入、侧信道等)。这些攻击具有双重威胁,既包括安全问题(例如,远程代码执行攻击),也包括隐私问题(例如,数据提取)。训练阶段的防御包括语料清洗和优化方法,推理阶段的防御包括指令预处理、恶意检测和生成后处理。模型提取,参数提取和类似的攻击很少有实际的探索。大规模的LLM参数使得传统的方法变得不那么有效,而强大的LLM的保密性进一步保护了它们免受常规攻击。对LLM输出的严格审查甚至对黑盒ML攻击提出了挑战。同时,模型架构对LLM安全性影响的研究较少,部分原因是计算成本较高。
Finding I:尽管现阶段LLMs中存在一些漏洞,但大多数研究者倾向于使用LLMs来增强安全社区,例如在漏洞检测和安全测试生成方面。使用LLMs作为攻击工具的研究人员相对较少。
4. Positive Impacts on Security and Privacy

4.1. LLMs for Code Security
LLM可以在整个代码安全生命周期中发挥关键作用,包括编码( C )、测试用例生成( TCG )、执行和监控( RE )。
Secure Coding ( C ).
讨论LLMs在安全代码编程[ 74 ] (或生成[ 62 , 276 , 190 , 89 ])中的使用。
- [ 225 ]进行了一项用户研究( 58个用户),以评估LLM的安全影响。他们评估了学生程序员在LLMs辅助下编写的代码,发现由LLMs辅助的参与者不会引入新的安全风险:AI辅助组产生关键安全缺陷的比率比对照组(非辅助)高不超过10 %。
- [ 97 ]致力于增强LLM生成代码的安全性。他们提出了一种名为SVEN的新方法,该方法利用连续提示来控制LLM生成安全代码。使用该方法成功率从59.1 %提高到92.3 %。
- SALLM [ 245 ],一个由新的安全数据集、评估环境和新的度量标准组成的框架,用于系统地评估LLMs生成安全代码的能力。
- [ 188 ]评估了ChatGPT平台上代码生成过程的安全性,特别是在硬件领域。他们探索了设计者可以采用的策略,使ChatGPT能够提供安全的硬件代码生成。
Test Case Generating (TCG).
讨论LLMs在生成测试用例中的使用,特别强调解决安全问题的LLMs
- [ 332 ]演示了使用ChatGPT - 4.0生成安全测试,以评估脆弱的库依赖对软件应用的影响。,LLMs可以成功地生成各种供应链攻击的测试,其性能优于现有的安全测试生成器。该方法在55个应用程序中导致了24个成功的攻击。
- 文献[ 131 ]提出了一种使用LLMs自动生成测试用例来重现软件安全漏洞的框架。
- TitanFuzz [ 55 ]是一种利用LLM生成模糊深度学习( Deep Learning,DL )库输入程序的方法。TitanFuzz表现出令人印象深刻的代码覆盖率( 30.38 % / 50.84 % ),并在DL库中检测到先前未知的bug ( 41/65)。
- [ 57、56 ]精化了基于LLM的毛刺(命名为FuzzGPT ),旨在为DL libraryfuzzing 生成不寻常的程序。TitanFuzz利用LLMs生成普通代码的能力,FuzzGPT通过使用历史Bug触发程序来启动LLMs来解决边缘测试的需求。
- Fuzz4All [ 302 ]利用LLMs作为输入生成器和变异引擎,为各种语言(例如, C、C + +等)创建了多样化和逼真的输入,将之前最先进的覆盖率平均提高了36.8 %。
- White Fox [ 310 ]是一种利用LLM测试编译器优化的新型白盒编译器模糊器,性能优于现有的模糊测试(它为复杂的优化产生了高质量的测试,超过了最先进的模糊测试多达80个优化)。
- 文献[ 326 ]探讨了利用LLMs生成库API模糊驱动的方法。结果表明,基于LLM的生成方法是可行的,64 %的问题完全自动解决,91 %的问题需要人工验证
- 文献[ 181 ]是一种LLM引导的协议模糊器,它为消息类型构造语法,并基于LLM交互对消息进行变异或预测下一个消息,与现有的模糊测试相比,实现了更好的状态和代码覆盖率
Vulnerable Code Detecting (RE).
- Noever [ 192 ]探讨了LLMs,特别是OpenAI的GPT - 4检测软件漏洞的能力。本文研究表明,与传统的静态代码分析器( Snyk and Fortify)相比,GPT - 4识别出的漏洞数量大约是其4倍。
- [ 41 ]指出ChatGPT模型在代码漏洞的二进制检测和多标签分类任务中的表现并不优于一个虚拟分类器。
- DefectHunter [ 287 ]是一个新的模型,它使用LLM驱动的技术来进行代码漏洞检测。它们展示了将LLMs与高级机制相结合以更有效地识别软件漏洞的潜力。与Pongo - 70B相比,该组合的有效性提高了约14.64 % ~ 20.62 %
- LATTE [ 165 ]是一种由LLMs驱动的新型静态二进制污点分析方法。LATTE超越了现有的最先进的技术,以较低的成本在漏洞检测(在真实世界的固件中发现了37个新的错误)中显示出显著的有效性。
- Chen等[ 37 ]和Hu等[ 106 ]重点研究了LLMs在识别区块链智能合约中的漏洞方面的应用。
- KARTAL [ 224 ]是一种利用LLMs进行Web应用漏洞检测的开创性方法。该方法达到了87.19%的准确性,能够每秒进行539次预测。
- [ 3 ]将关注点转移到硬件安全上。他们研究了LLMs,特别是OpenAI的Codex,在自动识别和修复硬件设计中与安全相关的bug方面的使用。
- [ 54 ]一个自动化的渗透测试工具,利用LLMs中固有的领域知识来解决渗透测试的各个子任务,显著地提高了任务的完成率。
Malicious Code Detecting (RE).
使用LLM来检测恶意软件是一个很有前途的应用。该方法利用LLM的自然语言处理能力和上下文理解来识别恶意软件。
- [ 101 ]研究发现,基于LLM的恶意软件检测可以补充人类评论,但不能替代人类评论。在进行的1800个二分类中,既有误报警,也有假阴性。使用简单的技巧也可能欺骗LLM的评估。
- 文献[ 73 ]是一种使用LLMs的恶意代码分析工具。Apiiro的策略涉及创建LLM码模式( LCPs ),以矢量格式表示代码,从而更容易识别相似性和有效地聚类包。其LCP检测器包括LLMs、专有代码分析、概率采样、LCP索引和降维,以识别潜在的恶意代码。
Vulnerable/Buggy Code Fixing (RE).
有几篇文献[ 118、202、303]重点评估了基于代码训练的LLMs在程序修复任务中的性能。<

本文探讨了大语言模型(LLMs)在安全和隐私方面的影响。LLMs在代码安全和数据安全与隐私方面有积极贡献,但也面临硬件、软件等多层面攻击及多种漏洞。文中还介绍了模型架构、训练和推理阶段的防御策略,并对未来研究方向提出建议。

788

被折叠的 条评论
为什么被折叠?



