速览 CVE-2021-45105
CVE-2021-45105:
Apache Log4j2 does not always protect from infinite recursion in lookup evaluation
CVE-2021-45105 | Denial of Service |
---|---|
Severity | High |
Base CVSS Score | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) |
Versions Affected | All versions from 2.0-beta9 to 2.16.0 |
描述
Apache Log4j2 版本 2.0-alpha1 到 2.16.0 没有防止自引用查找的不受控制的递归。当日志配置使用带有上下文查找的非默认模式布局(例如,$${ctx:loginId})时,控制线程上下文映射 (MDC) 输入数据的攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError 将终止进程。这也称为 DOS(拒绝服务)攻击。
推荐解决方案
Log4j 1.x 缓解
Log4j 1.x 不受此漏洞影响。
Log4j 2.x 缓解
实施以下缓解技术之一:
Java 8(或更高版本)用户应升级到 2.17.0 版。
或者,这可以在配置中缓解:
在日志记录配置的 PatternLayout 中,用线程上下文映射模式(%X、%mdc 或 %MDC)替换 ${ctx:loginId} 或 $${ctx:loginId} 等上下文查找。
否则,在配置中,删除对上下文查找的引用,如 ${ctx:loginId} 或 $${ctx:loginId},它们源自应用程序外部的源,如 HTTP 标头或用户输入。
请注意,只有 log4j-core JAR 文件受此漏洞影响。仅使用 log4j-api JAR 文件而不使用 log4j-core JAR 文件的应用程序不受此漏洞的影响。
另请注意,Apache Log4j 是唯一受此漏洞影响的日志服务子项目。Log4net 和 Log4cxx 等其他项目不受此影响。
相关链接
https://nvd.nist.gov/vuln/detail/CVE-2021-45105
https://logging.apache.org/log4j/2.x/security.html
https://security.netapp.com/advisory/ntap-20211218-0001/