动态应用程序安全测试

维基百科,自由的百科全书

动态应用程序安全测试(dynamic application security testing)简称DAST,属于非功能测试英语non-functional testing,用特定技术来评估应用程序,以得到应用程序安全弱点和漏洞的测试方式。动态应用程序安全测试可以用自动化工具进行,也可以人工进行,人工评估可以识别到一些自动化工具可能不会测到的内容,例如业务逻辑错误或是竞争条件,有些0day漏洞只能用人工检查来识别。DAST的工具会利用应用程序的前端和应用程序互动,以识别其安全漏洞以及软件架构上的弱点[1]。动态应用程序安全测试进行的是黑箱测试,不需要存取源代码,是用实际进行攻击来侦测弱点

只要配置host名称,crawling参数以及身份验证凭据,DAST工具可以在最小人工介入的情形下,进行复杂的扫描,并侦测弱点。这些工具可以侦测查询字串、header、片段(fragment)、动词(GET/POST/PUT)以及DOM注入的弱点。

DAST工具可以建立有关安全漏洞的网页应用程序自动化审核,这也是许多法规所要求的内容。网页应用程序扫描器可以扫描许多的漏洞,像是输入输出资料验证(跨网站指令码SQL注入)、特定的应用程序问题,或是服务器组态的错误。

商用及开源的扫描器[编辑]

商用扫描器是需要付费购买的网页评估工具,有些工具的部分功能免费,但完整功能版本仍要付费。

开源扫描器多半是免费的。

安全研究员Shay Chen曾列出包括商用扫描器以及开源扫描器的列表[2],其中也有针对网页应用程序弱点扫描器评估计划(WAVSEP)测试的结果。WAVSEP会评估技术支援、性能、准确度、覆盖率及结果的一致性。

优点[编辑]

DAST工具可以用在产品提供给客户之前前,针对最后release candidate的产品来进行弱点扫描。扫描器殒以模拟恶意的使用者进行攻击,并且探测结果,找出不是预期结果的情形,因此可以进行可行的攻击模拟[3]。这类工具最大的好处是可以每年执行,持续的扫描弱点,定期的发现漏洞,也可以让在漏洞被利用之前,可以定期 发布相关的补丁。[4]

DAST工具是动态测试工具,和使用编程语言无关。网页应用程序的扫描器也可以扫描引擎驱动的网页应用程序。攻击者会使用相同的工具来进行攻击,因此,若用这些工具可以找到弱点,那么骇客也可以这么做。

缺点[编辑]

在进行DAST扫描时,可能会让服务器写入过多的资料,或是写入恶意资料。因此要使用和实际作业环境相同,但不是真正作业时使用的服务器,可以得到正确的结果,又可以保护真正使用的服务器。

DAST属于动态测试,无法覆盖所有应用程序的程式码,因此可能有部分程式不会测到。渗透测试者需要根据测试覆盖率或是其攻击表面来评估工具的组态正确,或是对应用程序够了解。

工具无法实现特定弱点的所有攻击方式。工具一般会有事先定义好的攻击列表,在测试过程中再跳过部分攻击。若有动态内容(像javascript或flash)的应用程序,扫描器也会被因不了解实际行为而受限。

2012年的报告指出,有些网页技术是不少DAST不易分析的,包括jQueryRESTAJAX应用程序里的Google WebToolkit、Flash Remoting(AMF)及HTML5,不易分析的手机应用程序及网络服务有JSON和REST、XML-RPC,以及网页服务中使用的SOAP扳术,不易分析的过程有购物车的复杂工作流,以及跨站请求伪造(XSRF/CSRF)的tokens[5] [6]

参考资料[编辑]

  1. ^ Web Application Security Scanner Evaluation Criteria version 1.0页面存档备份,存于互联网档案馆), WASC, 2009
  2. ^ Comparison of Cloud & On-Premises Web Application Security Scanning Solutions页面存档备份,存于互联网档案馆). SecToolMarket.com Retrieved 2017-03-17
  3. ^ SAST vs DAST. G2 Research Hub. (原始内容存档于2020-05-03). 
  4. ^ The Importance of Regular Vulnerability Scanning. AppCheck Ltd. (原始内容存档于2020-08-06). 
  5. ^ Web Application Scanners Challenged By Modern Web Technologies页面存档备份,存于互联网档案馆). SecurityWeek.Com (2012-10-25). Retrieved on 2014-06-10.
  6. ^ Web Application Security Testing页面存档备份,存于互联网档案馆) Retrieved 2020-11-04

外部链接[编辑]