静态应用程序安全测试:SAST基础

         在过去的15年中,静态应用程序安全测试(SAST)一直是应用程序安全性工作的核心部分。考虑到Forrester近期的2020年应用程序安全状况报告预测,应用程序漏洞将一直是最常见的外部攻击方法,可以肯定地说,SAST将在可预见的未来使用。 

        根据Forrester报告,针对安全专业人员的一项调查显示,2019年的大多数外部攻击是通过利用软件漏洞(42%)或通过Web应用程序(35%)进行的。SAST已成为应用程序安全测试工具的代名词,但是,如果我们真的想确保我们的软件产品受到保护,那么了解我们使用的工具如何工作以及如何最大程度地发挥其价值就很重要。 

        像任何技术一样,特别是在安全性方面,SAST有其优缺点。它使组织能够检测到潜在的漏洞,但也会减慢开发速度。因此,重要的是要了解SAST的工作原理,优点和缺点以及如何进行改进。 

什么是SAST?

        静态应用程序安全性测试(SAST)是尚在使用中的最成熟的应用程序安全性测试方法之一,是白盒测试——当组件处于静止状态时,从内而外分析源代码。Gartner对SAST的定义是“一组技术——为了指示安全漏洞的编码和设计条件,而分析应用程序源代码,字节码和二进制文件。”

SAST如何运作?

        顾名思义,SAST可以扫描静态代码并测试静态代码,而无需运行它。SAST通常在开发的编码和测试阶段实施,并集成到CI服务器,或者更近一些,集成到IDE中。SAST扫描组织的内部代码和设计,以检测表明可能导致安全漏洞的弱点的缺陷。  

        SAST扫描基于一组预定规则,这些规则定义了源代码中需要解决和评估的编码错误。可以设计SAST扫描来识别其中一些最常见的安全漏洞,例如SQL注入,输入验证,堆栈缓冲区溢出等。 

SAST的利与弊

        让我们从好消息开始。SAST是一个最佳的应用程序安全工具,如果操作正确,对于组织的AppSec战略至关重要。将SAST集成到SDLC中可以帮助改善组织的安全性。以下是静态应用程序安全性测试的主要优点。 

优点

#1提前考虑安全性

        将安全测试集成到软件开发的早期阶段是一种重要的实践。SAST帮助安全性测试提前进行,在设计阶段比较容易解决的时候检测专有代码中的漏洞。在此阶段发现和修复安全问题,可以为组织节省在临近发布日期,或更差的情况,在发布后,大代价的努力。 

#2确保安全编码

        SAST可以轻松检测出由于相当简单的编码错误而导致的缺陷,从而帮助开发团队确保其遵守安全的编码标准和最佳实践。 

#3常见漏洞检测

        自动化的SAST工具可以高度自信地轻松检测常见的安全漏洞,例如缓冲区溢出,SQL注入,跨站点脚本编写等。

缺点

        不幸的是,尽管SAST是已经使用了15年的非常成熟的技术,但它仍然有其缺点。以下是SAST的一些主要缺点:

#1不能涵盖所有漏洞

       在预生产源代码中很难自动检测出诸如身份验证,访问控制和加密之类的问题。显然,SAST也无法涵盖运行时问题或配置问题,需要组织实施其他安全测试工具。 

        SAST也不涵盖开源漏洞。由于当今的应用程序由60%-80%的开源组件组成,因此这使得相当一部分代码未经测试,需要SCA工具。 

#2误报率很高

        SAST的结果包括大量误报,使开发和安全团队付出了很多时间和精力,来清除错误警报以查找实际问题。考虑到竞争性的发展步伐和补救关键问题所花费的时间,处理误报给发展带来很大压力。 

#3耗时

        尽管自动SAST可以连续扫描,但是对于大型代码库,一次扫描可能要花费几个小时。此外,一旦提供结果,就需要进行分析。SAST只能指出潜在的漏洞,还要让开发人员来验证这些可疑的漏洞确实是安全隐患

如何为您的组织选择正确的SAST工具

        AST市场上充斥着SAST产品,这些产品通常与其他解决方案捆绑在一起,这使得寻找适合您的组织的SAST工具成为挑战。 

        OWASP的名单标准(用于选择正确的SAST工具)可以帮助公司缩小选择范围,并选择最能帮助他们改善AppSec战略的解决方案: 

语言支持:最重要的考虑因素是您的组织使用哪种语言。确保您使用的SAST工具完全覆盖了这些语言。  

漏洞涵盖:确保您的SAST工具至少涵盖 OWASP的十大 Web应用程序安全漏洞。 

准确性:因为准确性对于SAST来说是一个薄弱点,并且总是会出现误报和漏报,所以重要的是检查组织正在考虑的SAST工具的准确性。 

兼容性:与任何自动化工具一样,重要的是,您所使用的SAST工具受您已经使用的框架的支持,以便可以轻松地集成到SDLC中。 

IDE集成:可以集成到IDE中的SAST工具将为您节省宝贵的修复资源。 

易于集成:找到易于设置的SAST工具,并将其与 DevOps流水线中的其余工具尽可能无缝地集成。 

可扩展性:请确保您今天集成的SAST工具可以扩展,以支持明天更多开发人员和项目。一个SAST工具看似可以在一个小的示例项目中快速扫描;确保在较大的项目上能获得类似的结果。 

        规模扩大还会影响解决方案的成本。OWASP的列表指出,重要的是要考虑每个用户,每个组织,每个应用程序或所分析的每行代码的成本是否有所不同。 

SAST:您的应用程序安全之旅中的重要组成部分

        确保应用程序开发中的安全性通常需要进行价值权衡。这也适用于SAST。当涉及到组织的静态代码库的覆盖范围和可见性时,它提供了很高的价值。它还在
SDLC(software development lifecycle软件开发声明周期)中早期集成,使组织可以提前考虑安全性。 

        不幸的是,大量的误报和进一步分析SAST结果的需求都是敏捷性的主要障碍。当今的软件开发团队面临着许多挑战。随着软件开发周期越来越短,攻击应用层的风险不断增加,开发团队努力将安全性和速度结合在一起。 

        集成SAST要求组织努力在覆盖所有安全漏洞和最小化风险之间,以及在以具有竞争力的速度交付高质量产品之间,找到合适的平衡。