用于 CVE-2021-42717 的检测与缓解脚本 -> ModSecurity JSON 解析中的 DoS 漏洞
ModSecurity 3.x 至 3.0.5 错误处理了过度嵌套的 JSON 对象。精心构造的 JSON 对象可嵌套数万层深,可能导致 Web 服务器无法为合法请求提供服务。即使是一个中等大小(例如 300KB)的 HTTP 请求,也可能占用有限的 NGINX 工作进程之一长达数分钟,并消耗机器上几乎全部可用的 CPU。ModSecurity 2 同样易受该漏洞影响:受影响的版本包括 2.8.0 至 2.9.4。
可能的缓解措施:创建一个 phase:1 链式规则,当 Content-Length 超过特定大小时(在大多数安装中,10,000 至 20,000 字节可能是安全的),拒绝会使用 JSON 解析器的请求。如果其他非文件请求体同样预计低于类似的阈值,部分 v2 用户也可以改用 SecRequestBodyNoFilesLimit 配置项。特别提醒 ModSecurity <v2.9.3 的用户:尽管该问题存在于 v2.9.2 等早期版本中,但触发问题性延迟似乎需要更大的请求体大小,这意味着请求体大小的限制可以设得更大(或许 40,000 至 50,000 字节),在大多数安装中仍能提供良好的保护。 https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/modsecurity-dos-vulnerability-in-json-parsing-cve-2021-42717/
