
动态安全测试 (DST) 是 Web 应用程序安全的重要组成部分。 它是一种测试方法,可自动执行软件应用程序中查找漏洞和评估风险的过程。 通过本指南,我们将讨论如何使用动态安全测试和 DST 实施的一些最佳实践。
什么是动态测试,它是如何工作的?
动态测试是在受控环境中执行 Web 应用程序并识别漏洞的自动化过程。
动态测试的工作方式是向服务器发送请求,然后使用漏洞检测引擎(如 Acunetix 或 Netsparker)分析其响应。 动态应用程序安全测试与静态应用程序安全测试
动态安全测试 (DST) 与静态代码分析 (SCA) 相似但不同。 DST 在运行时分析应用程序——它模拟真实的用户操作并监控这些操作如何影响内存或数据存储等系统资源; 而 SCA 仅扫描软件的源文件以查找已知错误/漏洞。
动态方法非常有效,因为它们不仅仅关注表面可见的内容:它们分析而不是关注应用程序的各个组件。
动态安全测试是发现在静态代码分析中很难检测到的漏洞的好方法,例如 XSS 和 SQLi,它们只能在用户在易受攻击的应用程序上实际执行时才能检测到。
动态应用程序安全测试工具如何工作?
动态漏洞检测引擎不是简单的端口扫描器或协议“嗅探器”。 与防病毒软件一样,它们采用人工智能 (AI) 研究的先进技术进行设计,具有识别针对 Web 应用程序的新型攻击的独特功能:
要了解什么使动态分析比传统方法更好,让我们看看它是如何工作的——从爬网网站到设置服务器和配置虚拟机,一直到实际的动态分析引擎本身。
- 爬取网站: 动态分析工具从抓取 Web 应用程序开始,以了解它们的结构以及它们使用的技术/语言——包括动态应用程序安全测试、Web 安全测试、静态代码分析 (SCA)、通过自动扫描仪和手动进行的渗透测试测试人员等。
他们还会发现所有需要保护的资产,然后将这些资产用于报告目的或开始动态测试会话时。 爬虫只访问每个 URL 一次,除非它检测到其源代码中的更改 - 这使您可以避免由代理或浏览器缓存上的缓存问题引起的潜在误报。
- 设置服务器和虚拟机: 动态分析工具不是安装在本地,而是使用虚拟机 (VM) 和沙箱从远程位置运行——这些是模拟用户工作环境的隔离环境。
动态分析工具在单独的 VM 中同时运行多个测试以加快过程,同时也使多个测试人员/研究人员可以同时处理 Web 应用程序的不同部分,甚至设置私有动态分析沙盒服务器。
- 动态应用安全测试引擎: 动态安全测试需要高级引擎,这些引擎不仅可以通过在数据库中查找现有签名来识别漏洞。 他们必须能够理解应用程序的工作原理,使用符号执行等推理技术对其进行推理并回答复杂的问题,例如“如果我更改此参数会发生什么?” 例如,攻击向量可能仅在值设置为“admin”时才存在,并且动态分析引擎必须能够在之前没有看到该数据的情况下对其进行推理。
动态分析还需要一个引擎,该引擎可以模拟真实用户在与 Web 应用程序交互时执行的操作,例如填写表单、单击菜单和按钮,甚至更改输入框中的值。
为什么要在您的业务中使用这种类型的测试?
动态分析比静态代码分析 (SCA) 更准确,因为它可以跟踪用户的操作,识别新的攻击向量,并推理应用程序以发现漏洞。
动态安全测试还需要高级引擎,这些引擎不仅可以在其数据库中查找现有签名,还可以做更多的事情。
动态分析工具在单独的 VM 中同时运行多个测试以加快过程,同时使多个测试人员/研究人员可以同时处理 Web 应用程序的不同部分,甚至设置私有动态分析沙盒服务器。
结论:
动态安全测试不会取代其他类型的测试,而是与它们一起工作——根据您尝试实现的目标,使用不同的工具用于不同的目的。 例如,动态分析有其局限性:它对没有任何有价值资产/敏感用户数据的“玩具”应用程序毫无用处; 而静态代码分析可能会给出误报,因为它实际上并不在浏览器中执行代码。 动态应用程序安全测试在内存和处理能力方面也非常占用资源,这意味着它不能用于每个项目——但是当在生产应用程序中发现安全问题时,动态分析通常会提供最准确的结果。