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

本文主要是介绍【网安大模型专题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的不同组成部分对改进修复效果的贡献是什么

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

这篇关于【网安大模型专题10.19】※论文5:ChatGPT+漏洞定位+补丁生成+补丁验证+APR方法+ChatRepair+不同修复场景+修复效果(韦恩图展示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消