12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重。

Log4j2 是一个基于 Java 的日志记录工具。它重写了 Log4j 框架,引入了大量丰富特性,让用户可以控制日志信息输送的目的地为控制台、文件、GUI 组件等。同时通过定义每一条日志信息的级别,让使用者能够更加细致地控制日志的生成过程。

Log4j 是目前全球使用最广泛的 java 日志框架之一。该漏洞还影响着很多全球使用量前列的开源组件,如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等。因为该漏洞利用方式简单,一旦有攻击者利用该漏洞,就可以在目标服务器上执行任意代码,给被攻击者造成极大危害。

1.png

△ 图片源自互联网


漏洞细节

此次漏洞主要是 Log4j2 内含的 lookup 功能存在 JNDI 注入漏洞,该功能可以帮助开发者通过一些协议读取相应环境中的配置。漏洞触发方式非常简单,只要日志内容中包含关键词 ${,那么这里面包含的内容就可以作为变量进行替换,攻击者无需任何权限,可以执行任意命令。

2.png

△ 漏洞复现

此次漏洞影响的版本为:Apache Log4j 2.x <= 2.14.1

同时如果您使用了以下应用,也会被此次漏洞影响:

  • Spring-Boot-strater-log4j2

  • Apache Struts2

  • Apache Solr

  • Apache Flink

  • Apache Druid

  • ElasticSearch

  • flume

  • dubbo

  • logstash

  • kafka


漏洞修复

目前厂商已经发布了新版本 log4j-2.15.0-rc2,该版本已经修复了漏洞。希望大家能够尽快升级到新版本。

官方链接:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

如果您暂时不方便进行版本升级,您也可以通过以下方法进行应急处理,并在方便的时候尽快完成版本升级:

  • 修改 jvm 参数 -Dlog4j2.formatMsgNoLookups=true

  • 修改配置 log4j2.formatMsgNoLookups=True

  • 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

无论是前年 Apach Shiro 的 cookie 持久化参数  rememberMe 加密算法存在漏洞,还是去年 5 月的 Fastjson 远程代码执行漏洞通告。网络安全似乎总是存在各种各样的问题,但是发现漏洞并修复漏洞本身就是对安全进行的一次升级。停止不动的安全方式很快就会被攻破,只有持续不断地更新与升级才是真正的网络安全。