05月30, 2018

Fuzzing for software vulnerability discovery

the computers are capable achieving tasks that humans cannot. 计算机擅长,速度,精确度,重复,输出一致性的任务。 计算机主要是依靠人来编写软件,但是人是容易犯错误的,会导致软件缺陷或者错误,给计算机系统带来不确定性,越到错误无法按预期运行或者存有数据可靠性或者系统安全隐患。

安全涉及到保护数据和机密性,完整性和可用性。

软件缺陷,容易影响到系统易受攻击,泄露机密信心,损害信息的完整性,干扰可用性。 攻击可能是自动化或者通过网络的。

对数字存储和处理的信息安全构成威胁,目前的方案: 1 - 网络控件:防火墙,入侵检测系统IDS,入侵防御系统IPS,加密,完整性检查 2 - 主机控件:IPS/ID,文件完整性检查,身份验证,授权,审核和应用程序控制,输入验证,身份验证和授权。

但是这些方案并没有解决根本问题,存在的软件缺陷。 软件安全测试的目的是确定漏洞的存在,以便于解决导致他们的缺陷。 模糊是攻击者识别软件漏洞的强大方法。 所以明智的事开发人员在发布之前先做模糊测试。 不足:fuzzing testing 无法显示应用程序中所存在的所有软件漏洞,只能揭示开发实施阶段出现的软件缺陷,模糊测试并不是软件缺陷的灵丹妙药。

讨论: 1 - 模糊性的好处和局限性 2 - 为什么会出现软件漏洞 3 - 软件测试是重要的 4 - 攻击者如何利用软件安全漏洞 5 - 各种软件安全测试方法

1-3 章 背景知识 4 -模糊的起源 提出 fuzzer的基本模型和模糊过程,模糊测试数据的生成,创建格式错误的数据以便于传递给目标软件应用程序,从随机和蛮力模糊random & brute force fuzzing,然后提出更先进的方法,模糊测试数据生成,盲目数据突变模糊 blind data mutation fuzzing.

use of ‘blind’ data mutation fuzzing to discover software defects.

3个案例! 要分析下都是做什么的?

1.1 The Need for Secure Software 满足软件功能,性能和可靠性。 单元测试,集成测试,回归测试,性能测试,安全测试。 软件测试的重点是确保功能需求得到满足, 并且很少有资源专门用于测试是否满足安全要求

a ‘walled garden’ network security model 只是隔离了远程攻击的可能性,并没有解决内部攻击的问题。 模糊测试的成本低,需要极少专业知识,很大程度上自动化。 可以在不访问源代码的情况下执行,无需了解正在测试的系统。

2.1 Software Vulnerability Classes The number of defects per thousand lines of code (referred to as KLOC ) 每千行代码的缺陷数,称为KLOC 假设每千行代码的缺陷数是1个。 xp系统包含4000万行代码,则会包含4万个缺陷

1)软件设计阶段出现的设计漏洞,也就是在收集用户需求并转换成系统规范的时候。

2)实现产生的漏洞,由于软件语言和实际行为的差异,造成的实现偏离。 3)操作系统漏洞,由系统环境决定 buffer overflow

fuzz 本质上是随机字符串生成器。

本文链接:https://harry.uno/post/fuzzing-for-software-vulnerability-discovery.html

-- EOF --

Comments