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

本文提供针对Log4Shell漏洞(CVE-2021-44228)的ModSecurity防护规则,包含初始版本和增强版规则,可拦截jndi:ldap等恶意请求模式。

作为临时解决方案,我的一个朋友编写了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'"

评论精选

  1. Ali提问:为什么需要phase 1规则?攻击者通过POST请求体发送攻击模式时是否会触发漏洞?

    • 作者回复:phase 1规则是为了在Shibboleth插件(可能存在漏洞)之前运行。但确实需要更多规则来应对攻击者的变种。
  2. R建议:规则是否应该包含jndi:dns和jndi:rmi?

    • 增强版已采纳该建议
  3. Jakob指出:此规则无法防御某些特殊变种攻击(附Twitter链接)

    • 作者说明:这些规则仅作为临时防护方案,企业应及时修补所有互联网 facing 系统
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计