首页  普法课堂

关于Apache Log4j2 远程代码执行漏洞通风险提示

发布时间:2021-12-10 00:00:00 作者:admin

一、漏洞描述

Log4j是Apache的一个开源项目,通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。Apache Log4j2是 Log4j的升级版本,据分析,该漏洞产生的原因在于Log4j在记录日志的过程中会对日志内容进行判断,如果内容中包含了${,则Log4j会认为此字符属于可替换的变量,并且Log4j支持JNDI远程加载的方式替换变量值。此漏洞的危害等级很大,只要是调用了Log4j的日志记录功能,并且有用户可控的输入,就可能导致JNDI注入。

二、漏洞等级

      高危

三、影响范围 

Apache Log4j 2.x <= 2.15.0-rc1 版本均受影响。

Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等均受影响。

四、修复建议

a) 升级到最新版本:

1、升级Apache Log4j2所有相关应用到最新的log4j-2.15.0-rc2版本地址为:

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

2、升级已知受影响的应用及组件,如spring-boot-start-log4j2/Apache Solr/Apache Flink/Apache Druid

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、限制受影响应用对外访问互联

参考链接

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

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2