电话

15169028800

安全开发进阶(3)Fuzzing技术应用

标签: 技术开发 2023-04-17 

  为大家概述了典型开发模式演进和DevSecOps模型中安全工具链的相关内容,让我们对安全开发有了基础认知。而在构建更全面、高效的DevSecOps体系中,模糊测试扮演着无可替代的角色,本文我们将重点为大家分享在DevSecOps体系构建中,Fuzzing技术起到了哪些关键作用及优势所在。

  漏洞是计算机系统中的一种弱点,可能被黑客或恶意软件利用,从而导致系统崩溃、数据泄露、信息泄露等问题。从漏洞披露的角度来讲,漏洞可以分为两种类型:已知漏洞和未知漏洞。

  ① 已知漏洞指已经被公开披露、被广泛知晓或已经被证实存在的漏洞。已知漏洞的存在和特征已被发布在漏洞信息库或安全公告中,并且攻击者可以利用这些信息来攻击系统或应用程序,这种攻击被称为已知攻击(known attacks)。同样,由于漏洞信息已被公开,已知漏洞也更易于检测和预防。

  ② 未知漏洞指尚未被公开披露或广泛知晓的漏洞,因此缺乏已知漏洞的特征和漏洞信息。通常情况下,发现和利用未知漏洞需要更高级别的技术和资源。攻击者可以利用未知漏洞来发起零日攻击(zero-day attacks),这种攻击具有更高的威胁性,因为系统或应用程序难以防御这种攻击,尤其是在攻击被发现之前。

  在现实生活中,大多数严重的安全事件都是由未知0day漏洞引起。比如2017年的WannaCry勒索软件攻击事件,攻击者利用Windows操作系统中的0day漏洞进行传播,进而影响了全球超过200,000台计算机,包括医疗机构、政府机构和企业;2020年的SolarWinds供应链攻击事件,攻击者通过篡改SolarWinds Orion软件的更新机制,成功地将恶意软件注入到了数以千计的客户端系统中。该攻击涉及到多个0day漏洞,并导致了一系列的数据泄露和安全问题。这些都是利用漏洞造成的攻击事件。由此可见,提升对未知漏洞的防范能力尤为重要。

  在开发安全实践中,由于AST类测试技术和SCA技术都需要先了解已知的漏洞模式和漏洞类型才能进行检测,所以只能发现已知的安全缺陷。相比之下,智能模糊测试可以识别出与应用程序相关的重要数据结构和算法,并依托深度学习和人工智能技术针对性地生成亿万级测试用例,进而有效地检测已知漏洞和未知缺陷。

  因此,将智能模糊测技术融入到DevSecOps体系中能够弥补AST和SCA技术在未知漏洞挖掘方面的能力缺失,全面提升程序的安全性。

  据Gartner对DevSecOps的研究报告显示,实施DevSecOps的第一要素是:“安全测试工具和安全控制过程能够很好地适应开发人员,而不是背道而驰”。安全团队想要将安全测试或安全控制成功地融入在DevOps中的前提是:不要试图改变程序员和测试人员的工作惯性,也不要去增加他们额外的工作负担。否则将破坏DevOps的协作性和敏捷性,最终无法落地。

  然而在实际应用中,许多开发安全工具比如SCA、SAST都因为误报或者漏洞可达性的问题,研发人员需要人工清除误报或者验证漏洞可达性,使正常的研发效能受到较大影响。相比之下,智能模糊测试采用动态分析技术,通过对动态运行的程序输入海量的非预期测试数据,从而检测安全缺陷,这种动态分析的方法确保所有检出缺陷均可完整复现,误报率几乎为零。

  基于这一技术特点,为帮助研发团队区分误报与真实缺陷,定向模糊测试技术成为解题的关键。该技术的测试用例生成方式与常规模糊测试有所差别,它的测试用例生成主要基于某些预定的标准或规则生成,因此定向模糊测试可快速针对程序的特定区域,进行快速检测。定向模糊测试还可以与其他技术(如符号执行或约束求解)结合使用,并进一步提高其有效性。在实践中,通过将定向模糊测试融入在DevSecOps流程中,可基于SAST与SCA的分析结果,对有风险的代码片段、或程序区域进行定向模糊测试,从而为研发团队提供精准的漏洞信息。真正意义上做到在不影响研发效能的基础上,融入安全能力。

  在实践中,大多DevSecOps工具链通过SAST、SCA、IAST与DAST的的工具组合来进行全流程的研发安全管控。但该工具体系在使用场景上存在一定的局限性。

  首先,IAST工具主要在虚拟机层面进行插桩,因此只能对Java、Python和Node.js等有虚拟运行时环境的语言进行测试。然而对于C、C++这类没有虚拟运行时环境的语言,IAST工具就会遇到瓶颈。相比之下,灰盒模糊测试的监控粒度会更细,不仅可以对虚拟机进行监控,还可以对堆栈层级的信息进行监控。这使得Fuzzing摆脱了语言种类的限制,成为了一种较为全能的检测方式。

  同样,DAST工具的使用场景大多局限于Web应用和移动应用的上线前检测。而黑盒模糊测试的应用场景则更加广泛。除应Web应用和移动应用外,还可应用于嵌入式系统、操作系统、数据库、网络协议、API等场景的安全测试。比如对Linux操作系统的TCP/IP协议、HTTP协议、FTP协议等进行测试,再或者对智能网联汽车的WiFi、蓝牙等协议模块进行测试等。

  因此,为让安全左移理念在更多的场景得以落地,实现上线前的程序研发安全闭环,模糊测试做到了真正意义上的全场景支持,在DevSecOps体系中扮演着无可替代的角色。

  模糊测试技术因其技术特性,在软件开发过程中发挥着至关重要的作用,重新定义了软件开发的范式。云起无垠作为新一代智能模糊测试领跑者、软件供应链安全创新者,成立以来,以模糊测试技术作为底层技术,结合AI技术构建了以新一代智能模糊测试技术为基座的代码安全产品,在软件开发中贯穿开发、测试、部署、运维等阶段,帮助企业在开发阶段更早地发现未知安全威胁,更早地形成安全防线。

  未来,云起无垠将继续专注于技术研究和产品打磨,不断完善产品矩阵,为客户提供更完善的产品服务,为企业的安全赋能!