zoukankan      html  css  js  c++  java
  • Proj EULibHarn Paper Reading: APICraft: Fuzz Driver Generation for Closedsource SDK Libraries

    Abstract

    P1: 介绍fuzz driver
    目前方法:静态code analysis,在闭源上有问题

    1. 信息有限
    2. API之间的语义关系复杂(Q: the semantic relations among API functions are complex yet their correctness needs to be ensured.)
      P2:
      本文: APICraft
      collect-combine
      利用静态-动态消息(headers, binaries, traces)来获取控制、数据依赖
      实验:
    3. 5 attack surfaces from the macOS SDK
      效果:
      +64% code coverage
      142 vulnerabilitues, 54 assigned CVE

    1. Intro


    关键:answer the questions of what information to extract and how to utilize it
    自下而上合成fuzz驱动,collect-combine策略
    这里collect指收集目标SDK消费者程序的执行轨迹,只收集API函数间的数据,并不是收集全部数据
    combine指组合这些trace,考虑到所需属性可能相互冲突,基于多目标遗传算法的策略优化,满足一组预定义的指标

    2. Roadmap

    2.1

    用例子展示了trace合并的基本策略和为何需要多个目标

    3. Methodology






    4. Implementation

    1. 写了tracing tool,能处理GUI
    2. 使用typeII hook,因为直接在二进制上识别退出比较难,不能只识别ret
    3. 轻量hook:function interposition,将hook代码包装为一个和hook target具有相同原型的函数

    5. Evaluation

    要回答的问题

    1. 能否为商业化SDK target生成fuzz driver
    2. 被生成的driver的效率
    3. 每个组件的贡献
    4. 能否找到新的vulnerabilities
      数据集: five attack surfaces in macOS SDK as the targets, which are Image, Font, PDF, Audio, and RTF
      工具:
      我们使用patched honggfuzz [5, 20],收集目标二进制库的基本块覆盖率
      从开放的互联网资源 [21-29] 中随机收集从中选择种子进行实验。
      使用 honggfuzz 内置的语料库最小化功能 [30]。
      用libgmalloc [17]而非ASan检测内存损坏问题。
      重复: 24hr * 10
      Fuzzer选择: APICRAFT 可能会生成多个模糊驱动候选(第一帕累托边界的所有模糊驱动),此时选择在更多目标中得分更高的一项。 如果没有人能在所有三个目标上都做得更好,我们遵循优先顺序 DIV > EFF > COMP。

    5.1 Fuzzer Generation

    被追踪的每个攻击面的Consumer都是内置的 macOS 应用程序。
    准备了手动的trace,保证这些trace覆盖了所有基本功能

    5.2 Comparison with Manually Written Fuzz Driver

    5.3 Effectiveness of Each Component

    5.4 Fuzzing Campaign

    6. Discussion & Future Work

  • 相关阅读:
    各种算法七
    各种算法六
    使用URLConnection调用axis1.4开发的webservice
    JDBC结果集rs.next()注意事项
    URLConnection调用接口
    axis1.4开发webservice客户端(快速入门)-基于jdk1.4
    axis1.4开发webservice服务端(快速入门)-基于jdk1.4
    FMDB数据库的简单实用
    Xcode5 取消项目ARC,或者单个类ARC切换
    用CornerStone配置SVN,HTTP及svn简单使用说明
  • 原文地址:https://www.cnblogs.com/xuesu/p/15732183.html
Copyright © 2011-2022 走看看