TAG | Log4j2、JNDI、RCE |
漏洞等级: | 攻击者利用此漏洞,可实现远程代码执行。 |
版本: | 1.1 |
简介
Apache Log4j是Apache的一个开源项目,Apache log4j2是Log4j的升级版本,我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
漏洞概述
12月9日,网上披露Apache Log4j2 远程代码执行漏洞,由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特别构造的数据请求包,可在目标服务器上执行任意代码。漏洞PoC已在网上公开,默认配置即可进行利用,该漏洞影响范围极广,建议相关用户尽快采取措施进行排查与防护。
12月10日,Apache Log4j 2.15.0-rc1 版本仅修复LDAP和增加了host白名单,可以被绕过利用,官方发布了Apache Log4j 2.15.0-rc2版本进行修复,增加了对urI异常的处理。
Apache Log4j2是一款开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中,用来记录日志信息。
漏洞成功复现信息:
漏洞细节 | 漏洞PoC | 漏洞EXP | 利用 |
---|---|---|---|
已公开 | 已公开 | 已公开 | 存在 |
参考链接:
https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues
受影响版本
- 2.0 <= Apache Log4j <= 2.15.0-rc1
注:使用Apache Log4j 1.X版本的应用,若开发者对JMS Appender利用不当,可对应用产生潜在的安全影响。
供应链影响范围
已知受影响应用及组件:
Apache Solr
Apache Struts2
Apache Flink
Apache Druid
spring-boot-strater-log4j2
更多组件可参考如下链接:
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
不受影响版本
Apache log4j-2.15.0-rc2(与官网的2.15.0稳定版相同)
漏洞检测
人工检测
1、用户可以更加java jar解压后查看是否存在org/apache/logging/log4j相关路径结构,判断是否存在使用的漏洞组件,如果存在相关java程序包,说明很有可能存在漏洞。
2、程序使用gradle打包,可以查看build.gradle编译配置文件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号为小于2.15.0-rc2,说明存在该漏洞。
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.12.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.12.1'
}
修复后
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.15.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.15.0'
}
3、若程序使用maven打包,查看项目的pom.xml文件中是否存在下图所示相关字段,若版本号为小于2.15.0-rc2,说明存在该漏洞。
dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
</dependencies>
修复后的
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
</dependencies>
攻击排查
- 攻击者在利用前通常采用 dnslog 方式进行扫描、探测,对于常见
利用方式可通过应用系统报错日志中的
“javax.naming.CommunicationException”、
“javax.naming.NamingException: problem generating object using object factory”、”Error looking up JNDI resource”关键字进行排查。 - 流量排查:攻击者的数据包中可能存在:“${jndi:rmi”、
“${jndi:ldap” 字样
漏洞修复方案:
Apache官方已发布补丁,建议受影响的用户尽快升级到安全版本。
补丁下载地址:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1
漏洞缓解措施:
(1)jvm参数 -Dlog4j2.formatMsgNoLookups=true
(2)log4j2.formatMsgNoLookups=True
建议 JDK 使用 11.0.1、8u191、7u201、6u211 及以上的高版本。
官方文档: