modsecurity rule to filter CVE-2021-44228/LogJam/Log4Shell [update]
2021年12月10日
作为一个快速解决方案,我的一个朋友制作了一个modsecurity规则来过滤CVE-2021-44228/LogJam/Log4Shell漏洞,他允许我与大家分享。
初始规则
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SecRule \
ARGS|REQUEST_HEADERS|REQUEST_URI|REQUEST_BODY|REQUEST_COOKIES|REQUEST_LINE|QUERY_STRING "jndi:ldap:" \
"phase:1, \
id:751001, \
t:none, \
deny, \
status:403, \
log, \
auditlog, \
msg:'Block: CVE-2021-44228 - deny pattern \"jndi:ldap:\"', \
severity:'5', \
rev:1, \
tag:'no_ar'"
|
改进版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
SecRule \
ARGS|REQUEST_HEADERS|REQUEST_URI|REQUEST_BODY|REQUEST_COOKIES|REQUEST_LINE|QUERY_STRING "jndi:ldap:|jndi:dns:|jndi:rmi:|jndi:rni:|\${jndi:" \
"phase:1, \
id:751001, \
t:none, \
deny, \
status:403, \
log, \
auditlog, \
msg:'DVT: CVE-2021-44228 - phase 1 - deny known \"jndi:\" pattern', \
severity:'5', \
rev:1, \
tag:'no_ar'"
SecRule \
ARGS|REQUEST_HEADERS|REQUEST_URI|REQUEST_BODY|REQUEST_COOKIES|REQUEST_LINE|QUERY_STRING "jndi:ldap:|jndi:dns:|jndi:rmi:|jndi:rni:|\${jndi:" \
"phase:2, \
id:751002, \
t:none, \
deny, \
status:403, \
log, \
auditlog, \
msg:'DVT: CVE-2021-44228 - phase 2 - deny known \"jndi:\" pattern', \
severity:'5', \
rev:1, \
tag:'no_ar'"
|
评论讨论
Ali: 为什么需要阶段1规则?如果攻击者在POST请求体中发送模式,漏洞不会触发吗?
robert: 我们需要阶段1,这样它可以在SAML的shibboleth插件(可能易受攻击)之前运行。但你是对的,如果攻击者适应,我们需要更多规则 - 谢谢提示。
R: 是否还应该包括jndi:dns和jndi:rmi?
Jakob: 据我所知,这不会阻止这里提到的情况:https://twitter.com/Rezn0k/status/1469523006015750146
robert: 当然,没有什么能阻止这种情况。这些规则只是为了在你识别所有易受攻击系统并修补它们或应用解决方案以获得更多时间的前1-2天保护你。到现在,周一,你应该已经为所有面向互联网的系统完成了工作 - 这就是我们大多数人在周末工作的原因。
ps: Citrix为ADC提供的官方WAF规则也有同样的问题 - 大多数其他WAF也是如此。