Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。
Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
CNVD对该漏洞的综合评级为“高危”。
国家信息安全漏洞共享平台:https://www.cnvd.org.cn/webinfo/show/7146
修复方案:
1 官方补丁
目前,Apache官方已发布新版本完成漏洞修复,请及时升级至最新版本2.16.0:https://logging.apache.org/log4j/2.x/download.html。
2 临时修复措施(任选其一)
(1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
(2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
(3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
(4)限制受影响应用对外访问互联网;
(5)禁用JNDI。如在spring.properties里添加spring.jndi.ignore=true;
(6)部署使用第三方防火墙产品进行安全防护,并更新WAF、RASP规则等。
3 受影响组件
Apache Solr 、Apache Struts2、Apache Flink 、Apache Druid 、spring-boot-strater-log4j2
spring-boot-starter-log4j2 修复方案:
<!--log4j 远程控制漏洞升级 2.16.0-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>${org.springframework.boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.16.0</version>
</dependency>