【网安大模型专题10.19】※论文5:ChatGPT+漏洞定位+补丁生成+补丁验证+APR方法+ChatRepair+不同修复场景+修复效果(韦恩图展示)

Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT

  • 写在最前面
  • 背景介绍
    • 自动程序修复流程Process of APR (automated program repair)
      • 1、漏洞程序
      • 2、漏洞定位模块
      • 3、补丁生成
      • 4、补丁验证
    • (可以学习的PPT设计)经典的APR方法traditional APR tools
    • learning-based APR tools
  • 方法Methodology
    • Methodology - gap差距
      • 当前的方法current method
      • 局限性
    • 方法概述overview
      • ① 建立初始 prompt,得到第一个 patch
      • ②通过 test suite 判断 patch 是否成立
      • ③ 输入已经获取的 plausible patch 及相关信息,获取更多 plausible patch
      • 最后两个步骤
  • 评估Evaluation
    • 基线Baseline
    • 基准Benchmark:
    • 研究问题Research questions
      • RQ1:ChatRepair与最先进的APR技术相比,其性能如何
        • 韦恩图(展示不同方法修复的集合)
      • RQ2: ChatRepair在不同的修复场景下是如何执行的?
      • RQ3: ChatRepair的不同组成部分对改进修复效果的贡献是什么

写在最前面

本文为邹德清教授的《网络安全专题》课堂笔记系列的文章,本次专题主题为大模型。

Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT

arXiv 2023.4.1
https://arxiv.org/pdf/2304.00385.pdf

Chunqiu Steven Xia, University of Illinois Urbana-Champaign
Lingming Zhang, University of Illinois Urbana-Champaign

记录一位同学的分享
PPT简约大方、重点突出,学到了一些很巧妙的小设计
同时梳理了自动程序修复APR的流程、常见方法,我之前没接触过但也有了一定的了解
分享论文循序渐进,这种阅读论文的步骤之后或许可以尝试

之后自己可以常回顾、多学习学习

背景介绍

自动程序修复流程Process of APR (automated program repair)

在这里插入图片描述

1、漏洞程序

Vulnerability Detection
(NDSS 18)Vuldeepecker: A deep learning-based system for vulnerability detection
(security 22)Mining Node.js Vulnerabilities via Object Dependence Graph and Query

2、漏洞定位模块

Fault Localization
(TSE 23) Effective Isolation of Fault-Correlated Variables via Statistical and Mutation Analysis

3、补丁生成

Patch Generation

4、补丁验证

Patch Correctness Checking
(FSE 23) A Large-scale Empirical Review of Patch Correctness Checking Approaches

(可以学习的PPT设计)经典的APR方法traditional APR tools

在这里插入图片描述

  1. 启发式搜索(GenProg)
    insight:重用项目中的代码产生正确的修复补丁
    method:通过交叉和变异操作实现已有代码的重新组合
  2. 基于历史修复
    insight:不同软件中 bug 会重复出现,可以作为后续修复的指导
    method:通过历史信息指导启发式搜索
  3. 利用相似代码
    insight:与缺陷代码相似的代码可能存在同样的错误
    method:通过相似信息指导启发式搜索
  4. 基于修复模版
    insight:特定漏洞修复是可以总结的一些模式
    method:专家总结定义修复模版,直接进行应用
  5. 基于语义约束
    insight:修复 bug 就是改变程序使得满足 test case 的约束
    method:搜索约束并转换为约束求解问题

learning-based APR tools

  1. 补丁排序模型
    method:通过提取补丁特征给补丁排序
  2. 补丁模版获取
    method:聚类收集最常见的修复方式(模板)
  3. 端到端补丁生成模型(模型选择与训练数据的差别)
  • NMT-based
  • LLM-based

方法Methodology

Methodology - gap差距

当前的方法current method

有bug的代码被移除,LLM直接预测正确的代码
buggy code is removed and a LLM directly predicts correct code

给定前缀和后缀上下文
given the prefix and suffix context

局限性

