SAST、DAST 和 IAST 有什么区别?

SAST有什么好处?SAST 和 DAST 有什么区别?这些话是什么意思?!

SAST有什么好处?SAST 和 DAST 有什么区别?什么是 IAST?这些话是什么意思?!让我们在应用程序安全测试 (AST) 的主要类型概述中讨论这个以及更多内容。

信息安全

在我们开始解读这些术语之前,让我们弄清楚为什么我们需要安全测试。在现代世界中,软件几乎无处不在地集成到自动化流程中,应用程序中的代码行数正在增加。结果,可能的漏洞和错误的数量也在增加。这就需要对源代码进行有效的检查和测试。

根据Positive Technologies在 2019 年进行的研究,所有检测到的漏洞中有 82% 是由代码编写阶段的错误引起的。专家们得出的结论是,平均而言,每隔一个系统就会出现一个具有高风险的安全缺陷。这个问题的主要原因之一是在编写阶段缺乏对漏洞的代码检查。此外,不太明显的因素之一是开发人员不太关注安全性。他们更关注应用程序的功能。

然而,漏洞数量的增加以及攻击者利用这些漏洞的可能性迫使应用安全市场快速发展。Grand View Research的一项研究结果很好地证明了这一事实:

图 1. 按最终用途划分的美国应用安全市场,2014-2025 年(百万美元)

