Apache Log4j 2 漏洞修复指南
CVE-2021-44228
Log4j 团队已注意到一个安全漏洞 CVE-2021-44228,该漏洞已在 Log4j 2.15.0 中得到解决。
最新版Log4j 2.17.1已发布,建议更新到2.17.1
Log4j 的 JNDI 支持没有限制可以解析的名称。某些协议不安全或允许远程代码执行。Log4j 现在默认将协议限制为仅 java、ldap 和 ldaps,并将 ldap 协议限制为默认仅访问本地主机上提供的 Java 原始对象。
允许暴露此漏洞的一个向量是 Log4j 允许查找出现在日志消息中。从 Log4j 2.15.0 开始,此功能现在默认禁用。虽然提供了以这种方式启用查找的选项,但强烈建议用户不要启用它。
无法升级到 2.15.0 的用户可以通过以下方式减轻风险:
Log4j 2.10 或更高版本的用户可以添加 -Dlog4j.formatMsgNoLookups=true 作为命令行选项或将 log4j.formatMsgNoLookups=true 添加到类路径上的 log4j2.component.properties 文件中以防止查找日志事件消息。
Log4j 2.7 以后的用户可以在 PatternLayout 配置中指定 %m{nolookups} 以防止在日志事件消息中查找。
从 log4j-core jar 中删除 JndiLookup 和 JndiManager 类。删除 JndiManager 将导致 JndiContextSelector 和 JMSAppender 不再起作用。