Fuzzification: Anti-Fuzzing Techniques

https://github.com/sslab-gatech/fuzzification.

Fuzz技术可能被攻击者用来查找0day漏洞,本文提出了一种缓解措施FUZZIFICATION,帮助开发者保护发布的只有二进制文件软件,放置攻击者应用最先进的fuzz技术。给定一个性能损耗,这种方法致力于尽可能多阻碍对抗者的fuzz过程,包括三种技术1)SpeedBump:在fuzz时将速度拖慢几百倍2)BranchTrap:隐藏路径和污染覆盖率图来干扰反馈逻辑3)AntiHybrid:对抗污点分析和符号执行。

在流行的fuzzer和现实世界上评估了项目,减少70.3%发现的路径,减少93.0%可以识别的crash,从LAVA-M数据集中减少67.5检测到的bug。

Motivation

fuzz技术可能被恶意攻击者利用寻找0day漏洞,因此开发者可能会应用反fuzz技术阻止攻击者fuzz,和逆向工程的混淆技术类似。

Methodology

本文提出了一种新的二进制保护方向,FUZZIFICATIOIN,放置攻击者有效找到bug,或者依然可以找到bug,但是需要更多的资源。那么开发者和信赖的第三方就可以更快找到bug并应用补丁。一个好的FUZZIFICATION技术应该满足以下三个特征

  1. 有效对抗已有fuzz工具,固定时间内找到更少bug
  2. 被保护程序应该依然可以正常使用
  3. 保护代码不容易识别并去除

本文的方法

  • SpeedBump:向冷门路径注入延迟代码,正常执行速度不会减少,但是fuzz经常访问,导致速度大大降低。不使用sleep函数,二十随即插入几个CPU密集操作,并且在原代码中创建控制流和数据流依赖。
  • BranchTrap:插入大量输入敏感跳转,任何输入的微小改变都会导致执行路径大量改变,这回导致基于覆盖率的fuzz工具在没有bug的路径花费更多时间。重用已有代码,组织对抗这识别注入的分支。
  • AntiHybrid技术:对抗动态污点分析和符号执行:将显式数据流转换为隐式数据流;注入几个代码块出发路径爆炸,例如把指令比较替换为hash指比对,使用CRC作为hash值

结果

使用LAVA-M数据集,fuzzer使用AFL,HonggFuzz, VUzzer, QSym

和处理后的程序相比,fuzzer可以在原程序中找到14.2倍数量的bug,3倍LAVA-M数据集中的bug.同时,减少70.3%发现的路径。

贡献

  • 提出了反fuzz的研究方向
  • 开发了三个反fuzz技术,包括隐藏路径覆盖率、减慢执行速度,阻止动态污点分析和符号执行
  • 评估了以上方法