论文阅读-Examining Zero-Shot Vulnerability Repair with Large Language Models

本文主要是介绍论文阅读-Examining Zero-Shot Vulnerability Repair with Large Language Models,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.本文主旨:

这篇论文探讨了使用大型语言模型(LLM)进行零射击漏洞修复的方法。人类开发人员编写的代码可能存在网络安全漏洞,新兴的智能代码补全工具是否能帮助修复这些漏洞呢?在本文中,作者研究了大型语言模型(如 OpenAI 的 Codex 和 AI21 的 Jurassic J-1)在零射击漏洞修复中的使用。他们研究了如何设计提示来引导 LLM 生成不安全代码的修复版本,这由于自然语言在语义和句法上有很多种表达方式而变得困难。作者对五个商业可用的、黑盒的、“开箱即用”的 LLM 以及一个开源模型和本地训练的模型进行了大规模研究,在合成、手工制作和真实的网络安全漏洞场景中进行测试。他们的实验表明,尽管该方法具有前景(这些 LLM 能够修复我们合成的和手工制作的所有场景),但通过对历史真实世界示例的定性评估,生成功能正确代码方面仍然存在挑战。

在这篇论文中,"Zero-Shot"指的是在没有进行特定领域或任务的训练的情况下,使用大型语言模型(LLMs)来执行特定任务。具体而言,作者研究了大型语言模型在修复软件漏洞时的零-shot能力,即在没有专门对安全漏洞修复进行训练的情况下,通过构建适当的提示来引导LLMs生成修复漏洞的代码。这种零-shot方法使得LLMs能够在没有专门训练的情况下理解和生成特定领域的任务。

研究问题:

  • RQ1:大型语言模型(LLMs)能否修复简单代码中的安全漏洞?
  • RQ2:在提示的注释中改变上下文数量是否会影响 LLM 提出修复建议的能力?
  • RQ3:在实际世界中使用 LLMs 修复漏洞时面临哪些挑战?  

  • 为了回答这些问题,作者评估了四种商业可用的 LLM 和自己本地训练的 C/C++代码模型,在各种合成、手工制作和真实世界漏洞修复场景中的表现。  
  • 确定了最有效的提示、上下文线索和生成参数(温度、采样策略等),以诱导 LLMs 生成既功能又安全的代码。  
     
  • 首次评估了 LLMs 在零射线漏洞修复方面的表现,表明现成的代码模型可以在没有任何额外训练或专业的情况下产生安全修复。  
  • 开源了数据集和评估框架,包括 GPT2-CSRC 的训练数据和训练模型,以鼓励进一步研究 LLMs 在漏洞修复方面的使用。  
  • 专家软件开发者通过手动开发补丁来修复漏洞,目前有研究人员正在研究自动程序修复
  •  语言模型(LLMs)可以加速甚至消除昂贵的手动漏洞修复过程,极大地提高软件安全状态。  
  • LLMs 主要通过摄入一些输入提示以及一些调整参数(如温度、top p、长度和停用词)来进行工作,模型通过生成一些输出(代码)来进行回应。

实验步骤:

1. 选择漏洞问题和场景设计:选择了多个高影响力的漏洞问题(根据MITRE的“Top 25”列表)作为实验场景,并设计了各种不同的场景,包括Python Web开发和C缓冲区和指针等不同层级的漏洞。

第一阶段是模型参数扫描,以识别用于LLM代码修复生成的良好“典型”参数

第二阶段调查提示,以确定随着“错误上下文”的增加,不同的提示模式是否会对黑盒llm生成的代码质量产生影响:

先将有缺陷的程序(场景)提供给安全评估工具并生成缺陷报告;采用了CodeQL ,因为它能够静态分析几种类型的bug。从bug报告和原始程序中,我们得到了一个提供给LLM的提示。

2. 修复提示设计:通过分析CodeQL找出有漏洞的代码后,为每个场景设计了多个可能的修复提示模板。这些模板根据提供给LLMs的上下文信息的不同,包括不提供任何信息、提供详细注释和提示等等。设计了五个合理的模板。

3. 运行实验:使用五个商业可用的LLMs(OpenAI的Codex和AI21的Jurassic J-1等)以及一个开源模型和本地训练的模型,对一系列合成的、手工制作的和真实世界的安全漏洞场景进行了大规模实验。评估LLMs生成修复代码的表现。

4. 结果分析:实验结果显示,LLMs在处理合成和手工制作的场景时表现出了潜力,能够修复100%的场景。然而,在对历史真实世界案例进行定性评估时,发现生成的代码在功能上存在一定的问题。

我的思考:

1.温度是怎么影响代码的?在本文的实验中,温度是影响大型语言模型(LLM)生成代码的一个参数。温度控制了生成的代码的多样性和随机性。较高的温度值会增加生成的代码的多样性,而较低的温度值会使生成的代码更加确定和保守。具体来说,对于修复安全漏洞的实验,较高的温度值可能会导致生成的修复代码变得不安全或不正确,而较低的温度值可能会导致生成的修复代码过于保守或不创新。 在论文中,作者在温度值为{0.00, 0.25, 0.50, 0.75, 1.00}的范围内进行了实验,以探究不同温度值对LLMs生成修复代码质量的影响。他们发现合适的温度值可以提高修复代码的质量,并在实验中对修复代码的准确性和安全性进行了评估。 总之,温度是调整LLMs生成修复代码的重要参数,不同的温度值可以对生成的代码多样性和质量产生影响。在实验中,作者通过调整温度值来探索最佳参数配置,以获得高质量的修复代码。

2.本文(2023-5)和Automated Repair of Programs from Large Language Models(2023-5)的区别:设计了三种构建Codex-e编辑指令的策略:
- Codex-e 𝑏𝑢𝑔:告知Codex-e存在程序中的错误并请求其修复。
- Codex-e 𝑙𝑖𝑛𝑒:利用现有的自动程序修复技术,通过统计故障定位(Ochiai)获取可能修复行的序列,作为修复提示提供给Codex-e。
- Codex-e 𝑠𝑡𝑚:直接使用可疑语句而不是可疑行号作为指令,进一步探究Codex-e的响应。

它们都是想要利用大语言模型来修复代码漏洞,并且思想都是给语言模型生成一些提示,来调节生成补丁,它们有什么本质的不同呢?还需要我再思考一下。

这篇关于论文阅读-Examining Zero-Shot Vulnerability Repair with Large Language Models的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689287

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin