近日, Apache Log4j2 的远程代码执行漏洞细节被公开,该漏洞一旦被攻击者利用会造成严重危害。经过快速分析和确认,该漏洞影响范围极其广泛,危害极其严重,我们建议企业第一时间启动应急响应进行修复。
经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等众多组件与大型应用均受影响,鉴于此漏洞危害巨大,利用门槛极低,奇安信CERT建议用户尽快参考缓解方案阻止漏洞攻击。
此外,经过我们复现和验证,TDP 基于其自研的通用漏洞检测引擎,已于数月前支持对此次最新漏洞的检测,无需任何更新:
Apache Log4j 任意代码执行漏洞
漏洞名称 | Apache Log4j 任意代码执行漏洞 |
漏洞类型 | 代码执行 |
风险等级 | 紧急 |
漏洞ID | 暂无 |
公开状态 | 已发现 |
在野利用 | 已发现 |
漏洞描述 | Apache Log4j 是 Apache 的一个开源项目,通过定义每一条日志信息的级别,能够更加细致地控制日志生成过程。经过分析,Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。 |
参考链接 | https://github.com/apache/logging-log4j2 |
Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。漏洞复现如图所示:
此次受影响版本如下:
Log4j2版本 | 是否受影响 |
2.x<=2.14.1 | 是 |
可能的受影响应用包括但不限于如下:
- Spring-Boot-strater-log4j2
- Apache Struts2
- Apache Solr
- Apache Flink
- Apache Druid
- ElasticSearch
- flume
- dubbo
- Redis
- logstash
- kafka
公开程度:漏洞细节已公开
利用条件:无权限要求
交互要求:0 click
漏洞危害:高危、远程代码执行
影响范围:Log4j2.x <= 2.14.1
检测及修复方案
1、紧急缓解措施:
(1) 修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
(2) 修改配置log4j2.formatMsgNoLookups=True
(3) 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true2、检测方案:
(1)由于攻击者在攻击过程中可能使用 DNSLog 进行漏洞探测,建议企业可以通过流量监测设备监控是否有相关 DNSLog 域名的请求,微步在线的 OneDNS 也已经识别主流 DNSLog 域名并支持拦截。
(2)根据目前微步在线对于此类漏洞的研究积累,我们建议企业可以通过监测相关流量或者日志中是否存在“jndi:ldap://”、“jndi:rmi”等字符来发现可能的攻击行为。
3、修复方案:
检查所有使用了 Log4j2 组件的系统,官方修复链接如下:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
时间线
2021.07 微步TDP支持JNDI命令注入漏洞检测
2021.12.09漏洞细节被公开