INTRODUCTION

本文引入了定向模糊测试(DGF),专注于到达程序中给定的目标位置。在高层次上,本文将可达性视为算法中的优化问题,并采用特定的元启发式,以最大限度地缩短生成的种子和目标的距离。为了计算种子距离,本文首先计算并插桩每个基本块到目标的距离。虽然种子距离是程序间的,但本文的新措施只需要对调用图和每个程序内CFG进行一次分析。运行时,模糊器聚合每个运行到的基本块的距离值,计算种子距离作为平均值。DGF以模拟退火算法作为最小化种子距离的元启发式,并且以能量分配来实现。一个种子的能量指定模糊器花费在这个种子上的时间。

DGF将目标位置的可达性当成优化问题,而现有的定向模糊测试方法(白盒)将其作为迭次约束满意度问题。

DGF在有效性和效率上都优于定向符号执行,然而,这两种技术的集成比每种技术都表现更好。

TECHNOLOGY

种子输入和多个目标之间的距离测量

为了计算各函数之间的距离,本文在函数级别的调用图和基本块级别的程序内控制流图中为每个节点分配一个值。

函数级目标距离决定了从函数到调用图中任意目标函数的距离,函数距离则决定了调用图中任意两个函数的距离。本文将函数距离定义为调用图中两个函数n、n'之间最短路径上的边缘数,将函数n和目标函数之间的函数级目标距离定义为函数n和任意可达到的目标函数之间的函数距离的谐波平均值。

基本块级目标距离决定了基本块到调用函数的所有其他基本块的距离,以及函数级目标距离的倍数。本文将基本块的目标距离定义为调用链中到达目标位置的其他基本块的平均距离。BB距离为控制流图中两个基本块的距离。BB距离为控制流图中两个基本块之间最短路径上的边缘数。N(m)为基本块m调用的一些函数。最后本文定义基本块级的目标距离:

最后,本文定义了归一化的种子距离,种子到目标位置结合的距离。本文首先定义种子距离:

模糊器将持续保持一个种子集S进行模糊测试。本文定义归一化的种子距离:

种子距离的计算时的重度程序分析可以放到插桩时计算,以保证运行时性能开销最小。只有归一化的种子距离需要在运行时通过收集预先计算的距离值进行计算。

基于模拟退火(SA)算法的能量分配

模拟退火算法的特征是:在随机运行的过程中,它总是接受更好的解决方案,但有时候也可能接受更差的解决方案。温度是SA的参数,它调节对更差方案的接受程度,并且按照冷却计划持续下降。在开始时,T=T0=1,SA算法接受更差方案的概率很高,当T趋近于0时,它退化为经典的梯度下降算法,并且只接受更好的解决方案。

冷却计划:

其中α是一个常数,通常为0.8~0.99.

基于模拟退火的能量分配 

在自动化漏洞挖掘中,我们通常只有有限的时间。因此,本文指定一个时间tx,表示退火过程在经历了足够的探索时间后,进入开发阶段。在tx之后,模拟退火过程就可以和经典的梯度下降算法类似。本文让温度Tk<0.05时进入开发阶段。

接下来,本文使用质数冷却计划定义基于模拟退火的能量分配(APS)。给予种子s和目标位置Tb,能量为:

集成

将AFL的能量分配和本文的能量分配策略集成到一起。其中pafl(s)为AFL给种子s分配的能量。目标基本块Tb,种子s的能量为:

功率因子,即13式的后半段,控制能量的增加或减少,在两种极端情况下的功率因子的行为如下图所示:

第一种情况为种子距离最大的情况,仅仅过了15分钟之后,能量就降为原来的15%。当种子离目标很远时,分配的能量会越来越少。通过(12)和(13)可知:

第二种情况为归一化的种子距离最小的情况,同样可以得出结论:

系统整体架构