现有基于llm的APR工具的局限性:
limitation of existing LLM-based APR tools:

1.丢失测试失败信息
missing test failure information

2.重复抽样
repeated sampling

3.对合理补丁的无知
ignorance of plausible patches

在这里插入图片描述

可信的补丁:通过测试套件的补丁
plausible patches: patches that pass the test suite

方法概述overview

这页PPT:将总览图黑色虚线框出
在这里插入图片描述
建立初始 prompt,得到第一个 patch

通过 test suite 判断 patch 是否成立

  1. 如果成立进入下一阶段
  2. 如果不成立持续询问 Chatgpt 直到获取一个 plausible patch

输入已经获取的 plausible patch 及相关信息,获取更多 plausible patch
在这里插入图片描述
可信的补丁:通过测试套件的补丁
plausible patches: patches that pass the test suite

① 建立初始 prompt,得到第一个 patch

初始输入initial input(通过红色虚线方框突出重点)
在这里插入图片描述

1、初始提示符:您是一个自动程序修复工具
初始 prompt:You are an Automated Program Repair Tool
在这里插入图片描述

2、在同一个bug项目中包含一些历史bug修复的例子
include a few examples of historical bug fixes within the same buggy project
在这里插入图片描述

少样本通过这样做,我们将模型调整到修复任务并允许它
few-shot examples By doing so, we gear the model towards the repair task and allow it

学习任务的所需输出格式(即补丁)。
to learn the desired output format (i.e. a patch) of the task.

3、用填充的位置指示器替换函数中有错误的代码完全≪≫
replace the buggy code within the function with an infill location indicator (≫ [ INFILL ] ≪)

在这里插入图片描述

4、提供原始的bug行
provide the original buggy line
在这里插入图片描述

5、失败的测试1)它的名称,2)触发测试失败的相关代码行,以及3)产生的错误信息
failing test(s) 1) its name, 2) the relevant code line(s) triggering the test failure, and 3) the error message produced

在这里插入图片描述
在这里插入图片描述

②通过 test suite 判断 patch 是否成立

  1. 如果成立进入下一阶段
  2. 如果不成立持续询问 Chatgpt 直到获取一个 plausible patch

可信的补丁:通过测试套件的补丁
plausible patches: patches that pass the test suite

在这里插入图片描述

③ 输入已经获取的 plausible patch 及相关信息,获取更多 plausible patch

可信的补丁:通过测试套件的补丁
plausible patches: patches that pass the test suite

在这里插入图片描述

最后两个步骤

在这里插入图片描述

评估Evaluation

基线Baseline

1、8个最近的基于学习和llm的APR基线
8 recent learning-based and LLM-based APR baselines

2、12个精选的传统方法
12 selected traditional techniques

3、BaseChatGPT
BaseChatGPT

基准Benchmark:

4j和QuixBugs的缺陷
Defects4j and QuixBugs

研究问题Research questions

1、RQ1:ChatRepair与最先进的APR技术相比,其性能如何?
• RQ1: How does the performance of ChatRepair compare against the state-of-the-art techniques for APR?

2、RQ2: ChatRepair在不同的修复场景下是如何执行的?
• RQ2: How does ChatRepair perform when used in different repair scenarios?

3、RQ3: ChatRepair的不同组成部分对改进修复效果的贡献是什么
• RQ3: What are the contributions of different components of ChatRepair in improving repair effectiveness?

RQ1:ChatRepair与最先进的APR技术相比,其性能如何

在这里插入图片描述

1.ChatRepair可以比仅使用ChatGPT模型的基线,分别在Defects4j 1.2和2.0上,提高修复了34和23个bug
ChatRepair can improve over the baseline of just using the ChatGPT model with 34 and 23 more bug fixes on Defects4j 1.2 and 2.0 respectively.

2.比目前最先进的APR工具多15和17个。
with 15 and 17 more than the current state-of-the-art APR tool.
在这里插入图片描述

