这篇文章发表于CCF B类会议SANER 2020,是ICPC 19年一篇工作的改进版Sequence coverage directed greybox fuzzing

主要的变化是原来是单纯的fuzz,现在是hybird Fuzz,也就是加入了符号执行来作为辅助。

这篇工作要解决的问题是:现有的定向模糊测试没有在effectness和efficiency上达到很好的平衡,也很难基于随机变异来覆盖复杂的路径。

方法

文章主要是在能量调度算法和种子选择策略做了修改。能量调度算法是根据目标序列和种子执行轨迹的相似度进行比较。种子选择策略在lolly基础上,又多考虑了到达目标的路径上的必要点。变异输入部分再结合concolic execution来高效生成覆盖复杂条件的输入。

文章的总体框架如下所示,分为静态分析和动态分析两个部分。

静态分析首先把目标序列和源码的行号转化为基本块,并且基于dominant tree analysis求出ETS。其中ETS表示的是enhanced target sequence,意思是目标序列和到达目标序列的必要节点的结合。然后插桩主要是为了在运行时获得分支覆盖率和目标执行轨迹的信息。

动态分析部分,fuzzer的输入是插桩后的二进制和ETS,然后fuzz的过程时,把种子放在三种级别的队列中,分别是L1,L2,L3,表示高优先级,普通优先级,低优先级。Concolic Executor的输入是测试的二进制(PUT)和L1级别的种子,并且把新生成的种子放在L2级别。

Static Analysis

为了支持细粒度的调度种子,文章考虑了目标序列的覆盖率以及他们的执行上下文(也就是到达目标序列的必要节点)。执行上下文获取的算法如下图所示:

在控制流图中,如果到达节点n的每条路径都需要经过节点d,那么就叫节点d为节点n的支配节点。如果树上的每个节点只支配自身及其子节点,就叫这个树为支配树。

上面的算法里,n0是entry node,N是所有基本块的集合。对于一个基本块n,他的支配节点是节点n所有前驱节点的支配节点的交集。所以,一开始的时候,对于任意一个节点n,先将他的支配节点的集合设为N。然后再迭代式地移除不属于节点n的支配节点(5-9行)。最后13行-15行是去获取属于目标序列(Target Sequence)的必要节点。

接下来是插桩部分,除了插桩获取覆盖率信息外,SDHF也对ETS的基本块进行插桩,来获取目标执行轨迹TET。覆盖率信息和TET和ETS的相似度将被用于确定种子的优先级。

比如下面的例子,种子的执行轨迹是“aegabdfg”,由静态分析得到的ETS是abcg,通过插桩得到的TET是ababg。

dynamic analysis

动态分析部分主要是fuzzer和concolic executor的交互。

1)fuzzing process

fuzz的总的流程如下所示。首先从种子队列S中取出一个种子s,并且给种子赋予能量p。种子的能量决定了变异这个种子的时间。然后,fuzzer对种子进行变异,并且生成新的种子s‘,如果s’产生了crash,就会把这个种子放在Sx集合中。对于每个新生成的种子s‘,都会去计算种子执行轨迹与ETS的相似度sim以及是否有增加覆盖率cov。如果相似度大于某个阈值d并且有新增覆盖率,则把种子加入L1优先级队列,如果相似度大于d,但没有新增覆盖率,则要放到L2中。如果种子相似度没有大于阈值也没有新增覆盖率,就放到L3。持续这个过程直到超时或者手动中止。

2)concolic execution

concolic execution是fuzzing过程的一个辅助手段,它以部分匹配的种子作为输入,来生成更高相似度的种子。因为fuzzer是依靠随机变异来生成种子,即使fuzzer生成了高相似度的种子,也不能确定新生成的种子接近了目标序列。concolic execution能够获取种子执行的路径并且生成执行特定路径的输入。

