【2026年】严重风险!Log4j2 CVE-2021-45105可发起拒绝服务攻击

CVE-2021-45105 确实是 Apache Log4j2 历史上一个严重的高危漏洞,它揭示了该组件在修复初期存在的深层风险。

这是一个拒绝服务(DoS)漏洞,攻击者可以利用它导致使用受影响版本 Log4j2 的应用程序崩溃,从而中断服务。hackers.jpg.1f7f4852ab042ccefb6ab1dc62200ae7.jpg📄 漏洞详情

*   漏洞原理:在 Log4j2 2.17.0 之前的版本中,如果日志配置使用了非默认的 PatternLayout 并包含上下文查找(Context Lookup),例如 {ctx:loginId},攻击者可以通过构造包含递归查找的恶意输入数据,触发无限递归,最终导致 StackOverflowError 错误,使进程终止。

*   影响版本:Apache Log4j2 从 2.0-beta9 到 2.16.0 的所有版本。

*   严重等级:CVSS 评分为 7.5(高危)。

🛡️ 解决方案

官方修复方案

最直接有效的方法是立即将 log4j-core 组件升级到安全版本 Log4j 2.17.0 或更高版本。

对于使用 Maven 的项目,可以将依赖更新为:

    org.apache.logging.log4j

    log4j-core

    2.17.0

临时缓解措施

如果暂时无法升级版本,可以采取以下临时方案来降低风险:

1.  修改日志配置:在日志配置的 PatternLayout 中,将上下文查找(如 {ctx:loginId})替换为线程上下文映射模式(如 %X、%mdc 或 %MDC)。

2.  移除外部引用:在日志配置中,删除那些源自应用程序外部(如 HTTP 请求头或用户输入)的上下文查找引用。

💡 背景信息

CVE-2021-45105 是在著名的 Log4Shell (CVE-2021-44228) 漏洞之后,Log4j2 组件暴露出的又一个严重安全问题。Apache 官方在发布 2.15.0 和 2.16.0 版本尝试修复前期漏洞后,又发现了此问题,并最终在 Log4j 2.17.0 版本中进行了修复。这一系列事件凸显了彻底修复该组件安全问题的复杂性。