静态分析,或静态应用安全测试(SAST),工具是在开发过程的最早阶段发现代码库中的缺陷的有力方法。然而,用于执行该测试的工具是钝器。
SAST工具提供了大量的数据,这些数据是直出工具的。我把它看作是SOOT。
这些发现需要进行审计或审查。而且经常需要一个人进行手动分流。即使他们是善意的,人类也无法跟上,他们往往会被淹没。
来自SAST的SOOT数据的问题
由于它提供了大量的信息,工程师最终只是错过了静态分析工具发现的一些最重要的漏洞,因为这些缺陷隐藏在所有的噪音(或SOOT)中。
没有任何额外的过程,开发人员得到了一堆静态分析结果,但他们不知道该把注意力集中在哪里。发现的违规行为数量如此之多,以至于感觉忽略这些问题和修复这些问题一样有用。
当筛选这种SOOT数据时,你会试图找到有意义的信息——可以处理和提炼的“钻石”。但这只占你数据的10%左右。当你试图减少噪声量时,麻烦就来了,也就是所谓的假阳性率。为了消除假读数,你需要一个工具,你可以很容易地针对你的特定环境进行调整和配置,同时降低对人类智能和监督的依赖。
误报的发生有多种原因。要了解更多有关误报及其可能造成的混乱,请阅读静态代码分析中的误报。
掌握 SAST 行业工具
所有的SAST工具都是从你选择正确的检查器集和配置开始的,以便正确地与各种代码库(包括遗留代码)一起工作,同时为缺陷分配违规严重性和分类。
正确的设置是基于安全准则、可能的法规,以及诸如你在现场遇到的问题或预期可能发生的问题。然后配置考虑你的框架、上下文、遗留代码等,有助于产生更有用的结果。这些检查器通常有一个基本的默认严重性,用于简单化的优先级。
通过你的本地代码、构建、编码风格和框架的上下文,你可以自定义系统中的规则和配置,以定义静态分析工具将汇报的值和阈值。Parasoft 通过使用风险模型来完善你应该关注的领域。
使用风险模型
风险模型提供了一种客观的方法来帮助确定代码缺陷的可利用性、弱点、普遍性和可检测性的影响。而且还可以判断它可能对应用产生什么样的影响。其结果是在更大的范围内,确保优先处理那些容易发现和利用的漏洞。通过将严重性和风险模型结合起来,Parasoft工具可以准确地确定问题会有多严重,同时在开箱即提供建议的行动。
通过Parasoft静态代码分析工具,你可以得到一个解决方案,它可以挖掘出堆积如山的静态分析结果,为你提供可以采取行动的希望“钻石”大小的珠宝。通过在相关风险的背景下考虑严重性的概念,Parasoft工具可以应用来自行业标准安全模型(如CERT、CWE或OWASP)的数据,并将它们直接带入报告和分析仪表板。
通过考虑多种风险模型,我们能够将上下文注入到你的静态分析结果中,让你专注于大“钻石”,而无需手动过滤掉所有烟尘,也无需担心你可能错过的东西(假否定值)。
利用AI和ML识别最重要的违规行为
通过利用人工智能(AI)和机器学习(ML)技术,Parasoft静态分析工具可以识别出所有发现的违规行为之间的热点和交叉点,这样你就可以将精力集中在代码库中作为许多其他问题的根本原因的部分。更好的是,ML可以监控并学习你自己的开发团队的行为,以区分哪些是重要的,哪些是不重要的。
根据开发团队的历史行为来训练你的AI模型,对发现的问题进行多维度分析,而ML则对数据进行聚类,以识别相关的、相关的或类似的违规行为。将这两种技术结合起来,你会得到更好的东西。它可以学习忽略哪些假阳性结果,突出哪些真阳性结果,从而将这堆积如山的信息缩减为几颗极具价值的“钻石”。
例如,静态分析可以在一个典型的代码库中揭示成千上万的违规行为,虽然你可能能够识别出数百个缺陷来处理,但你无法在你的时间内修复所有的缺陷。通过AI和ML查找违规热点,你可以通过识别导致所有缺陷的单段代码同时修复多个缺陷。
让SAST培训变得轻松愉快
培训人们使用静态分析工具常常被看做是一个问题。需要对特定的编程语言有深刻的理解,才能获得最大的收益。这就是为什么Parasoft静态分析解决方案内置了集成的培训、教育和认证计划,以使你的开发人员快速上手,这样他们就可以最大限度地减少报告的误报数量,并将精力集中在重要的工作上,即编写代码而不是筛选警告。
通过减少不相关结果的数量,该工具的采用率将提高。这只是一个培训你的团队的问题,他们将获得他们所需的信息,而无需做任何挖掘。如果你给开发人员三件明显是高优先级和真实的事情来修复,你得到的采纳率会比给他们300个违规行为而只有30个值得解决的缺陷要好得多。而且如果他们的手干净利落,他们会很乐意一次又一次地使用这个工具。而不是上面要求的烦人过程,而是一个值得信赖的顾问和工具。
结语
无论你的静态分析有多少自动化,总是会有人工分流的元素。问题是,在你发现任何有价值的东西之前,你必须深入多深。但是,通过包含风险元数据并配备AI和ML的工具,使发现和修复缺陷的效率大大提高,你可以在软件开发生命周期的开始阶段快速处理违规行为,以构建安全可靠的软件。