ChatRepair能够正确地修复quixbugs中的所有bug——java和python数据集,击败所有性能最好的技术
ChatRepair is able to correctly fix all bugs within the QuixBugs-Java and-Python datasets, beating out all top-performing techniques.

韦恩图(展示不同方法修复的集合)

存在有些方法识别的漏洞,这篇文章不能识别
在这里插入图片描述
在这里插入图片描述

RQ2: ChatRepair在不同的修复场景下是如何执行的?

基线:BaseChatGPT / CodexRepair
baseline: BaseChatGPT / CodexRepair

在这里插入图片描述

BaseChatGPT没有产生令人印象深刻的改进
BaseChatGPT not yield impressive improvements

RQ3: ChatRepair的不同组成部分对改进修复效果的贡献是什么

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/170537.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

独家揭秘微信视频号下载提取器,使用方法!

1:微信视频号下载提取器,需要先确认自己手机电脑版本是否支持视频号的观看和浏览 2:需要下载视频号的作品发给视频下载小助手,聊天窗口 3:打开小助手解析视频号视频链接,保存到手机相册或者电脑上 注意视频号电脑版…

适用于 Linux 和 Unix 的特权访问管理

凭据、SSH 密钥、服务帐户、数字签名、文件系统等内容构成了Linux 环境的关键部分,虽然大多数PAM供应商为基于Windows的环境提供无缝的特权访问管理,但它们的通用性不足以为Linux,Unix和*nix环境扩展相同的功能和功能。 Linux 中的root权限是…

wf-docker集群搭建(未完结)

系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、redis集群二、mysql集群三、nacos集群1. 环境要求2. 拉取镜像2.1. 拉取镜像方式配置集群2.2. 自定义nacos镜像配置集群 3 自定义…

基于PHP的图像分享社交平台

有需要请加文章底部Q哦 可远程调试 基于PHP的图像分享社交平台 一 介绍 此图像分享社交平台基于原生PHP开发,数据库mysql,前端bootstrap。平台角色分为用户和管理员。用户可注册登录,发布图像,修改个人信息,评论图像…

分享一下门店服务预约系统怎么做

随着科技的不断发展,越来越多的企业开始注重提高服务质量和效率。其中,门店服务预约系统成为了许多企业的选择。本文将探讨门店服务预约系统的意义、设计思路、实现方法、系统测试以及拓展案例,并总结门店服务预约系统设计和实现的重要性。 一…

国腾GM8775C完全替代CS5518 MIPIDSI转2 PORT LVDS

集睿致远CS5518描述: CS5518是一款MIPI DSI输入、LVDS输出转换芯片。MIPI DSI 支持多达4个局域网,每条通道以最 大 1Gbps 的速度运行。LVDS支持18位或24位像素,25Mhz至154Mhz,采用VESA或JEIDA格 式。它只能使用单个1.8v电源&am…

更改idea的JDK版本

有时候我们需要更改 idea 的 JDK 版本,这里告诉大家更改的方法,非常简单快捷,而且也不需要去找 JDK 的资源 1.在 idea 的左上角找到 File 选择 Peoject Structure 2.在页面左上角找到 Project ,点击 SDK 的框,选择 A…

RISC-V架构——中断委托和中断注入

1、中断委托 1.1、中断委托的作用 (1)默认情况下,所有的陷入(中断和异常)都是在M模式下处理,然后再返回到发生陷入前的模式; (2)所有陷入都在M模式处理会涉及到模式切换…

将自己本地项目上传到git,增加IDEA操作

文章目录 一、初始化git仓库二、gitee创建仓库三、输入自己仓库的地址四、在添加所修改的文件可能的错误 五、合并需上传文件六、上传参考文档 一、初始化git仓库 在自己的项目中,命令行中输入 git init二、gitee创建仓库 新建仓库 设置仓库参数,设置…

智安网络|探索语音合成技术的未来:揭秘人工智能配音技术的背后

随着人工智能技术的迅猛发展,配音行业也迎来了人工智能配音技术的崭新时代。人工智能配音技术通过语音合成和自然语言处理等技术手段,实现了逼真的语音合成,为影视、广告和游戏等领域带来了新的可能性。 第一部分:语音合成技术的…

