许多公司仍未完全意识到在开发软件产品时使用模糊测试的优势。 但是产品安全性应与开发并驾齐驱。 因为校正已经完成的工作是劳动密集型的,并且比立即做好事情要昂贵得多。

而且尽管存在这样的事实,例如安全开发生命周期(SDLC)等概念,以及相对较新的诸如DevSecOps或SecDevOps之类的概念,已经在开发世界中出现了很长一段时间,但是并不是每个人都使用这些技术。 他们有一个本质-从开发的第一阶段开始实施改善安全性的方法,最好从对员工进行培训开始。 当然,重要的是要注意产品在整个生命周期中免受攻击的安全性。 有关详细信息-欢迎来到猫。
安全开发中最重要的步骤之一就是模糊测试。 模糊测试是一种软件测试技术,其本质是通过发送已知不正确的数据并分析程序对错误的反应来自动检测实现错误。
就在Twitter上撰写文章时,关于使用Dmitry Vyukov的模糊测试的笔记忽隐忽现。
他只是提请您注意以下事实:使用模糊处理可以检测到代码中的大量错误,否则即使经过一段时间也不会消失。
通常,模糊测试可以完成开发过程,但是模糊测试也可以分离已开发产品的功能。
与其他测试方法相比,模糊测试的优势:
- 您可以启动模糊测试器,直到测试结束时就将其忽略,然后处理结果;
- 自动测试可以识别由于代码覆盖范围更大而无法通过手动测试发现的错误;
- 使您可以收集有关已测试代码安全性的一般想法。
模糊测试的善举之一是在50天内在Adobe Reader中发现了五十个CVE。 研究人员无需访问源代码就可以发现这么多漏洞,很难想象如果拥有源代码就会发现其中的多少个漏洞。
如果您在开源中寻找有关开发人员使用模糊测试的信息,那么Microsoft将是第一个。 该公司是SDLC中进行模糊测试的先驱之一。 它们具有安全风险检测功能 ,该服务允许用户下载二进制文件以进行模糊测试。 用户决定将哪些数据馈入输入。 模糊器的结果是找到的错误和生成错误的数据。
Google也使用模糊测试,并且在公共领域有很多工具 。 其中最有趣的是OSS-Fuzz 。 其实质是任何人都可以使用他们的模糊器发出拉动请求。 通常这些都是模糊器,一旦由开发人员为他们的小型项目创建。 除了这些模糊器之外,Google还使用ClusterFuzz来检测Chrome中的错误。 几年来,在浏览器中发现了1.6万多个漏洞,在160个开源项目中发现了1.1万多个漏洞。
一些开发软件的公司每天为每个人提供模糊测试的程序集 。 Mozilla和VLC也是如此 。 任何人都可以下载该程序集并尝试查找其中的错误和漏洞。
当然,许多专有软件的开发人员对如何提高产品安全性都保持沉默。 但是,从检测到的漏洞数量来看,许多人没有充分注意其产品的安全性这一事实是显而易见的。 因此,我们决定对开发人员进行抽样调查,以了解开发人员对模糊测试的态度。
我们问了以下问题:
您在产品开发过程中使用模糊测试吗?
三分之一的受访者对这个问题的回答是肯定的。

如果不使用,那为什么呢? 或者,您认为通常是什么阻止您将模糊测试阶段纳入产品开发过程中?
可能的答案:
- 没什么毛毛
- 产品安全不是重中之重
- 没有合适的工具
- 没有相关专家
- 缺乏适当的基础设施
- 其他
受访者可以选择在开发过程中拒绝使用模糊测试的几种原因。
该图显示了在开发过程中拒绝模糊的原因的相关性百分比。

不使用模糊测试的最常见原因是该领域缺少合格的员工。 但是不一定总是有自己的信息安全专家,您可以吸引外部专家来审核开发的产品。
选择答案选项“其他”的一些受访者给出了有趣的详细答案。 以下是拒绝绒毛的一些原因:
- 信息安全部门不赞赏其中一位开发人员主动编写他们的模糊器;
- 缺乏FSTEC漏洞搜索技术。
答案中包括对AFL模糊器和libfuzzer的使用的说明 ,这是个好 消息 。
作为安全专家,我们建议您不要忽略安全开发,包括使用模糊测试来提高产品的安全性。