论文学习:Directed Greybox Fuzzing(CCS‘17)相关推荐

  1. 论文笔记《Directed Greybox Fuzzing》

    论文笔记<Directed Greybox Fuzzing> 摘要 Introduction Technology 种子输入和多个目标之间的距离测量 基于模拟退火(SA)算法的能量分配 模 ...

  2. The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing 论文笔记

    定向灰盒模糊技术的进展.挑战与展望 PUT program under test DSE directed symbolic execution 定向符号执行 Abstract 定向灰盒相对于普通灰盒 ...

  3. 论文阅读:Directed Greybox Fuzzing

    一.论文相关信息 二.现有研究的不足 现有的Greybox模糊器(GF)无法有效地定向到有问题的更改或补丁.关键系统调用或危险位置.或定向到我们希望重现的已报告漏洞的堆栈跟踪中的函数. 三.知识点 ( ...

  4. 论文阅读_Constraint-guided Directed Greybox Fuzzing

    作者:Gwangmu Lee,Woochul Shim,Byoungyoung Lee 出处:USENIX 2021 概要   定向模糊测试致力于引导模糊测试向特定的程序区域探索.然而作者发现现有的定 ...

  5. 【论文分享】Sequence Coverage Directed Greybox Fuzzing

    文章目录 简介 背景 方法 结果 True positives verification Crash reproduction Bug exposure 总结 本文介绍一篇来自CCF B类会议 ICP ...

  6. SCDF:Sequence Coverage Directed Greybox Fuzzing

    主要思想 AFLGO缺点 1.耗时 AFLGO通过seed到target的distance分配power,而这需要对程序预先处理,例如插桩.编译.调用CG和CFG等计算distance,这会消耗大量时 ...

  7. 2021 SoK: The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing

    摘要 灰盒模糊已经成为最具可扩展性和实用性的软件测试方法.大多数灰盒模糊工具都是基于覆盖率的,因为代码覆盖率与bug覆盖率是紧密相关的.然而,由于大多数覆盖的代码可能不包含错误,盲目扩展代码覆盖的效率 ...

  8. 【论文分享】Sequence Directed Hybrid Fuzzing

    这篇文章发表于CCF B类会议SANER 2020,是ICPC 19年一篇工作的改进版Sequence coverage directed greybox fuzzing 主要的变化是原来是单纯的fu ...

  9. 【论文分享】WindRanger: A Directed Greybox Fuzzer driven by Deviation Basic Blocks

    论文基本信息 发表年份:2022 发表会议或期刊(简称,CCF级别):CCF A类会议 ICSE 论文标题(论文简称):WindRanger: A Directed Greybox Fuzzer dr ...

最新文章

  1. 到外国的网站写英语留言
  2. 5.3 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接---三次握手、tcp连接释放---四次握手)
  3. Spring Boot——获取上传文件的MD5值解决方案
  4. linux操作命令等积累
  5. php函数网,php函数
  6. Android O 获取APK文件权限 Demo案例
  7. g++链接boost库
  8. 京东抽奖项目开发笔记
  9. Microsoft Azure地缘组是什么
  10. 使用Eclipse中提供的Refactor(重构)工具
  11. 人人开源代码生成器启报错
  12. arm服务器虚拟化云手机,arm虚拟化部署的云手机有哪些优缺点
  13. 【论文笔记】Video Transformer Network
  14. 美团智能支付稳定性测试实战
  15. 什么电脑录音软件是最好用的
  16. MacOS图标文件 .icns 一键生成脚本
  17. Mysql各种缩写含义
  18. 数据结构(二)——单链表的头插与尾插
  19. 20200107笔记
  20. vue+swiper4+js实现滑动的筋斗云效果

热门文章

  1. Java命令行调试程序
  2. 【PB】pb菜单详解和MDI
  3. 解决会声会影x9关闭后UEIP.dll找不到指定模块的方法
  4. 项目组 eslint 统一配置及疑难解决
  5. PyInstaller 打包配置文件
  6. uCOSIII_消息队列-消息传递实验分析
  7. 解决arcgis中Lambert conformal conic projection存在的自动变换地理坐标系问题(可自定义为WGS84等任意地理坐标系)
  8. C语言if语句关系表达式中相等判断中包含函数的执行顺序
  9. 计算房贷 公积金贷款 自由还款 程序
  10. 十进制转BCD码的方法