📜  自动化安全代码审查

📅  最后修改于: 2021-08-27 04:34:33             🧑  作者: Mango

静态应用程序安全测试(SAST)会检查应用程序的源代码,以识别可能使应用程序容易受到破坏的安全漏洞。它被认为是白盒测试。 SAST工具发现了应用程序中的安全漏洞(存在许多误报),但它只是作为网络安全分析人员的一种帮助,可以帮助他们在安全相关的代码领域中归零,以便他们可以更高效地发现漏洞。

如何通过可用的SAST工具执行代码审查评估?
在这里,我们将学习如何审查由安全评估工具生成的报告,以进行代码审查。不同工具的报告格式相似,我们将讨论评估时要考虑的一些主要因素。

由于代码,设计或配置不安全,应用程序中可能存在漏洞。可以在代码上进行自动安全分析,以通过以下两个选项之一来识别漏洞:

  • 基于模式搜索的静态代码扫描器脚本(内部和开源)。
  • 静态代码分析器(商业和开源)。

SAST工具如何工作?
SAST工具在不尝试执行代码的情况下检查代码。它们是Descopes策略不可或缺的一部分,因此进行了大量研究和POC来确定组织的合适工具。

SAST工具的优点:

  • 减少分析师的手动分析工作。
  • 有效,高效地识别特定漏洞的所有实例。
  • 精心制作的自动报告格式。

SAST工具的缺点:

  • 业务逻辑缺陷仍然未被发现。
  • 在应用程序中实现的针对其功能和设计的安全控制通常是未被检测到的。
  • 检测到大量误报。

因此,希望通过在构建结束时运行SAST工具来完全自动化安全代码检查的任何人都会感到失望,因为安全分析人员仍然需要大量的人工干预。

尽管所有工具几乎都具有相似的功能,但您应该了解并使用任何一种工具,并且能够使用任何SAST工具。您始终可以在网站上找到有关如何使用特定工具的指南。

要重点分析从SAST工具生成的报告吗?

  • 关注发现的漏洞和报告的实例数量。报告中始终提供漏洞详细信息,缓解措施和参考,以使您更好地理解。
  • 始终查看漏洞图,以了解什么是漏洞的源(漏洞的入口点)和漏洞(漏洞的执行点),以便更好地理解。
    例如:如果我们报告了文本框的输入验证问题,则需要查看在何处输入值以及在何处执行输入的值。我们需要检查此参数允许使用哪些值,以及是否已进行验证。如果缺少验证,我们将检查此值是否可以作为跨站点脚本有效负载执行,还是将其存储在数据库中并可以用作SQL注入有效负载(可能有更多与之相关的场景)。被标记为假阳性或真阳性
  • 确定漏洞后,根据CVSS分配严重性。自动化工具提供的严重性通常是不正确的,应由安全分析人员进行审查。与开发人员共享报告的漏洞,建议采取缓解措施。

通常,自动化工具会生成许多错误肯定的报告,因此对于安全分析师来说,仔细检查所报告的漏洞的每个实例并进行验证非常重要。由于误报的数量很高,因此始终需要安全分析人员的干预才能完善报告并与开发人员共享真正的肯定。

这是一些可用于安全代码审查评估的流行SAST工具的列表:

Commercial Open-Source
Fortify Static Code Analyzer Reshift Security
Checkmarx CxSAST Brakeman
Coverity Scan Findbugs
Veracode JsHint
AppScan CodeWarrior