SAST、DAST与IAST各有哪些特点

共 1768字,需浏览 4分钟

 ·

2023-09-21 14:43

SAST、DAST 和 IAST 是应用程序安全测试的三种主要方法,这三种测试方法从查看源代码到查看正在运行的应用程序。

静态应用程序安全测试(SAST)

静态应用程序安全测试(SAST),因为可以看到应用程序内部也称为白盒测试。分析应用程序源代码以查找可能不安全的构造和数据流是静态分析是开发过程中最常用的安全测试方法。SAST工具通过字符串匹配、数据流分析、控制流分析、抽象语法树的语义分析等手段进行路径遍历,完成对状态空间所有路径的近似分析,以发现代码中存在的潜在缺陷以及安全漏洞,并提供修复建议。

有许多不同类型的 SAST 工具,从简单的 IDE(集成开发环境)插件(警告不安全的语法)到检查整个存储库和模拟数据流的独立代码分析器。由于 SAST 工具分析源代码,因此需要工具满足编程语言,测试多语言代码库通常需要了解工具是否支持各类语言。

SAST 优点:

在应用程序部署之前的开发阶段进行测试,这样可以尽早发现和纠正安全漏洞;

检查静态代码,无需正在运行的应用程序;

在开发过程中易于插入 IDE 和其他工具;

可以检查整个代码库,甚至是当前未使用的代码;

不仅仅依赖于已知的漏洞和攻击模式,还可以发现代码中的逻辑漏洞、设计缺陷和未知的安全问题。

SAST 缺点:

在分析应用程序时依赖于源代码或字节码;

无法检测与特定环境相关的安全问题;

不可避免的存在误报问题;

检测编码语言需要工具支持。

动态应用程序安全测试(DAST)

动态应用程序安全测试(DAST)因为无法查看应用程序内部,也称为黑盒测试。DAST可以探测整个正在运行的应用程序、API或WEB环境并检查不安全行为。DAST 可以手动执行(渗透测试)或自动执行(漏洞扫描),一般来说,DAST工具指的是自动扫描程序。

DAST通过模拟与网站交互的行为来工作,现代漏洞扫描程序具有内置的 Web
浏览器,用于加载页面、执行测试并观察指示漏洞的反应。由于它们专为自动化和自主测试而设计,因此需要支持身份验证、CSRF 令牌以及访问和测试网页和 API
端点所需的其他机制。

DAST优点:

识别可利用的安全漏洞、配置错误、无效的安全标头以及其他只能在运行时检测到的问题;

与技术无关,客观地评估应用程序的安全性,不受开发语言、框架或技术的限制;

不需要源代码,因此它可以测试所有正在运行的组件,无论其来源如何(包括动态依赖项)

可以检测已知的安全漏洞和攻击模式。通过使用已知漏洞数据库和攻击签名,DAST工具可以帮助发现应用程序中的常见漏洞,如跨站脚本(XSS)、SQL注入等。

DAST缺点:

需要一个正在运行的应用程序进行测试(即使只是一个最小的原型);

测试仅涵盖测试期间运行的代码;

报告的问题位置可能不如其他方法精确;

只能从外部对应用程序进行测试,无法评估应用程序的内部安全性措施和实现;无法检测到代码中的逻辑漏洞和设计缺陷。

交互式应用程序安全测试(IAST)

交互式应用程序安全测试 (IAST)通常又被称为灰盒测试,IAST结合了SAST和DAST,与单独的SAST相比,IAST可以捕获一些动态安全问题并验证可利用性。与单独的DAST相比,IAST可以查明应用程序代码中的问题,并显示为什么可能受到攻击。

IAST优点:

可以在应用程序运行时获取实时的上下文信息,包括参数、会话状态和数据库状态等;

可以跟踪应用程序的执行路径,包括敏感数据的流动和潜在的漏洞;

可以模拟实际攻击,包括注入攻击、跨站脚本(XSS)等常见攻击模式;

集成到CI/CD流水线中,可实时监测应用程序的安全性。

IAST缺点:

为了使用IAST,需要将特定的代理程序或传感器部署到应用程序中;

在应用程序运行时进行监控和分析,可能会对应用程序的性能产生一定影响;

尽管可以提供深入的漏洞分析,但仍受限于特定执行路径和测试用例的覆盖范围。

在选择测试工具时,每种测试工具和方法在特定情况下都有其优缺点。全面的应用程序安全计划应包含多种类型的安全测试,以便在开发过程中尽早发现尽可能多的漏洞。理想情况下,至少需要SAST工具在代码编写阶段检测由代码问题引起的缺陷和安全漏洞,用 DAST 在 SDLC 中运行动态安全测试,以及SCA检测所依赖的开源组件未过时或易受攻击。


浏览 9
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报