Fuzz方法在SPDK iSCSI的应用实例

uzz 简介

本文目的是介绍如何使用fuzz方法写出测试代码。首先了解一下fuzz的概念。

1

Fuzz Test 是什么

中文可翻译为模糊测试。就是用大量的测试用例一个一个试,尽可能多的找出有可能出问题的地方。第一个模糊测试工具,最初由Barton Miller于1989年在威斯康星大学开发。模糊测试是一种软件测试技术,它是一种安全测试。

在模糊测试中,用随机坏数据(也称做 fuzz)攻击一个程序,然后等待观察哪里遭到了破坏。模糊测试的技巧在于,它是不符合逻辑的。自动模糊测试不去猜测哪个数据会导致破坏(就像人工测试员那样),而是将尽可能多的杂乱数据投入程序中。经过这个测试验证过的失败模式通常对程序员来说是个彻底的震憾,因为任何按逻辑思考的人可能都不会想到这种失败。

2

为什么要进行模糊测试?

  • 可能发现最严重的安全故障或缺陷。

  • 当与Black Box测试、Beta测试和其他调试方法一起使用时,模糊测试可以提供更有效的结果。

  • 模糊测试用于检查软件的漏洞。这是非常划算的测试技术。

  • 模糊测试是黑盒测试技术之一。模糊测试是黑客用来发现系统漏洞的最常见方法之一。 

3

模糊测试能检测到的错误类型

  • 断言失败和内存泄漏

    此方法广泛用于大型应用程序,其中的错误会影响内存的安全性,这是一个严重的漏洞。

  • 输入无效

    在模糊测试中,模糊器用于生成无效输入,用于测试错误处理例程,这对于不控制其输入的软件很重要。简单的模糊测试可以被称为自动化负面测试(Negative Testing)的一种方法。

  • 正确的错误

    模糊测试也可用于检测某些类型的“正确性”错误。如数据库损坏,搜索结果不佳等。

4

模糊测试实现过程

1) 找到一份待测试的可执行文件代码;

2) 生成大量的测试用例(Fuzzed数据)找到输入点,然后把随机数据丢进去;

3) 执行文件;

4) 观察破坏了什么;

5) 记录缺陷。

5

模糊测试的优缺点

好处

  • 模糊测试改进了软件安全测试。

  • 在模糊测试中发现的错误有时很严重,包括崩溃、内存泄漏、未处理的异常等。

  • 如果由于时间和资源的限制,测试人员可能没有注意到的一些错误,那么在模糊测试中会发现。

缺点

  • 仅靠模糊测试无法保证整体安全。

  • 模糊测试在处理不会导致程序崩溃的安全威胁方面效果较差,例如某些病毒、蠕虫、特洛伊木马等。

  • 模糊测试只能检测简单的故障或威胁。

  • 要有效地执行,需要大量时间。

  • 使用随机输入设置边界值条件是非常有问题的,但现在使用基于用户输入的确定性算法,大多数测试人员解决了这个问题。

SPDK iSCSI应用实例

1

被测对象

确定需要进行fuzz测试的文件代码。这里以spdk的lib/iscsi.c为被测对象。我们编写的fuzz app代码为spdk/test/app/fuzz/iscsi_fuzz/iscsi_fuzz.c。

2

了解iSCSI流程

iSCSI结构简介

iSCSI使用Client/Server模型。Target端即

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值