1. 概术
由于安全事件的数量不断增加,各组织日益重视应用安全。他们希望识别应用中的漏洞,并提早降低风险。当前有两种不同类型的应用安全测试技术,即静态应用安全测试(SAST) 和动态应用安全测试 (DAST)。虽然这两种测试方法都能识别应用中的安全漏洞,但它们却又截然不同。在实际应用中,一般会采用两种方法相结合的方式来最大程度地发现和修复应用程序中的漏洞。
2. SAST技术简介
SAST(静态应用程序安全测试)是一种通过对源代码进行分析来发现应用程序中存在的安全漏洞的技术。
SAST工具会检查应用程序的源代码并尝试找出其中的安全漏洞,例如缓冲区溢出、代码注入、身份验证和访问控制问题等。
大家常用的代码扫描工具Coverity、Fortify、CodeQL等都采用了SAST技术。
若想了解关于CodeQL的内容,可以参阅博主前期文章:
3. DAST技术简介
DAST(动态应用程序安全测试)是一种在运行应用程序时通过模拟攻击来发现漏洞的技术。
DAST工具会模拟攻击,向应用程序发送请求并检查响应,以确定是否存在漏洞。这种方法可以找到一些SAST无法发现的漏洞,例如依赖性注入和会话固定等。
AWVS、Nessus、Burp suite等工具都是采用了DAST技术。
- 如果对AWVS漏洞扫描工具感兴趣,可以参阅博主前期文章《安全工具 | AWVS漏洞扫描工具安装、使用技巧及注意事项(附工具下载链接)》。
- 如果对Nessus漏洞扫描工具感兴趣,可以参阅博主前期文章《安全工具 | Nessus漏洞扫描工具安装、使用技巧及注意事项》。
- 如果对Burp Suite Pro漏洞扫描工具感兴趣,可以参阅博主前期文章《安全工具 | Burp Suite专业版本安装配置及使用指导》。
4. SAST vs DAST
4.1 区别
SAST | DAST |
---|---|
有源代码,属于白盒测试 | 无源代码,属于黑盒测试 |
在软件开发生命周期SDLC的左侧,修复漏洞成本低 | 在软件开发生命周期SDLC的右侧,修复漏洞成本高 |
不运行,无法发现运行时问题 | 可以发现运行时问题 |
一般适用于所有软件类型 | 一般仅适用于Web应用、服务 |
4.2 联系
SAST和DAST技术一般组合使用,在深入测试过程中两种技术均不可缺少。
5. 总结
总的来说,SAST和DAST都是很重要的应用程序安全测试技术,它们各自有其优缺点。在实际应用中,一般会采用两种方法相结合的方式来最大程度地发现和修复应用程序中的漏洞。