mod_security_crs v4.25.2 已新增到 CodeIT 仓库。mod_security_crs 是 ModSecurity 的 OWASP CRS 规则集。这些软件包适用于 RHEL、CentOS、AlmaLinux、Rocky Linux 和 Oracle Linux 8 和 9,以及 Ubuntu 22.04 和 24.04。
本次更新修复了安全漏洞,建议尽快升级。
主要变更:
- 已通过回移修复了 `vega` scanner 的 user agent 子串与 `veganism.social` 匹配时的误报问题(rule 913100)(Esad Cetiner,来自 #4777 的 cherry-pick)
- 已通过回移修复,使 `tx.crs_skip_response_analysis` 也会跳过 phase 4 的 response body 规则;此前只会跳过 phase 3 的 header 规则(new rule 950022)(Jozef Sudolský,来自 #4807 的 cherry-pick)
- 已通过回移默认允许并解析 `application/*+json` content types(包括包含 `+` 的子类型,例如 `application/vc+ld+json`)以及 AWS `application/x-amz-json-1.0`/`1.1` content types,因此这些 JSON request bodies 不再会被 content-type allow-list 阻止,也不会保持未检查状态(new rules 901360, 901370)(Felipe Zipitría,来自 #4775 和 #4828 的 cherry-pick)
修复的漏洞:
- 已通过回移修复 [GHSA-575j-qr6p-9763],方法是将 `REQUEST_FILENAME` 加入 RCE rules 的目标中,因此放在 URL path 中的 command injection payload 会像 `ARGS` 中的那样被检查(rules 932125-932390, except 932200, where every URL path contains the `/` it requires)(Max Leske)
- 已通过回移修复 [GHSA-89h9-2j8h-9gp2],方法是在匹配前将 `charset` 参数名转为小写,因此 `Content-Type` 中大写或混合大小写的 `CHARSET=` 将不再能够跳过 charset allow-list 检查(rule 920480)(Felipe Zipitría)
- 已通过回移修复 [GHSA-qmx4-jfcv-fgww],方法是收集每一个 `_charset_` 值,因此第二个 multipart part 或 query-string 中的 `_charset_` 将不再能够覆盖掉被禁止的 charset(rule 922100)(Ervin Hegedüs)
- 已通过回移修复,移除了 SQL `(X)OR` injection 检测中可被绕过的长度上限(rule 942390)(Felipe Zipitría,来自 #4713 的 cherry-pick)
- 已通过回移修复 [V29-260924],方法是同时容忍扩展名后面的尾部 `/` 和点,因此以 `/` 结尾的 PHP 或 JSP upload filename 将不再能够绕过上传扩展名检查(rules 933110, 944140)(Felipe Zipitría,来自 #4815 的 cherry-pick)
- 已将 rule 932171(Shellshock,CVE-2014-6271)形式化为 `regex-assembly` 文件,并应用了标准的 `[sx0b]` 空白类规范化;`json.` ARGS_NAMES 前缀检测本身在该分支上已通过一个未跟踪的修复存在,因此这是一项可维护性/一致性变更,而不是功能性修复(partial cherry-pick of #4703)