这部分的算法如下图所示。首先执行给定的种子S,获得种子S执行的路径Trace。然后遍历路径Trace上的基本块,根据最大匹配前置路径,找到转换点SP的基本块,获取转换点基本块另一个没执行过的子节点的约束,生成新的种子。

实验

在LAVA-M上与QSYM比较发现漏洞效率,TTE表示发现漏洞的时间。

和BugRedux,AFLGo比较复现漏洞的有效性。

与Lolly比True Positives Verifification的能力

最后再用工具挖到了几个真实的漏洞:

【论文分享】Sequence Directed Hybrid Fuzzing相关推荐

  1. 论文笔记《Directed Greybox Fuzzing》

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

  2. 论文阅读:Directed Greybox Fuzzing

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

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

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

  4. 【论文分享】 Regression Greybox Fuzzing

    CCS 2021 的一篇关于模糊测试的文章,主要是利用git commit 的日志来去指导模糊测试,去测试最近变化过和变换频繁的代码区域. 简介 What you change is what you ...

  5. 论文学习:Directed Greybox Fuzzing(CCS‘17)

    INTRODUCTION 本文引入了定向模糊测试(DGF),专注于到达程序中给定的目标位置.在高层次上,本文将可达性视为算法中的优化问题,并采用特定的元启发式,以最大限度地缩短生成的种子和目标的距离. ...

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

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

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

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

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

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

  9. [论文分享] PATA: Fuzzing with Path Aware Taint Analysis

    PATA: Fuzzing with Path Aware Taint Analysis [S&P 2022] 清华和南大合作的一篇fuzzing结合污点分析的论文, 发在今年的S&P ...

最新文章

  1. 阿里巴巴发布AI养蜂系统
  2. docker 推送到本地仓库_Docker_学习笔记系列之仓库
  3. gocode+auto-complete搭建emacs的go语言自动补全功能
  4. 三方登录(微博为例)
  5. MVC三层架构(详解)
  6. 16.1117 NOIP 模拟赛
  7. Arcgis for Android 空间数据WKT与JSON描述
  8. VB6之ICMP实现ping功能
  9. asp:boundfield 鼠标悬停后显示_设计了100张图表后,我学到了哪些经验?
  10. MSComm控件过程中内存溢出和GetOneDimSize出错的问题
  11. [转]CocoaChina上一位工程师整理的开发经验(非常nice)
  12. python怎么设置背景音乐_怎么设置背景音乐?
  13. 修改pdf文件的软件
  14. 翟菜花:作为一个开发者 我为什么更看好搜索+小程序
  15. 2022年黑龙江最新建筑八大员(标准员)模拟考试试题及答案
  16. 猜名次 C语言简单的实现
  17. 9.Android 万能ViewHolder
  18. 【云原生】Docker仓库详细讲解,搭建使用 Docker Registry 私服
  19. TDA4863G完全符合世界标准,经过优化,可为电子镇流器和离线式SMPS提供极其紧凑且经济高效的PFC解决方案
  20. CEC2015:动态多目标野狗优化算法求解CEC2015(提供完整MATLAB代码,含GD、IGD、HV和SP评价指标)

热门文章

  1. 关于飞思卡尔的芯片固件库问题,为什么5.3没有8位芯片固件选择MC9S08DZ60芯片
  2. 淘宝店适合什么样引流方法?淘宝店应该如何引流?
  3. 【升鲜宝】生鲜配送管理系统_升鲜宝 V2.0 按客户商品分类分开打印配送与按客户商品分类导出相关订单商品相关说明(一)...
  4. IAR修改工程名流程
  5. 论语 宪问篇(笔记)
  6. word导入excel html,怎么在word中导入excel文件
  7. gps纠偏及大陆地图偏移原因
  8. 逻辑门电路PROTUES仿真
  9. QTextEdit设计的几个知识点
  10. linux界面回收站图标没了,Ubuntu美化教程:在AWN中添加“显示桌面”和“回收站”图标...