概述
Apache Log4j 2存在任意代码执行漏洞,由于Apache Log4j 2 新增的 lookup 功能未对输入进行严格的判断,存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
Apache log4j 2是一款开源的Java日志记录框架,提供方便的日志记录,通过定义每一条日志信息的级别,能够更加细致地控制日志生成过程,以便用于编写程序时进行调试,在项目上线后出现状况时也可根据日志记录来判断原因,被广泛大量用于业务系统开发环境中。经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等众多组件与大型应用均受影响,该漏洞无需授权即可远程代码执行,一旦被攻击者利用会造成严重后果,影响范围覆盖各行各业,危害极其严重,请全省各单位高度重视,迅速自查修复漏洞,以防遭受黑客攻击。
漏洞详情
该组件存在Java JNDI注入,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
危害等级:严重
影响范围
受影响版本:
Apache Log4j 2.x <= 2.15.0-rc1
已知受影响应用及组件:
Apache Solr
Apache Flink
Apache Druid
srping-boot-strater-log4j2
不受影响版本:
Apache log4j-2.15.0-rc2
自主检测
1、相关用户可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使用了存在漏洞的组件,若存在相关Java程序包,则很可能存在该漏洞。
2、若程序使用Maven打包,查看项目的pom.xml文件中是否存在下图所示的相关字段,若版本号为小于2.15.0,则存在该漏洞。
3、若程序使用gradle打包,可查看build.gradle编译配置文件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号为小于2.15.0,则存在该漏洞。
解决方案
该漏洞利用门槛极低,一旦被攻击者利用将造成严重后果,影响范围覆盖全行业,危害极其严重,请各单位迅速组织排查本单位的重要信息系统是否存在使用Log4j框架的情况。如存在相关情况,请及时参考以下解决方案开展整改加固及安全监测工作尽迅速修复漏洞:
攻击排查
1、目前攻击者主要采用dnslog方式进行扫描、探测,常见的漏洞利用方式可通过应用系统报错日志中的
javax.naming.CommunicationException
javax.naming.NamingException: problem generating object using object factory
Error looking up JNDI resource
关键字进行排查。
2、攻击者发送的数据包中可能存在“${jndi:}”字样,建议使用全流量或WAF设备进行检索排查。
修复建议
1. 尽快通过参考链接中官网地址升级到最新版本:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
2. 配置网络防火墙,禁止系统主动外连网络,包含不限于DNS、TCP/IP、ICMP。
3. 升级已知受影响的应用及组件,如srping-boot-strater-log4j2、ApacheSolr、Apache Flink、Apache Druid。
4. 排查日志集中管理服务器,以及基于java开发的商业软件,以及其他可能存在隐患的基础环境。
5.紧急加固缓解措施:
① 设置参数:
log4j2.formatMsgNoLookups=True
② 修改JVM参数:
-Dlog4j2.formatMsgNoLookups=true
③ 系统环境变量:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
④ 禁止 log4j2 所在服务器外连