有两种主要的方法来分析Web应用程序的安全性:动态程序分析(动态应用程序安全性测试– DAST)(也称为黑盒测试)和静态代码分析(静态应用程序安全性测试– SAST)(也称为白色)盒测试。两种方法都有其优点和缺点,并且不能将一种视为替代。因此,我们建议您同时使用两种技术来加强您的Web应用程序。但是,如果您的资源有限并且不能同时负担这两者,那么动态程序分析通常被认为是更好的解决方案。

静态代码分析

静态代码分析器将扫描Web应用程序的源代码,并将它们用作代码检查过程的一部分。它们不考虑操作环境,Web服务器或数据库内容。另一方面,静态分析工具具有对代码的完全访问权限,因此它们涵盖了隐藏/未链接的代码片段(例如,正在开发但尚未使用的新代码),并且它们可以查明确切的代码行。它们还一次涵盖了所有可能的执行路径。

例如,如果您使用静态代码分析解决方案来分析 SQL注入,该工具将在源代码中扫描查询数据库的所有功能。然后,它将分析这些功能是否安全地访问数据库。如果不是,它将提供错误的确切位置,例如,开发人员直接在查询中使用用户输入的位置。另一方面,如果您想测试Web应用程序的弱密码,则静态分析器将毫无用处。它还将无法解决由Apache错误配置或与数据流相关的问题所引起的安全问题。

静态代码分析工具的另一个主要缺点是它们完全依赖于编程语言。如果为您的业务选择源代码分析工具,然后决定以其他语言编写某些应用程序,则可能必须购买其他SAST工具。尽管市场上有几种多语言工具,但它们主要集中在PHP,Java和JavaScript。它们中很少有同时包含多种异国语言的,例如Python,Objective-C,Scala,Swift,ColdFusion或遗留语言(如COBOL)。

动态程序分析

在动态分析的情况下,该工具根本不需要访问源代码。 DAST工具可以模拟最终用户,并且可以访问与最终用户完全相同的资源。它使用HTTP请求,链接,表单等分析运行时Web应用程序的安全性。这意味着DAST工具完全独立于您的应用程序使用的编程语言,并且仅需要支持客户端技术。但是,它只能分析用户可访问的零件。

例如,当您使用动态分析在Web应用程序中扫描SQL注入时,该工具的行为类似于自动渗透测试仪。它以Web形式输入数据并创建格式错误的请求以尝试利用您的应用程序。成功后,它将向您展示它是如何完成的。缺点是它无法显示出导致安全漏洞的确切代码行,因此开发人员可能需要更多时间来查找错误。如果动态分析工具不是使用高效技术构建的,则可能需要花费很多时间才能工作,因为它需要分析多个执行路径。一般而言,它也不会以任何方式帮助您提高编码标准和代码质量。

误报的噩梦

领先的动态分析工具设法找到了大大减少其误报的方法。不幸的是,静态代码分析工具仍然存在此问题。一些领先的SAST工具指出,其误报率约为5%。与最好的DAST工具相比,这是非常高的比率。

从表面上看,误报似乎并不像头疼。但是,它们引入了两个大问题。首先,误报的分析比实际错误的分析需要更多的开发团队时间。这是因为开发人员必须找到方法来证明代码是安全的,并且必须承担决定使用该工具的责任。因此,一些开发人员甚至为了避免误报而求助于更改其代码。在进行此类更改之后,代码可能变得效率降低或可读性降低。

第二个主要问题是,报告大量误报的工具会使该工具的用户对它失去信任。随着时间的流逝,用户开始忽略漏洞警告,或者只是完全停止使用有故障的扫描仪。

软件开发生命周期中的分析

过去,静态分析器被用作软件开发生命周期(SDLC)的一部分而受到赞誉。这样,他们将能够比动态分析工具更早地发现安全漏洞。但是,由于可以将它们与CI / CD工具轻松集成,因此现在可以在完全相同的阶段使用先进的动态分析仪。

如果要进行彻底的安全性分析,则DevOps可以设计CI / CD流程,以便首先使用静态分析器扫描适用的源代码(以支持的语言),然后进行编译,然后使用动态分析器进行扫描(对于所有语言)。这种方法保证了最高的软件质量,并且由于进行了增量扫描而花费很少的时间。在SDLC中使用静态分析还可以发现尚未链接到主应用程序的代码段中的错误。

该工具适用于谁?

在选择要使用SAST扫描仪还是DAST扫描仪时要考虑的另一个方面是:您想使用谁?静态分析器是主要用于开发人员和质量检查/测试人员的工具。开发人员可以检查其代码是否安全,而质量检查/测试人员可以对其进行仔细检查。当然,在两种情况下,都可以通过将其包含在SDLC中来实现自动化。

手动动态分析仪通常是专用于渗透测试人员的工具:它们可帮助他们对应用程序进行黑盒攻击。但是,企业级DAST漏洞扫描程序不再是开发人员或渗透测试人员的工具。它们专为自动化和集成而设计,因此不能手动使用。这样的工具具有很大的优势:它们减少了安全团队的工作量。

如果你们不能两者兼得

如果您不想为所有语言都购买SAST工具,而决定只购买DAST工具,则可以考虑其他选择。企业级动态扫描器采用了其他机制,这些机制不完全是静态代码分析,而是使您更接近它。该技术通常称为交互式应用程序安全性测试(IAST)或灰盒测试。例如,Acunetix使用 AcuSensor 拦截对源代码或字节码的调用(取决于语言)的技术。这使它可以访问隐藏功能,并提供有关漏洞在源代码中的位置的更多详细信息。

资源: //www.acunetix.com/blog/