• Proj. THUDFuzzVis: VisFuzz: Understanding and Intervening Fuzzing with Interactive Visualization


    Source codehttps://github.com/ChijinZ/VisFuzz

    Abstract

    传统上模糊测试的一个瓶颈在于很难覆盖到被复杂的条件-比如magic number, 嵌套的条件所引导的程序支线,为此人们提出了白盒测试,然而即使这样,对复杂的条件的支持还是不够,比如array sort,virtual function, tree set queries还是覆盖不到。所以本文提出了visfuzz。

    VisFuzz用可视化的方式实时展示程序测试情况和程序支线覆盖情况,主要是从源码中抽取call graph(函数调用图)和control flow(函数内基本块流程图),并且将每个函数,基本块,源码和实际执行信息联系起来呈现在图上,从而允许测试工程师定位一直没法访问到的限制,这样工程师就可以人工调研语义环境,构造特殊种子或者升级测试driver了。

    本文的实验对象是Google的fuzzer-test-suite,实验方法是比较用/不用15分钟时间通过visfuzz理解改进测试,模糊测试12h,效果是提升了10.84%到150.58%的效果。

    Introduction

    黑盒技术有AFL,libFuzzer,这些技术覆盖率不太够,于是灰盒测试比如AFLFast和FairFuzz让能够覆盖到低频次的路径有更多的变异机会。但是还是不够,于是白盒测试也登场。Driller提出了当AFL遇到瓶颈就转换到符号执行模式的方法。HaCRS则把整个fuzz拆成多个子任务,让人协助。明显,人力能够协助测试进入复杂条件的潜力,所以提出VisFuzz。

    VisFuzz由三个部件组成:

    a) LLVM plugin:用于获取call graph,覆盖率和其他统计信息

    b) modified AFL: AFL+实时统计

    c) python supported visualization

    Demonstration

    覆盖率进入瓶颈,就召唤测试工程师人工分析。

    VisFuzz Design

    链接时通过vis-clang++(clang++加上plugin)来获取call graph,control flow graph等,并使用AFL类似的方法做插桩。运行时静态库libVisFuzz.so可以自动让被编译的文件执行时进行register和early initilization并且连上与fuzzer公用的shared memory。

  • 相关阅读:
    css3(持续更新...)
    em,rem,px之间的转换
    document.compatMode属性
    CSS hack(CSS浏览器兼容)
    JavaScript正则表达式
    Django数据库sqlite转mysql
    Markdown 使用指南
    centos7下docker 部署javaweb
    CMD命令大全
    {dockerUI}在服务器上直接安装shipyard/shipyard
  • 原文地址:https://www.cnblogs.com/xuesu/p/13907292.html
Copyright © 2020-2023  润新知