STOCHFUZZ: Sound and Cost-effective Fuzzing of Stripped Binaries by Incremental and Stochastic Rewri

IEEE 2021
通过增量和随机重写对剥离二进制文件进行合理且经济高效的模糊化

摘要

模糊化剥离的二进制文件带来了许多困难的挑战,因为模糊程序需要检测二进制文件来收集运行时反馈,以指导输入变异。然而,由于缺少符号信息,在剥离的二进制文件上很难进行正确的检测。现有技术要么依赖硬件和昂贵的动态二进制翻译引擎(如QEMU),要么做出不切实际的假设(如二进制文件没有内联数据)。我们观察到,模糊化是一个高度重复的过程,提供了大量的尝试和错误机会。因此,我们提出了一种新的增量随机重写技术STOCHFUZZ,它借助于模糊化过程。它生成许多不同版本的重写二进制文件,其有效性可以通过多次模糊运行得到批准/不批准。概率分析用于汇总通过样本运行收集的证据,并改进重写。这个过程最终会收敛到一个正确重写的二进制文件上。我们在两组真实的程序上评估STOCHFUZZ,并与其他五个基线进行比较。结果表明,STOCHFUZZ在稳健性和成本效益方面优于最先进的纯二进制模糊器(例如e9patch、DDISSM和andRetroWrite),并实现了与源模糊器相当的性能。STOCHFUZZ可公开获取[1]。

背景

灰盒模糊[2]–[5]是一种广泛使用的安全测试技术,它为目标程序生成输入以暴露漏洞。从一些种子输入开始,模糊器在改变输入的同时重复执行程序。突变通常是由覆盖信息引导的。例如,一种流行的策略是,导致覆盖率提高的输入突变被认为是重要的,并且可能会发生进一步的突变。因此,现有的模糊引擎依赖于工具来跟踪代码覆盖率。通常,当源代码可用时,它们会利用编译器在模糊化之前进行检测。然而,在许多情况下,只有二进制可执行文件可用。已经开发了各种技术来支持无源代码的模糊应用程序。我们称之为二进制模糊技术。
现有的纯二进制解决方案分为三类:(1)利用硬件支持,(2)利用动态二进制重写,(3)依赖离线静态二进制重写。第一类使用高级硬件支持(如Intel PT[6])来收集运行时跟踪,这些跟踪可以进行后处理以获取覆盖率信息。这些跟踪以非常高的速度记录生成的单个执行的基本块,因此需要大量的努力来处理。此外,除了控制流跟踪之外,很难收集运行时

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值