干货分享|浅谈模糊测试对软件质量保障的推动作用

首图.gif


2018年,优步一款自动驾驶汽车上的软件计算失误导致一位行人死亡。美国国家运输安全委员会最新发布的初步调查报告显示,优步涉事车辆的自动驾驶软件存在几处设计缺陷,包括不能识别乱穿马路的行人等。

2018年-2019年,波音737飞机在五个月内出现两次重大坠机事故,共造成了346人遇难。波音遭遇订单减少、股价下跌、声誉受损等一连串打击,也为此付出了至少90亿美元的代价。调查显示,该机型新增的“机动特征增强系统”(MCAS),在测试、审查上存在种种漏洞。


在当今智能化、网络化的背景下,从国家安全到个人生活,软件无所不在,软件故障所带来的影响不容小觑。一些关键的应用领域(例如军工、智能驾驶、金融等)如果软件质量出现问题,可能造成灾难性的后果,不仅会伴随即时利益的损失,为企业信誉和品牌带来恶劣影响,甚至会威胁到生命安全。


中共中央、国务院2023年2月印发的《质量强国建设纲要》中提到要“加强重点领域产业基础质量攻关,实现工程化突破和产业化应用。支持通用基础软件、工业软件、平台软件、应用软件工程化开发,实现工业质量分析与控制软件关键技术突破。”由此可见国家对软件产品质量尤为重视。


软件质量如何评估?

既然软件质量对软件产品如此重要,那么我们该如何评估、评价软件的质量呢?


目前国际上通用的ISO/IEC 25010:2011标准中的软件质量模型将软件质量属性划分为8个特性:功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性。


基于该质量模型,我们可以清楚从哪些属性/维度进行评估,逐个击破,以提升软件质量。

1.png

不得不提的软件测试

提到软件质量,自然离不开对软件测试的探讨。Glenford J. Myers在1979年对软件测试的定义是:“测试是为了发现错误而执行一个程序或者系统的过程。”从这个定义可以看出,假定软件总是存在缺陷的(事实上也是如此)、有错误的,测试就是为了发现缺陷。


可见,软件测试是发现bug的有效手段,虽然软件测试不能等同于软件质量保证(SQA),但测试可以有效反馈质量情况,间接推动质量改进,是软件质量保证的主要手段之一。结合软件质量模型,可以在单元测试、集成测试、系统测试阶段对应进行测试和评估。

2.png


测试自动化趋势下 模糊测试有何优势?

在当前软件复杂度高、产品上市速度加快、测试任务繁重的情况下,提高软件测试的有效性、测试范围和执行速度的需求非常迫切,软件测试技术向自动化、智能化的方向发展。


智能模糊测试作为一项自动化动态检测新技术,已经是软件测试、漏洞挖掘领域内有效的手段之一。在测试中,开发测试人员无法穷举所有输入作为测试用例,也无法想到所有可能的异常场景,而模糊测试能依赖随机函数每秒自动生成大量相对随机测试用例,根据“大数定律”,足够多的测试用例和随机性,可以挖掘出隐藏很深、很难出现的bug。


与其他测试方法相比

软件测试的方法多种多样,从是否需要执行被测软件的角度,可分为静态测试和动态测试。


现在已有较多成熟的自动化静态测试工具,静态测试能在不执行代码的情况下检查代码或应用程序,但其最大问题是会出现大量误报,审查误报需要耗费一定的时间和精力。此外,静态测试往往只能匹配已知漏洞库查找已知缺陷/漏洞,无法发现未知漏洞,同时也无法发现一些运行时错误和问题,例如并发问题、内存泄漏、内存指针等问题。


目前市面上的自动化动态测试工具大多是黑盒测试工具(如安全测试),因其无法获得程序的执行路径信息,生成的测试用例随机性强,致使测试有效性和测试覆盖率都较低,测试效果并不理想。


2014年起,基于覆盖率引导的灰盒模糊测试技术,逐步成为测试技术的主流发展方向。智能模糊测试技术能高效地自动变异测试用例,实现全自动测试流程,它不依赖于已知漏洞规则,可查找多种类型的0day、1day漏洞,且误报率几乎为零。与静态测试和安全测试工具相比,智能模糊测试在诸多方面具有一定优势。

3.png


从实践经验出发  谈谈模糊测试如何保障软件质量

随着各学者和软件企业对模糊测试研究的深入,其应用范围也得以拓展,模糊测试可以对环境变量和参数、Web应用程序、文件格式、网络协议、Web浏览器、嵌入式和系统内核等进行测试。


在行业应用上,模糊测试可在金融、医疗、交通、教育、政府、信创、军工、汽车、工控等行业发挥重要作用,帮助这些行业的软件开发人员发现程序中的潜在漏洞,提高软件的安全性和稳定性。安般科技在深入各行业背景、有针对性地为目标行业打造标准化通用测试工具的过程中,更加深刻地意识到各行业对模糊测试的需求,并对如何更好地使用模糊测试保障软件质量总结了一定经验。


下面就汽车、金融和工控三个行业简单聊聊:

  • 汽车行业:汽车电子电气架构趋向集中化,软件定义汽车时代到来。汽车行业不但在Functional Safety和Security上面临新的挑战,面对更复杂的传感器、控制器和自动驾驶的需求,SOTIF(预期功能安全性)问题也愈发凸显。软件层面对已知与未知场景的安全测试需要大量的数据输入进行长时间测试,这正是模糊测试的优势所在。安般科技在内外协议模糊测试、操作系统模糊测试领域已初见成效,通过黑灰盒结合的方式,除了对传统白盒化模型系统进行合规测试外,也能对采用非白盒化模型的系统进行有效测试以减少非预期的安全问题。
  • 金融行业:金融行业系统代码普遍达到百万行级别,个别系统可达千万行,软件的复杂度越来越高,软件质量面临严峻挑战,金融机构纷纷推进质量内建。安般科技在为某券商提供的“质量门禁”解决方案中,将模糊测试作为一项门禁质量指标有效提升的技术手段融入到方案的测试平台中,全方位、高效地挖掘软件缺陷,为单元门禁、集成门禁和验收门禁的质量把控提供强力支撑。
  • 工控行业:工业控制联网体系架构包含工厂级、车间级和现场级,多数工控设备更重视设备功能、性能,安全性设计考虑缺失,特别是车间级和现场级协议使用私有协议未经大量验证,可能存在致命漏洞。协议模糊测试基于协议规则去自动生成各类用例,然后对真实设备进行测试直至发现漏洞,并能对漏洞进行复现,方便问题定位和修复。而且, 安般科技将数字仿真与模糊测试结合,可以极大地发挥工控领域的线束优势。


模糊测试对软件质量的保障水平还取决于模糊测试的性能。为提升模糊测试检测能力,学界和业界普遍从变异策略或变异方法、状态引导机制、种子筛选机制、能量调度机制和漏洞捕获机制等方面着手,以提高代码覆盖率、触发Bug或Crash的数量和格式检查通过率等指标。比如安般科技自研引擎ABFast主要通过cmplog插桩方案、局部路径引导机制、调整变异策略和智能调度策略等方式提升性能。


近几年,模糊测试进入高速发展时代,各大企业纷纷采取模糊测试发现隐藏的安全风险。模糊测试的独特优势预示着它将引领软件安全新的范式革命,相信随着模糊测试技术的发展和各领域应用经验的增长,模糊测试会成为企业保障软件质量的最重要手段。


参考资料:

[1]http://www.xinhuanet.com/world/2019-11/07/c_1125203998.htm

[2]https://new.qq.com/rain/a/20220322A07NUN00