【2026年】严重风险!Log4j2 CVE-2021-45105可发起拒绝服务攻击
CVE-2021-45105 确实是 Apache Log4j2 历史上一个严重的高危漏洞,它揭示了该组件在修复初期存在的深层风险。
这是一个拒绝服务(DoS)漏洞,攻击者可以利用它导致使用受影响版本 Log4j2 的应用程序崩溃,从而中断服务。
📄 漏洞详情
* 漏洞原理:在 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 版本中进行了修复。这一系列事件凸显了彻底修复该组件安全问题的复杂性。
