Proj. THUDFuzzVis: VisFuzz: Understanding and Intervening Fuzzing with Interactive Visualization
Source code: https://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。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2014-10-31 CF 483B. Friends and Presents 数学 (二分) 难度:1
2014-10-31 SGU 144. Meeting 概率dp 几何概率分布 难度:0
2014-10-31 143. Long Live the Queen 树形dp 难度:0
2014-10-31 SGU 141.Jumping Joe 数论,拓展欧几里得,二元不等式 难度:3