LOADING STUFF...

Apache Log4j2 远程代码执行漏洞排查和修复建议

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程序包,说明很有可能存在漏洞。

Apache Log4j2 远程代码执行漏洞排查和修复建议

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 及以上的高版本。

官方文档:

https://logging.apache.org/log4j/2.x/maven-artifacts.html

原文链接:https://www.cnblogs.com/lianglab/p/15673729.html
本文来源 爱码网,其版权均为 原网址 所有 与本站无关,文章内容系作者个人观点,不代表 本站 对观点赞同或支持。如需转载,请注明文章来源。

© 版权声明

相关文章