一、漏洞详情
Apache Log4j2是一个开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中。
Apache Log4j官方发布安全公告,Apache Log4j2组件中存在一个远程代码执行漏洞(CVE-2021-44832),影响了Apache Log4j2 版本 2.0-alpha7- 2.17.0的所有版本(不包括安全修复版本 2.3.2 和 2.12.4),拥有修改日志配置文件权限的攻击者可以使用JDBC Appender构建恶意配置,其数据源引用JNDI URI,可以远程执行代码,但该漏洞利用需要配置文件jdbc连接可控。
该问题已通过将 JNDI 数据源名称限制为Log4j2版本2.17.1、2.12.4和2.3.2中的java协议来修复。
从12月9日以来,Apache Log4j已经披露了多个漏洞:
CVE-2021-4104
CVE-2021-42550
CVE-2021-44228
CVE-2021-45046
CVE-2021-45105
CVE-2021-44832
建议受影响用户做好资产自查以及预防工作,以免遭受黑客攻击。
二、影响范围
CVE-2021-44832:Apache Log4j2 版本2.0-alpha7- 2.17.0的所有版本(不包括安全修复版本 2.3.2和 2.12.4)
三、修复建议
目前此漏洞已经修复,建议受影响用户及时升级到 Log4j 2.3.2(适用于 Java 6)、2.12.4(适用于Java 7)或 2.17.1(适用于 Java 8 及更高版本)。
下载链接:https://logging.apache.org/log4j/2.x/download.html
注:只有 log4j-core JAR文件受此漏洞影响。仅使用log4j-api JAR文件而不使用 log4j-core JAR文件的应用程序不受此漏洞的影响。Apache Log4j 是唯一受此漏洞影响的日志服务子项目。
从版本 2.17.1(以及Java 7和Java 6 的 2.12.4 和 2.3.2)开始,JDBC Appender将使用 JndiManager并要求 log4j2.enableJndiJdbc系统属性包含 true 值以启用JNDI。
启用JNDI的属性已从“log4j2.enableJndi”重命名为三个单独的属性:log4j2.enableJndiLookup、log4j2.enableJndiJms和log4j2.enableJndiContextSelector。
JNDI功能已在以下版本中得到强化:2.3.1、2.12.2、2.12.3 或 2.17.0:从这些版本开始,已删除对 LDAP 协议的支持,并且JNDI 连接仅支持JAVA协议。