有一种观点认为,并非所有漏洞都具有潜在危险。其中一些可能在源代码中存在多年,并且永远不会导致任何坏事。为了设置修复漏洞的优先级,开发人员依赖 CVSS(通用漏洞评分系统)标准,但是:

  • 它对各个发展领域并不普遍;
  • 一些 络安全专家认为这个系统已经过时,因此很危险。
  • 是的,我们可以说代码测试的质量多年来一直在提高。这是因为还开发了各种为测试代码而设计的工具。旧的漏洞被修复,但新的漏洞出现了。此外,攻击者还开发了检测错误代码和漏洞的工具和方法,以便进一步利用它们。

    他们还提出了攻击代码的新方法。我将离开文章的主题,告诉你一个有趣的例子。2021 年 11 月,剑桥大学研究小组公布了对新木马源攻击的分析结果。这种攻击可能会在代码编写阶段污染软件。Trojan Source 攻击基于在代码注释中插入的特殊 Unicode 字符。这些字符改变双向文本的显示方式。当在注释中插入此类控制字符时,文本的某些部分将从左到右显示,而其他部分则从右到左显示。因此,如果攻击者将具有不同文本方向的字符串组合在一个字符串中,则从右到左显示的文本片段可能会与现有的从左到右文本重叠。

    此方法允许攻击者向代码中添加恶意构造,并使带有此构造的文本对任何查看代码的人都不可见。为此,攻击者将希伯来语/阿拉伯语中的字符插入评论或文字内部。结果,完全不同的字符与恶意插入重叠。这样的代码将在语义上保持正确,但会以不同的方式解释和呈现。您可以在文章中阅读更多相关信息:“用于引入隐形漏洞的木马源攻击”。

    受污染的代码可能会导致严重损失——从个人数据泄露到卫星直接坠落到决定不对代码进行漏洞测试的开发人员的房子上。

    重要的是要了解,安全问题不仅会给公司带来财务损失,还会带来声誉损失。如果有一种不打扰并“顺其自然”解决问题的诱惑,那么我强烈建议阅读有关克莱斯勒吉普切诺基的文章,它在驾驶时被黑客入侵。

    如果您想阅读其他有关信息安全的研究论文,可以阅读Gartner 魔力象限 告。

    AST

    现在让我们回到我们的条款。作为对永无止境的威胁和不断增长的代码库的响应,开发人员使用AST(应用程序安全测试)工具。AST 是通过识别源代码中的漏洞来增强应用程序安全性的过程。最初,这种测试是手动的。但是,代码行数的增加和使用第三方开源代码(也需要检查)导致需要自动化流程。

    测试工具的使用是DevSecOps概念的重要组成部分。现在让我们更详细地检查它。在 Transparency Market Research 的 告“应用安全测试市场 — 2017-2025 年全球行业分析、规模、份额、增长、趋势和预测”中,应用安全测试市场分为以下产品类别:

  • 静态应用程序安全测试 (SAST)
  • 动态应用程序安全测试 (DAST)
  • 交互式应用程序安全测试 (IAST)
  • 国科大

    SAST 的主要目的是最小化开发和安全之间的差距。很久以前,在SAST技术刚刚起步的时候,使用SAST的过程是这样的:

  • 安全专家测试了代码的漏洞。然后他们将初步扫描的结果传递给开发人员以修复代码;
  • 在收到“安全人员”的结果后,开发人员处理了大量不明确的结果和误 ,这些结果经常出现在 SDLS(软件开发生命周期)的后期阶段。
  • 幸运的是,现代 SAST 技术大大简化了这个过程,并允许开发人员测试代码。

    SAST 理所当然地被认为是在应用程序源代码中查找漏洞的主要选项之一。在代码编写阶段执行静态分析。这使开发人员可以在产品开发的早期阶段发现错误和漏洞,并降低消除它们的成本。此外,SAST 适用于大多数编程语言。

    SAST 的其他优点包括:

  • 在 IDE 中将静态分析集成到开发过程中的能力
  • 检测关键漏洞,例如缓冲区溢出、SQL 注入、跨站点脚本 (XSS) 等
  • 最酷的是——指示可疑代码片段的确切位置。这对于具有数百、数千和数百万行代码的大型项目尤其重要。
  • 然而,SAST 并不全是玫瑰——它有它的缺点。主要问题之一是大量误 。因此,检查这些结果可能需要很长时间。静态分析器的开发人员密切关注误 并提出解决方案来消除它们。

    源代码中的潜在漏洞可能会导致严重的安全风险。使用 SAST 工具可以降低这些风险并帮助控制开发质量。

    世界市场上有许多不同的分析仪——既有来自安全领域的知名供应商,也有来自仅从事 SAST 开发的利基参与者:

  • 校验码
  • PVS-工作室
  • 微焦点
  • 新思科技
  • 验证码
  • 和别的
  • 我没有暗示任何东西,但您可以评估PVS-Studio分析器并将其与其他 SAST 工具进行比较。

    DAST

    上一节描述了静态测试,这一节将描述动态测试。DAST(动态应用程序安全测试)是测试应用程序的另一个过程。DAST 模仿利用常见漏洞的恶意外部攻击。

    DAST 的主要任务是在漏洞被开发人员以外的其他人发现之前检测它们。此类工具通过检查接入点和模拟用户体验来寻找问题区域。动态测试允许开发人员识别由各种代码注入查询(例如 页)或与错误配置相关的漏洞(最简单的例子是使用空密码进行身份验证)。

    SAST 和 DAST 有什么区别?无法访问源代码。

    让我告诉你DAST的优点:

  • 与 SAST 不同,它允许开发人员在运行时检测问题。这些可能是身份验证和 络配置缺陷,或仅在登录后出现的问题。
  • 查找用户使用应用程序时发生的错误
  • 允许开发人员测试应用程序并识别常规测试未发现的缺陷
  • DAST 与编程语言无关。
  • 最初,DAST 工具的使用频率低于静态分析。但由于对安全性的需求不断增加和智能手机普及的高动态,其中与机密信息相关的应用越来越多,DAST 解决方案的份额显着增加并持续增长。IndustryARC 进行了一项名为“动态应用安全测试市场 – 预测(2020-2025) ”的研究。据其称,DAST 解决方案市场平均每年增长 17.4%。

    根据 IndustryARC 的数据,该领域的主要公司是:

  • 白帽安全
  • 新思科技
  • 验证码
  • IBM
  • 埃森哲
  • Pradeo 安全解决方案
  • 信波控股
  • 和别的
  • SAST 对比DAST

    您如何看待,这些 AST 类型中哪种最常见?如果你说 SAST 显然更常见,那你就错了。但是,如果你说 DAST,那你又错了。

    根据Grand View Research的全球市场上按销售份额分布的分析仪类型的数据,SAST 和 DAST 的份额几乎相等。

    为什么这两种 AST 最常见?首先,它们存在的时间比其他的长,许多最初的缺点已经得到解决,大多数专家都自信地与它们合作。

    我们可以说这两个工具是一样的吗?不。

    为了提高源代码和整个产品的安全性,开发人员同时使用 SAST 和 DAST,因为这两种方法可以抵消彼此的弱点:

  • DAST 使用不同的输入数据集,这使得识别它们的不正确/不安全处理成为可能。
  • SAST 擅长检测源代码中的错误,但会发出大量误 。
  • DAST 技术不允许开发人员将编码错误标记到代码的行 。
  • SAST 易于集成到项目工作和自动化流程中。这有助于消除与测试代码库的安全性相关的一些问题。
  • DAST 理解函数调用和参数。
  • SAST 可以处理函数调用和参数,但只能部分处理。
  • 最重要的是要记住,对开发人员来说重要的不是 告的数量,而是发现的漏洞的检查和修复。

    IAST

    所以,现在我们知道什么是 SAST 和 DAST。但什么是 IAST?IAST(交互式应用程序安全测试)是一种相对较新(与 SAST 和 DAST 相比)的应用程序测试类型,它专注于检测应用程序代码中的安全问题。交互式测试技术使我们能够在应用程序运行期间从内部分析应用程序。

    简单来说:

  • SAST 可以在不运行应用程序的情况下处理代码。
  • DAST 可以与正在运行的应用程序一起工作,但无需访问代码。
  • IAST 使用功能应用程序中的代码。
  • IAST 监控代码执行并寻找可能导致漏洞的特定事件。接下来,分析这些事件以检查它们是否一切正常,以及是否有任何错误出现。

    IAST 是作为一种现代解决方案开发的,通过结合测试方法来消除 SAST 和 DAST 的缺点。交互式测试技术通过分析流量和应用程序执行流程来提供安全问题的实时检测。

    由于 IAST 在应用程序中工作,它可以分析:

  • 应用代码
  • 数据流
  • 配置
  • HTTP 请求和响应
  • 库、框架和其他组件
  • 有关内部连接的信息
  • 访问所有这些信息允许 IAST 机制覆盖更多代码,提供更准确的结果并检查比 SAST 或 DAST 更广泛的安全规则集。

    此外,IAST 非常准确,可以检测到更多现有漏洞。为清楚起见,我将举一个使用OWASP 基准覆盖率的示例:

  • 一些 IAST 工具实现了 100% 的覆盖率而没有误 。
  • SAST 仅提供部分检测(不超过 OWASP 基准的 80%)并发出大量误 。
  • DAST 工具提供的检测水平较低——约为 OWASP 基准的 10-15%。
  • 尽管比 SAST 和 DAST 具有一定的优势,但交互式安全测试也有缺点。

    它的主要缺点之一是 IAST 工具可能会减慢应用程序的速度。事实上,代理充当附加工具,这会导致代码性能下降。

    准备允许您实现高代码覆盖率的输入数据和工作场景也非常困难。因此,理论上,IAST 可以让您覆盖 100% 的代码,但实际上这可能是一项艰巨的劳动密集型工作。SAST 看起来更有吸引力,因为这些工具会分析程序的所有分支,而不管它们执行的可能性如何。

    结论

    应用程序安全测试是 DevSecOps 概念中的关键部分,在现代开发世界中我们不能忽视它。我们必须使用 AST 检查源代码的漏洞、安全输入、内部系统之间的连接和集成。

    最后,我想强调这篇文章的几个重要方面:

  • 没有通用的解决方案可以确保 100% 的开发安全。然而,如果您在开发的早期阶段使用测试工具,您将很容易发现潜在的漏洞并防止它们变成真正的安全威胁。
  • SAST 和 DAST 不是相互排斥的工具。在适当的开发阶段联合应用这两种技术将使我们能够实现源代码安全性的最佳指标。
  • SAST 工具旨在用于持续集成。DAST 工具经常被错误地认为不适合自动化,但与这种观点相反,许多企业在 CI/CD 管道中成功使用了高级 DAST 解决方案。
  • 在 SDLC 中实现 IAST 通常更复杂,但由于该工具的多功能性,它是值得的。
  • IAST 结合了 SAST 和 DAST 的优缺点。
  • AST 方法应该应用于开发中的任何第三方代码。无法保证第三方组件是安全的,无论它是商业的还是开源的。
  • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年7月3日
    下一篇 2022年7月3日

    相关推荐