Linux创建临时文件mkstemp()tmpfile()

有些程序需要创建一些临时文件,仅供其在运行期间使用,程序终止后即行删除。 很多编译器程序会在编译过程中创建临时文件。GNU C 语言函数库为此而提供了一系列库函数。(之所以有“一系列”的库函数,部分原因是由于这些函数分别继…

LabVIEW在 XY Graph中选择一组点

LabVIEW在 XY Graph中选择一组点 问题:有一个包含许多点的XY Graph,在程序开发中,对于显示XY Graph中的多个点,如何进行选取。最好能像图像处理中的ROI一样,并且它们的颜色可以更改,可以在其中选择一些ROI…

【Docker】Docker数据的存储

默认情况下,在运行中的容器里创建的文件,被保存在一个可写的容器层里,如果容器被删除了,则对应的数据也随之删除了。 这个可写的容器层是和特定的容器绑定的,也就是这些数据无法方便的和其它容器共享。 Docker主要提…

Loop Copilot:AI驱动,小白也能自己生成音乐?

01 项目介绍 Loop Copilot是一个使用自然语言生成音乐的系统。它不仅允许你使用自然语言来生成你想要的音乐风格、节奏或旋律,还支持通过多轮对话对已生成的音乐进行进一步的编辑和修改。包括对生成的音乐进行编辑修改、添加或删除乐器、加入音效等。 02 工作流程…

(三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行

文章目录 1. 驱动开发环境搭建2. 驱动开发新建项目及项目属性配置和编译3. 双机调试环境搭建3.1 安装虚拟机VMware3.2 配置Dbgview.exe工具3.3 基于Windbg的双机调试 4. 内核驱动的运行4.1 临时关闭系统驱动签名校验4.2 加载驱动 1. 驱动开发环境搭建 请参考另一篇:https://bl…

Stable Diffusion WebUI扩展canvas-zoom详细讲解

canvas-zoom这是什么? 这是一个针对画布做一些操作的工具,比如缩放等。 下面来详细说一下这些操作的热键。 重要的热键: 缩放(Alt+滚轮)、移动画布 (F)、全屏 (S) 和重置缩放 (R) (1)Shift + wheel - 缩放画布 按住Shift + 滚轮之后,一点反应都没有,之后按…

上海市道路数据,有63550条数据(shp格式和xlsx格式)

数据地址: 上海市道路https://www.xcitybox.com/datamarketview/#/Productpage?id391 基本信息. 数据名称: 上海市道路数据 数据格式: Shpxlsx 数据时间: 2020年 数据几何类型: 线 数据坐标系: WGS84坐标系 数据来源:网络公开数据 数据字段&am…

lv8 嵌入式开发-网络编程开发 20 域名解析与http服务实现原理

目录 1 域名解析 2 如何实现万维网服务器&#xff1f; 2.1 HTTP 的操作过程 2.2 万维网服务器实现 1 域名解析 域名解析gethostbyname函数 主机结构在 <netdb.h> 中定义如下&#xff1a; struct hostent {char *h_name; /* 官方域名 */char **h_alias…

设计模式(五)—— 建造者模式/生成器模式

先简单记一下&#xff0c;以后再来认真写 还是造房子那个例子&#xff0c;一个房子分为①打地基 ② 砌墙 ③封顶三步&#xff0c;如果不用设计模式去写的话。就是一个超类&#xff0c;然后多个子类继承超类去重写 但是这样有两个缺点&#xff1a; &#xff08;1&#xff09;产…

【Python3】【力扣题】169. 多数元素

【力扣题】题目描述&#xff1a; 众数&#xff1a;一组数据中出现次数最多的数据。 【Python3】代码&#xff1a; 1、解题思路&#xff1a;哈希表。使用哈希映射存储各元素以及出现的次数&#xff0c;哈希映射中的键值对中的键为元素、值为该元素出现次数。 知识点&#xff1…