Fuzzing Error Handling Code using Context-Sensitive Software Fault Injection

本文介绍了一种名为FIFUZZ的模糊测试框架,专门针对错误处理代码进行测试。FIFUZZ利用上下文相关的软件故障注入(SFI)方法,有效覆盖和检测错误处理代码中的潜在问题,尤其是在处理偶发性错误方面。通过与上下文无关的SFI和现有模糊测试工具比较,FIFUZZ在发现错误方面表现出优越性。
摘要由CSDN通过智能技术生成

1、Abstract

本文主要是对错误处理代码进行模糊测试,现在的模糊测试技术主要是基于生成和变异的方法来生成种子,尽可能的覆盖代码执行路径,从而发现错误。但是在测试错误处理代码方面非常有限,因为一些错误处理代码只能由偶发错误(例如内存不足和网络连接故障)触发,而不能由特定的输入触发。

所以在本文中作者提出了一个名为FIFUZZ的模糊测试框架,有效的测试错误处理代码。FIFUZZ的核心是上下文相关的软件故障注入(software fault injection,SFI),该方法可以有效地覆盖错误处理代码,并且可以查找隐藏在具有复杂上下文关系的错误处理代码中的深层错误。

最后FIFUZZ与上下文无关的SFI和现有的模糊测试工具(AFL,AFLFast,AFLSmart和FairFuzz)进行了比较, FIFUZZ发现了这些工具遗漏的许多bug。

2、Background & Introduction

2.1 错误处理代码

错误处理代码是指由于特殊的执行条件,例如用户的无效输入,内存不足和网络连接故障,程序在运行时遇到的特殊情况。我们将这些异常情况称为错误,用于处理错误的代码称为错误处理代码。(例如try / catch中的catch内容)

另外错误可以分为两类:分别是与输入有关的错误和偶发性的错误。与输入相关的错误是由无效输入引起的,例如异常的命令和错误的数据,这类错误可以通过提供特定的输入来触发,目前的模糊测试技术主要也是触发此类错误。

偶发性的错误是由偶尔发生的异常事件引起的错误,例如内存不足或网络连接失败,此类错误与执行环境和系统资源(例如内存和网络连接)的状态有关,但与输入无关,因此现有的模糊测试技术很难触发该错误。

2.2 错误处理代码的特点
  1. 错误处理代码很重要,但它本身很容易出错
  2. 错误处理代码很难正确实现,因为它通常涉及特殊和复杂的语义
  3. 错误处理代码也难以测试,因为此类代码很少执行
  4. 错误处理代码引起的关注也比较少
    由于这些特点,错误处理代码中可能会存在许多bug,并且这些bug可能会有比较大的危害。另外通过作者的调研发现,许多CVE漏洞都是由错误处理代码引起的(例如CVE-2019-7846,CVE-2019-2240,CVE-2019-1750和CVE-2019-1785)。
2.3 软件故障注入(software fault injection, SFI)技术
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值