Apache Log4j 任意代码执行漏洞

安全风险通告

第1章 安全通告

 近日,相关机构监测到 Apache Log4j 存在任意代码执行漏洞,经过分析,该组件存在 Java JNDI 注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等众多组件与大型应用均受影响,鉴于此漏洞危害巨大,利用门槛极低,建议尽快参考缓解方案阻止漏洞攻击。

当前漏洞状态:

技术细节

PoC 状态

 

EXP 状态

在野利用

 

已公开

已公开

已公开

已发现

2章 漏洞信息

2.1 漏洞描述

Apache Log4j 是 Apache 的一个开源项目,Apache log4j2 是 Log4j 的升级版本,我们可以控制日志信息输送的目的地为控制台、文件、GUI 组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。

近日,奇安信 CERT 监测到 Apache Log4j 存在任意代码执行漏洞,经过分析,该组件存在 Java JNDI 注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等众多组件与大型应用均受影响,鉴于此漏洞危害巨大,利用门槛极低,建议尽快参考缓解方案阻止漏洞攻击。

Apache Log4j 任意代码执行漏洞

漏洞名称

Apache Log4j 任意代码执行漏洞

漏洞类型

代码执行

风险等级

紧急

漏洞 ID

暂无

公开状态

已公开

在野利用

已发现

漏洞描述

Apache Log4j 是 Apache 的一个开源项目,通过定义每一条

日志信息的级别,能够更加细致地控制日志生成过程。经过分

析,Log4j2 中存在 JNDI 注入漏洞,当程序将用户输入的数据进行 日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

参考链接

https://github.com/apache/logging-log4j2 

2.2 风险等级

紧急

3章 影响范围

Apache Log4j 2.x < 2.15.0-rc2 

4章 处置建议

1. 漏洞排查

1)排查应用是否引入了 Apache Log4j2 Jar 包,若存在依赖引入,则可能存在漏洞影响。 相关用户可根据 Java JAR 解压后是否存在org/apache/logging/log4j 相关路径结构,判断是否使用了存在漏洞的组件,若存在相关 Java 程序 包,则极可能存在该漏洞。

Apache Log4j 任意代码执行漏洞

 

2) 若程序使用 Maven 打包,查看项目的 pom.xml 文件中是否存在如下图

所示的相关字段,若版本号为小于 2.15.0-rc2,则存在该漏洞。

Apache Log4j 任意代码执行漏洞

 

 3)若程序使用 gradle 打包,查看 build.gradle 编译配置文件,若在dependencies 部分存在 org.apache.logging.log4j 相关字段,且版本号为小于 2.15.0-rc2,则存在该漏洞。

 Apache Log4j 任意代码执行漏洞

 

2. 攻击排查

a) 攻击者在利用前通常采用 dnslog 方式进行扫描、探测,对于常见利用方式可通过应用系统报错日志中的

"javax.naming.CommunicationException"、

"javax.naming.NamingException: problem generating object usingobject factory"、"Error looking up JNDI resource"关键字进行排查。

b) 流量排查:攻击者的数据包中可能存在:“${jndi:rmi”、“${jndi:ldap”字样。

3. 修复建议

a) 升级到最新版本:

请联系厂商获取修复后的官方版本:https://github.com/apache/logginglog4j2 ;

请尽快升级 Apache Log4j2 所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2  

b) 缓解措施:

(1)添加 jvm 启动参数 -Dlog4j2.formatMsgNoLookups=true

(2)在应用程序的 classpath 下添加 log4j2.component.properties 配置文件,文件内容:log4j2.formatMsgNoLookups=True

(3)设置系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为 true

(4)建议 JDK 使用 11.0.1、8u191、7u201、6u211 及以上的高版本

(5)限制受影响应用对外访问互联网 

 

上一篇:Apache Log4j 2 远程代码执行漏洞事件详情及修复方式


下一篇:log4j与slf4j整合