Fuzzing模糊测试,智能检测新未来
科技
科技 > 传媒 > 正文

Fuzzing模糊测试,智能检测新未来

随着时间的推移,软件架构发生了巨大的变化,大多数组织正在从大型机系统/服务器转向云原生应用程序和微服务。系统体系结构变得更加分散,逐步演变成一组集成系统,这些系统明显变得更加分布式。由于演变为异构环境,例如软件即服务技术、私有云、公共云以及它们之间的众多集成点,这些集成点使所有这些都可以正常工作,测试也变得越来越复杂。这意味着,在任何时候测试团队都需要能够在各种操作系统和设备上测试 API、回归、性能和UI。

Fuzzing模糊测试

模糊测试(fuzz testing, fuzzing)是一种软件测试技术。其核心思想是将自动或半自动生成的乱数据输入到一个程式中,并监视程式异常,如崩溃,断言(assertion)失败,以发现可能的程式错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。虽然由来已久,仍备受关注,且得到广泛使用。

模糊测试最早由威斯康星大学的Barton Miller于1988年提出。最初的实验内容是开发一个基本的命令列模糊器以测试Unix程式。这个模糊器可以用乱数据来「轰炸」这些测试程式直至其崩溃。目前,世界上一些大规模的组织机构也在使用Fuzzing模糊测试技术,作为其质量控制和网络安全操作的一部分:

Google使用模糊测试来检查和保护Chrome中的数百万行代码。2019年,谷歌通过内部模糊测试在Chrome中发现了20,000多个漏洞。

微软将模糊测试作为其软件开发生命周期的阶段之一,以发现漏洞并提高其产品的稳定性。其曾通过Fuzzing模糊测试技术发现office安全缺陷1800多个。

美国国防部 (DoD)发布了DevSecOps参考设计和应用程序安全指南,两者都要求将模糊测试作为软件开发过程的标准部分。

华为要求所有对外提供或使用外源进行服务的C/C++代码都需要进行Fuzzing测试,且每年发现的Top N问题1000+。涉及海思、数通、云核、无线、终端、华为云(存储、计算)、公共开发部、车BU等重点单位。

GitLab收购PeachTech和Fuzzit,这使得GitLab提供了第一个同时拥有覆盖引导和行为模糊测试技术的安全解决方案,成功将模糊测试技术植入CI/CD环境。

目前,国内比较代表性的厂商如云起无垠。云起无垠是新一代智能模糊测试技术领跑者,国内首家Fuzzing全流程赋能开发安全——DevSecOps解决方案供应商,基于智能模糊测试引擎为协议、数据库、API、APP、Web3.0等应用提供强大的软件安全自动化分析能力,从源头助力企业自动化检测与修复业务系统安全问题,为每行代码的正常运行保驾护航。让软件更安全,让安全更智能。

云起无垠基于Fuzzing模糊测试技术研发设计了无垠协议模糊测试系统和无垠代码模糊测试系统。

无垠协议模糊测试系统作为国内领先的下一代协议检测工具,通过对车联网、物联网、工控等设备/设施中的协议实现层进行模拟攻击,开展健壮性检查和漏洞挖掘,协议覆盖范围包括但不限于蓝牙协议、WiFi协议、网络通信协议、文件传输协议等,同时通过平台提供的可视化功能分析交互报文及漏洞生成日志,将发现的漏洞及逻辑问题进行多维度呈现,助力企业排除隐患,从底层保障协议安全。

无垠代码模糊测试系统主要应用于代码安全检测场景,基于模糊测试技术,对系统源代码及二进制文件进行动态检测,帮助开发、测试、安全人员快速发现、定位、验证目标工程的代码缺陷,从而提升目标工程代码的安全性及健壮性,助力企业实现“安全左移”。

三大分类

Fuzzing也分为黑/白/灰盒的fuzzing:

黑盒fuzzing: 对程序内部一无所知的fuzzing,也不需要程序的反馈来改进fuzzing的输入。黑盒fuzzing分为两种形式:

generational-based,即从零开始生成fuzzing的输入。可以是随机生成的输入,或是基于规则的生成;

mutational-based,即基于已有的种子测试输入进行变异。黑盒fuzzing生成用例容易,但是较难保证测试的效率和效果。

灰盒fuzzing: fuzzing过程中会得到少量的程序反馈,以调整后续的fuzzing方式。例如在程序中进行插桩,可以获得一条fuzzing用例在执行时对应的代码覆盖率。如果接触到了更多的程序内容,就把这一条用例记录下来,用于改进fuzzing的效果。

白盒fuzzing: 基于程序分析符号执行和约束求解的fuzzing。先变异约束节点的条件,然后生成新的程序输入。白盒fuzzing的技术栈比较深,但是能应对更复杂的需求,需要在效果和效率上做平衡。

工作原理

Fuzzing模糊测试技术是将无效或随机数据放入软件系统中,以发现编码错误和安全漏洞。模糊测试的目的是使用自动化或半自动化技术插入数据,并对系统进行各种异常测试,例如系统崩溃或内置代码故障等。

在模糊测试中,模糊测试引擎生成合适的输入,将它们传递给目标并监控其执行。目标是找到目标行为不理想的输入。例如,这是崩溃(例如,分段错误)。图 1 显示了 fuzzing 运行的主要步骤。

图 1. 模糊引擎在执行期间执行的步骤

通常情况下,一般会经历如下几个步骤:

图2 模糊测试步骤

步骤一:识别目标系统

步骤二:识别输入

步骤三:生成模糊数据

步骤四:使用模糊数据执行测试

步骤五:监控系统行为

步骤六:记录缺陷,确定可利用性

价值优势

相较于传统的安全检测技术,Fuzzing模糊测试技术具有如下优势:

模糊测试不仅可以发掘安全隐患,还可以显示问题的原因以及攻击者在现实攻击中如何与之交互。

该技术是一种几乎零误报的安全检测技术,因此安全团队或开发者无需筛选误报即可确定问题。

模糊测试是完全自动化的,一旦设置了模糊测试程序,它就可以在没有人工输入的情况下继续寻找漏洞。可以独立运行数天甚至数周,深度识别潜藏在被测系统中漏洞。

模糊测试可能发现其他软件测试技术无法发现的漏洞。正因为如此,除了手动技术之外,它经常被使用。

黑客经常使用模糊测试挖掘零日漏洞。使用与黑客相同的技术,开发人员可以在攻击者之前发现零日漏洞并提前防御。

云起无垠创始人兼CEO沈凯文表示,“Fuzzing技术虽然九几年就被提出了,但当时它还是利用较为落后的暴力枚举法,更多停留在实验室环境下。但近 30 年,Fuzzing 技术呈飞跃式发展,它目前除了可以覆盖 AST 技术以外,还可以利用到一些其他的技术,包括符号执行、语法树变异、代码覆盖引导技术、遗传算法变异、污点跟踪等。”正因如此,该技术在安全检测中得到更多的应用。

提及沈凯文,不得不言其经历。作为清华大学网络空间安全博士,蓝莲花核心成员,沈凯文曾在网络安全四大顶会发表多篇论文,多次在 DEFCON CTF 等国际著名赛事中获奖;在GeekPwn2019国际安全极客大赛中获全球第一名,入选“极棒名人堂”,其在模糊测试技术领域的研究也颇深。

网络安全的世界从来都没有单纯过,往往填充着更多的未知数。尤其是新技术的不断兴起,攻击手段日趋迭代,各类攻击事件层出不穷。防患于未来才是未来,做好应用程序上线前、上线后的安全检测至关重要。Fuzzing模糊测试技术可以基于协议、代码做好应用程序上线前后的安全检测,可以智能检测新未来。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。

亲爱的凤凰网用户:

您当前使用的浏览器版本过低,导致网站不能正常访问,建议升级浏览器

第三方浏览器推荐:

谷歌(Chrome)浏览器 下载

360安全浏览器 下载