论文阅读-Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024)

本文主要是介绍论文阅读-Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标题: Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024) 

作者: Hongliang Liang, Xinglin Yu, Xianglin Cheng, Jie Liu, Jin Li

期刊: IEEE Transactions on Dependable and Secure Computing

研究问题:

发现局限性:之前的定向灰盒测试在有多个目标的时候表现的不好

原因(problems):粗粒度的能量调度和静态阶段划分

AFLGO

1.problem1(能量):为了覆盖多个目标,为所有目标追求全局最优调度会忽略某些目标的局部最优调度 

2.two stages:(exploration and exploitation )首先从探索阶段开始,随机变异初始种子以生成许多新输入,以增加代码覆盖率。然后进入开发阶段,产生更多新的投入,越来越接近目标。 

3.problem2:(静态阶段划分):exploration和exploitation 的时间不好分配。

勘探越少,可供开发利用的覆盖信息就越少,导致在开发阶段难以产生高质量的定向种子。但过度探索会耗费大量资源,延​​误开发进度,失去方向性。 

Lolly 和 Berry  

1.problem1(能量):容易陷入局部最优调度 : 为单个目标寻求最优调度会导致其他目标难以实现 

2.problem2:(静态阶段划分):exploration和exploitation 的时间不好分配。 

研究假设:

1.提出自适应的搜索策略 

2.提出一种新的能量调度策略 

研究方法:

1.提出一种能量调度方法(MES)

    考虑种子序列和目标序列之间的三种关系进行能量调度,即s的序列覆盖率(seqCov)、ts'(序列的)优先级(priority)和全局最大值覆盖率(gM axCov)。具体来说,MES 为具有高 seqCov、高优先级、低 gM axCov 的种子分配更多能量 ->为全局最大覆盖率低的种子给予更多能量:

    可以避免像 AFLGo 这样忽略局部最优,也可以避免陷入像 Lolly 或 Berry 这样容易陷入局部最优。 

2.提出一种协调exploration和exploitation的方法(CEE)

根据覆盖种子和定向种子的产生情况来分配两阶段的时间(根据两个队列中种子的比例灵活协调探索和利用阶段 )。有两个队列来存储种子。使用一个队列来存储有助于到达目标的种子(简称定向种子),另一个队列来存储提高代码覆盖率的种子(简称覆盖种子)。 如果在探索时覆盖种子在总种子中的比例太高(例如,超过阈值率),我们的模糊器将切换到利用阶段(定向种子)。 如果在利用时代码覆盖率信息不足(例如,模糊器在很长一段时间内没有生成新的定向种子),我们的模糊器就会转向探索阶段。 此外,CEE通过记录每个开发阶段的持续时间和生成的定向种子的数量来动态调整阈值率,以自适应地协调探索和开发阶段。 

3.将上述两种策略应用于LeoFuzz 

研究动力

图一 是过程间控制流图 Inter-CFG,里面每一个节点是基本块BB,M和P是我们的目标错误target problem Select an Image

回顾:在AFLGO里面提到

「CG和CFG

Call Graph:是调用图,打开IDA就可以看到一个函数调用另一个函数,CG的单元是函数function。函数function是比基本块BB大的量,因为一个function里面有循环、分支跳转。

CFG:是控制流图,单元量是基本块BB。不同function的BB跳转构成的CFG叫做Inter-CFG,Intra-CFG就是一个function里面的BB跳转。AFLGO采用了Intra-CFG,因为这个更简单操作,在原先AFL的代码上改动不大,不会加上过多的overhead。」

Problem 1: unsuitable energy scheduling hinders covering multiple targets. 

  • 现存的DGF的两种能量调度策略:

1.AFLGo 采用 Dijkstra 算法来调度种子 ,执行跟踪三种种子,i.e., a-c-e-i-q-m, a-b-d-k-o and a-b-d-f-g-j-k-p, 这些路径中的每个节点到两个目标之间的harmonic distance (谐波距离,也叫调和平均值);

 Select an Image

2.Lolly 或 Berry 在能量调度中利用目标序列覆盖。 

如果通过目标 m 的路径比通过目标 p 的路径更难探索(例如,由于复杂的条件),则接近 m 的种子的目标序列覆盖率将比另一个种子的目标序列覆盖率增加得更慢种子接近p。因此,这两个工具都会生成大量探索图 1 右分支的种子,而只有少数种子覆盖图 1 左分支。即使达到目标,它们也会继续探索图 1 右分支p。因此,他们很难安排接近目标 m 的种子。 

Problem 2: improper exploration-exploitation division. 

现存的两阶段的协调方法有3种:

  • uses the seed selection strategy without considering the exploration-exploitation switchover, like Lolly (不考虑划分为两阶段,以Lolly  为典型代表):生成的覆盖种子或定向种子被放置在队列的末尾以进行顺序调度。这种方法很简单,但可能需要很长时间才能使队列尾部(或附近)的定向种子发生变异,从而减慢了目标的到达速度。 
  • gives each stage a fixed period. (两阶段的时间是固定的,以AFLGo 和RDFuzz为典型代表) 
  • 开发优先策略(以Berry 为典型代表):将种子队列分成三个优先级,且定向种子比覆盖率种子优先级高。缺点是当代码覆盖率信息不足时,策略不佳,生成种子质量低。

方法框架

框架名:LeoFuzz 

includes two phases:static analysis and dynamic analysis.(静态分析和动态分析)

Fig. 2. LeoFuzz’s architecture Select an Image

静态分析阶段:

 step1:从待测程序中使用图像抽取器抽取CG和CFG。注:Lolly and Berry,only use CFG 

step2:目标序列生成器映射目标中的语句到基本块。为每一个目标生成一个目标序列(包括了从entry function 通往目标的路径上必要的基本块BB)。

domcg:由P获得的CG转化成的支配树。(line2,3) domCG:由CFG转化成的支配树(line4,5) e target function name funN ame (lines 4-6).  Select an Image

使用案例来辅助理解算法1:main1-A1-entry-a-f-g是目标g的目标序列,其中main1和A1分别表示main和A函数的入口节点  Select an Image

step3:对 PUT 进行检测以收集运行时信息,例如代码覆盖率和执行跟踪,并将检测后的二进制文件发送到执行器。 

动态分析阶段:Fuzzer的input为Initial seed 和instrumented binary 

从执行步骤来划分:

step1:the stage coordinator judges the stage of the fuzzer (exploration stage or exploitation stage). 

初始是exploration阶段,生成的覆盖种子的比例达到一个阈值就会转为exploitaion阶段 。反之亦然,两个阶段相互转换。

step2:根据stage,种子选择器从对应的队列(覆盖种子队列(简称CQ)或定向种子队列(简称DQ)) 中获取一个种子

step3:编译器变异种子,送入执行器

step4:如果这个种子导致了PUT crash,存储在crash queue中

           进入 DQ(如果它增加了目标序列覆盖率) 

           存入CQ(如果它增加了代码覆盖率) 

否则丢弃

从组成部分来划分:

A. Fuzzer 

fuzzer的工作流程如图算法二所示 Select an Image

1) Exploration-exploitation Coordination: 

2) Seed Energy Scheduling for Multiple Targets: 

B. Concolic Executor 

这篇关于论文阅读-Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

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

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

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

AI hospital 论文Idea

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

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

2024/9/8 c++ smart

1.通过自己编写的class来实现unique_ptr指针的功能 #include <iostream> using namespace std; template<class T> class unique_ptr { public:         //无参构造函数         unique_ptr();         //有参构造函数         unique_ptr(

论文翻译: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