测试人员经常使用黑盒测试作为对白盒测试的补充,或者在无法访问源代码的情况下。这种方法从外到内评估应用程序,并模仿黑客与系统的交互。这些工具通常被称为动态应用程序安全测试(DAST),是充当漏洞扫描程序的黑盒测试工具。
什么是DAST工具?
DAST工具通过注入恶意负载来识别正在运行的应用程序中的漏洞,以识别潜在的缺陷,这些缺陷允许进行SQL注入或跨站点脚本(XSS)之类的攻击。DAST还可以帮助检测SAST找不到的运行时缺陷。
OWASP提供了主要的漏洞扫描程序列表。在不认可任何供应商的情况下,该页面介绍了适用于它们的工具和平台。
DAST工具如何工作?
DAST工具通过测试所有通过前端进行通信的访问点来实现对Web应用程序的自动审阅。该工具模拟恶意用户的行为并模拟随机操作,这些操作可以通过操作员定义的复杂测试用例或与第三方系统的交互来完成,例如电子邮件注册验证或输入SMS验证代码。
包括Web加密API,密钥链,网络,文件系统,SQL以及内容提供者,广播接收者,URI处理程序等在内的调用将被拦截,收集,探测并检查漏洞,以确定每个部分是否应有的表现是或如果它不是预期结果集的一部分。
在公开的HTTP和HTML接口之上,一些解决方案还测试远程过程调用,会话启动协议[SIP]等。
DAST工具对于检测以下内容特别有用:
- 输入/输出验证:(例如,跨站点脚本和SQL注入);
- 服务器配置错误;
- 认证问题;实时显示或仅在已知用户登录时才可见的其他问题
安全研究员Shay Chen编制了广泛的商业和开源Web应用程序安全扫描程序列表,并将它们作为WAVSEP(Web应用程序漏洞扫描程序评估项目)的一部分进行了基准测试,该项目评估Web应用程序扫描程序的各个方面:输入向量,扫描障碍,性能,准确性和结果一致性。该列表很好地概述了DAST空间的状态。
DAST的优势
DAST工具允许在客户端和服务器端进行复杂的扫描,而无需源代码或应用程序所基于的框架。一旦配置,它们通常只需要最少的用户交互,并且可以作为夜间扫描的一部分运行。与SAST相比,DAST解决方案还更不容易报告误报:如果可以执行恶意SQL查询,则意味着确实存在SQL注入漏洞。IAST的引入甚至改善了结果,因为它进一步降低了误报率。
扫描程序可以理解参数和函数调用,并将尝试检测查询字符串,标头,片段,动词(GET / POST / PUT)和DOM注入中的漏洞。通过扫描应用程序的复杂环境(互连的Web服务器,代理,数据库,缓存等),DAST工具可以检测到潜在的配置问题和第三方漏洞,如果仅关注代码本身,则无法发现这些漏洞。
此外,由于DAST工具从外部与应用程序进行交互,因此它们大多与技术和语言无关。因此,它们可以与任何编程语言以及现成和定制框架一起使用。它们也可以与流行的SDLC工具集成,例如问题跟踪器和持续集成管道(JIRA,GitHub等)。
DAST的缺点
很多误报。DAST工具试图模拟攻击者的行为,但对JavaScript的某些动态方面的了解有限,并且无法区分真正的可利用漏洞和不会导致任何危害的漏洞。DAST工具进行的“压力测试”将比应用程序实际返回更多的报告问题。这意味着安全所有者将必须过滤DAST测试结果并确定其优先级,以找出所有误报。
此外,DAST工具仅与外部的应用程序交互。他们无法获得应用程序内部发生的情况的上下文,而只能从外部查看安全性。并且由于这些工具只能在SDLC的结尾使用,因此只有在开发周期完成后才能发现漏洞。它们需要在每次代码更改时进行完全编译,从而使它们无法很好地适应敏捷方法体系,并使它们遇到扩展问题。对于大型项目,DAST工具可能需要特殊的基础结构,特殊的测试以及应用程序的多个实例才能运行不同的数据输入。而且,它们不能帮助解决可能导致稳定性问题的编码设计缺陷。
有些工具不能覆盖应用程序区域的100%,这意味着它们最多可能会错过应用程序的次要区域或访问较少的区域。测试人员应了解其Web应用程序的攻击面:
- 验证是否正确配置了工具以了解应用程序
- 积极扩大工具的覆盖范围
使用DAST扫描仪时,数据可能会被覆盖或将恶意内容注入到经过测试的Web应用程序中。测试应在类似于生产但非生产的环境中执行,以确保在保护数据的同时获得准确的结果。
您如何克服DAST的局限性?
DAST涵盖了SAST无法达到的不同领域,反之亦然。在全面的测试策略中,应该在手动审查和测试的基础上动员两者,以帮助在Web应用程序发布或扩大用户群之前捕获不同的安全问题。
另外,安全解决方案应放在应用程序生命周期的不同部分。如果使用DAST预生产,则应考虑使用生产环境安全工具以及其他非扫描仪。