使用ModSecurity规则防御CVE-2021-44228/LogJam/Log4Shell漏洞

本文分享了针对CVE-2021-44228/LogJam/Log4Shell漏洞的ModSecurity规则,包括初始版本和改进版本,涵盖多个请求字段的检测,并提供规则配置细节和社区讨论。

ModSecurity规则过滤CVE-2021-44228/LogJam/Log4Shell漏洞 [更新]

作为一个快速解决方案,我的一个朋友制作了一个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也会如此。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计