OWASP CRS 3.3.2规则920100触发CONNECT方法无效HTTP请求行告警如何解决
问题根因
CRS 3.3.2版本内置的920100规则(HTTP请求行合法性校验)的正则表达式存在设计缺陷:其中针对CONNECT方法的匹配分支仅支持IP格式的目标主机,未兼容域名形式的CONNECT目标,因此会对符合RFC规范的域名代理CONNECT请求产生误告警,该问题和你已经配置的允许CONNECT方法的参数无关。
解决方案
推荐方案:自定义白名单规则(不修改CRS原生规则,兼容后续版本升级)
在CRS配置加载链的自定义规则段(通常是crs-setup.conf之后,原生CRS规则加载之前的配置文件)添加如下规则,仅对符合RFC规范的合法CONNECT请求跳过920100规则校验:
# 放行合法域名格式的CONNECT请求,排除920100误报 SecRule REQUEST_METHOD "@streq CONNECT" \ "id:10001,\ phase:1,\ pass,\ nolog,\ ctl:ruleRemoveById=920100,\ chain" SecRule REQUEST_LINE "@rx ^CONNECT\s+[\w\-\.]+(:\d{1,5})?\s+HTTP/\d\.\d$" \ "t:none"
如果需要进一步缩小白名单范围,比如只允许指定域名的CONNECT请求,可以在第二条链规则里添加域名匹配逻辑,避免白名单范围过大引入安全风险。
备选方案:修改原生920100规则的正则表达式
不推荐该方案,CRS版本升级时修改会被覆盖。操作方式为打开REQUEST-920-PROTOCOL-ENFORCEMENT.conf文件,找到920100规则的正则部分,将其中CONNECT对应的匹配分支:connect (?:\d{1,3}\.){3}\d{1,3}\.?(?::\d+)?
修改为支持域名的格式:connect (?:(?:\d{1,3}\.){3}\d{1,3}|[\w\-\.]+)(?::\d+)?
修改完成后重启httpd服务即可生效。
内容的提问来源于stack exchange,提问作者Michael Jahn
相关产品推荐
相关产品推荐

