2018年2月5日,国外安全研究人员披露了一个关于WordPress的拒绝服务(DoS)攻击的漏洞(CVE-2018-6389),WordPress 3.X~4.X各个版本均受该漏洞影响。恶意攻击者可以通过让WordPress在单个请求中加载多个JavaScript文件来消耗服务器资源,进而引发拒绝服务。

WAF本身不受该漏洞影响。但如果您的网站业务使用WordPress,建议您配置相应的防护规则。

漏洞描述

该漏洞主要位于load-scripts.php文件处,load-scripts.php是WordPress CMS的内置脚本。load-scripts.php文件通过传递nameload参数来选择性地调用必需的JavaScript文件,这些name参数间以半角逗号(,)分隔。

例如,https://example.com/wp-admin/load-scripts.php?c=1&load[]=jquery-ui-core,editor&ver=4.9.1,这个请求中加载的JavaScript文件是jquery-ui-coreeditor

由于在script-loader.php文件中定义的181个JavaScript文件都可以被加载在单个请求中,恶意攻击者在无需授权登录的情况下可以发送大量请求,导致服务器负载增加,从而实现拒绝服务攻击的效果。

防护建议

建议您使用自定义ACL访问控制规则和自定义CC攻击防护规则,对您的WordPress网站业务进行防护。具体配置建议如下:

  • 通过自定义ACL访问控制规则,限制向load-scripts.php文件传递参数的数量。例如,配置以下规则限制对load-scripts.php文件传递的参数长度不大于50个字符。新增规则
  • 通过自定义CC攻击防护规则,限制同一个IP对load-scripts.php文件的请求频率。例如,配置以下规则限制对同一个IP对load-scripts.php文件的请求频率不超过每5秒100次。新增规则

关于自定义ACL访问控制规则和自定义CC攻击防护规则的相关操作,请参见设置自定义防护策略