校园网24小时服务电话:0431-85166000    


大数据和网络管理中心
当前位置: 首页 >> 网络安全 >> 正文
关于进一步排查 APACHE LOG4J多个最新高危漏洞 (CVE-2021-44228、CVE-2021-4104、CVE-2021-45046、CVE-2021-45105)的通知
发布日期:2021-12-24 浏览次数:

校内各有关单位:


一、漏洞概述

Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。

12月9日,网上披露Apache Log4j远程代码执行漏洞(CVE-2021-44228),由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特别构造的数据请求包,可在目标服务器上执行任意代码。漏洞PoC已公开,默认配置即可进行利用,该漏洞影响范围极广,建议相关用户尽快采取措施进行排查与防护。

尽管距离第一个漏洞曝出已经过去十多天,但修复的工作仍未停止。 Log4j2还在不断“爆雷”。

12月10日,Apache Log4j 2.15.0-rc1 版本仅修复LDAP和增加了host白名单,非默认配置下可以被绕过利用;官方对此发布了Apache Log4j 2.15.0-rc2版本(与2.15.0稳定版相同)进行修复,增加了对urI异常的处理。

12月12日,官方又发布了Apache Log4j 2.15.1-rc1版本,在默认配置中禁用了JNDI和Message lookups功能。

12月13日,官方再发布了Apache Log4j 2.16.0-rc1(与2.16.0稳定版相同)版本,此版本在2.15.1-rc1的基础上,移除掉了存在漏洞的Message lookups功能。

12月14日,官方发布通告,披露Apache Log4j反序列化代码执行漏洞(CVE-2021-4104),Apache Log4j 1.2.x版本在特定配置时,JMSAppender 容易受到不可信数据的反序列化,当攻击者具有修改 Log4j 配置的权限时,可以使用特定配置利用 JMSAppender 执行 JNDI 请求,从而造成远程代码执行。

12月14日,官方发布了Apache Log4j 2.12.2-rc1(与2.12.2稳定版相同)版本,默认配置禁用了JNDI,并移除掉存在漏洞的Message lookups功能,此版本支持Java 7。

12月15日,官方发布通告,披露Apache Log4j的DoS漏洞(CVE-2021-45046),当log4j配置使用非默认模式布局和上下文查找(例如$${ctx:loginId})或线程上下文映射模式(%X、%mdc或%MDC)时,使用JNDI查找模式制作恶意输入数据从而导致拒绝服务(DoS) 攻击。Apache Log4j 2.15.0版本中针对CVE-2021-44228的漏洞修复方式不完善,在特定配置时受此漏洞影响。

12月17日,Apache Log4j的DoS漏洞更新为代码执行漏洞(CVE-2021-45046),Apache Log4j 2.15.0中针对CVE-2021-44228的修复在某些非默认配置中不完整,当日志配置使用带有上下文查找的非默认模式布局(例如,$${ctx:loginId})时,控制线程上下文映射 (MDC) 输入数据的攻击者可以使用 JNDI 查找模式制作恶意输入数据,从而实现信息泄漏、RCE(远程代码执行)和 LCE(本地代码执行)攻击,CVSS评分从3.7上升为9.0分。

12月18日,官方发布了Apache Log4j 2.17.0版本,披露Apache Log4j存在Dos漏洞(CVE-2021-45105),由于log4j没有防止在自引用查找中不受控制的递归,当日志配置使用带有上下文查找的非默认模式布局(例如,$${ctx:loginId})时,控制线程上下文映射 (MDC) 输入数据的攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError 终止进程,造成DoS攻击。

12月22日,官方发布了Apache Log4j 2.12.3与Apache Log4j 2.3.1版本,修复了本次的安全漏洞,并支持在Java 7与Java 6环境下的使用。


参考链接:

https://logging.apache.org/log4j/2.x/security.html

https://www.mail-archive.com/announce@apache.org/msg06936.html


二、影响范围

受影响版本

CVE-2021-44228:

2.0-beta9 <= Apache Log4j <= 2.3

2.4 <= Apache Log4j <= 2.12.1

2.13.0<= Apache Log4j <= 2.15.0-rc1


CVE-2021-45046:

2.0-beta9 <= Apache Log4j <= 2.3

2.4 <= Apache Log4j <= 2.12.1

2.13.0<= Apache Log4j <= 2.15.0-rc2(2.15.0稳定版)

注:只有 log4j-core jar文件受此漏洞影响。


CVE-2021-45105:

2.0-alpha1 <= Apache Log4j <=2.3

2.4 <= Apache Log4j <= 2.12.2-rc1(2.12.2稳定版)

2.13.0<= Apache Log4j <= 2.16.0

注:只有 log4j-core jar文件受此漏洞影响。


CVE-2021-4104:

供应链影响范围:

经不完全统计,直接和间接引用Log4j的开源组件共计超过17万个;

log4j的1~4层引用关系:直接引用log4j的组件有7050个,第二层引用的超过3万个,第三层超过9万个,第四层超过16万个,总计有173200+个开源组件受Log4j漏洞影响。


已知受影响应用及组件:

VMware大部分产品

Jedis

Logging

Logstash

HikariCP

Hadoop Hive

ElasticSearch

Apache Solr

Apache Struts2

Apache Flink

Apache Druid

Apache Log4j SLF4J  Binding

spring-boot-strater-log4j2

Camel :: Core

JBoss  Logging 3

JUnit Vintage Engine

WSO2 Carbon Kernel  Core


直接引用log4j的组件可参考如下链接:

https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1


不受影响版本

Apache Log4j 2.17.0-rc1(与2.17.0稳定版相同)

Apache Log4j 2.12.3-rc1(与2.12.3稳定版相同)

Apache Log4j 2.3.1-rc1(与2.3.1稳定版相同)

注:2.17.0支持Java 8及以上,2.12.3支持Java 7,2.3.1支持Java 6。


三、漏洞检测

(一)人工检测

1.相关用户可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使用了存在漏洞的组件,若存在相关Java程序包,则很可能受漏洞影响。

2. 若程序使用Maven打包,可查看项目的pom.xml文件中是否存在下图所示的相关字段,若版本号不是安全版本,则应用受漏洞影响。

3.若程序使用gradle打包,可查看build.gradle编译配置文件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号不为安全版本,则应用受漏洞影响。


(二)攻击排查

攻击者在利用漏洞前通常采用dnslog方式进行扫描、探测,常见的漏洞利用方式可通过应用系统报错日志中的”javax.naming.CommunicationException”、”javax.naming.NamingException: problem generating object using object factory”、”Error looking up JNDI resource”关键字进行排查。

四、漏洞防护

(一)官方升级

目前官方已针对上述漏洞发布多个修复版本,不同版本更新内容略有不同,受影响用户可根据不同需求选择对应的版本升级,下载链接:https://github.com/apache/logging-log4j2/tags或https://logging.apache.org/log4j/2.x/download.html

Apache Log4j版本号

版本更新说明

Apache Log4j 2.15.0-rc1

修复LDAP和增加host白名单,手动开启Lookup功能时可被绕过,且受CVE-2021-45046与CVE-2021-45105影响。

Apache Log4j 2.15.0-rc2

增加了对urI异常的处理,进一步修复CVE-2021-44228漏洞。但受CVE-2021-45046与CVE-2021-45105影响。

Apache Log4j 2.15.0稳定版

增加了对urI异常的处理,进一步修复CVE-2021-44228漏洞。但受CVE-2021-45046与CVE-2021-45105影响。

Apache Log4j 2.15.1-rc1

默认配置禁用了JNDI和Message lookups功能。但受CVE-2021-45105影响。

Apache Log4j 2.16.0-rc1

默认配置禁用JNDI功能,并完全移除Message lookups功能,但受CVE-2021-45105影响。

Apache Log4j 2.16.0稳定版

默认配置禁用JNDI功能,并完全移除Message lookups功能,但受CVE-2021-45105影响。

Apache Log4j 2.17.0-rc1

对日志配置中的字符串查找解析进行限制,删除对 LDAP 协议的支持,支持Java 8 及以上版本。

Apache Log4j 2.17.0稳定版

对日志配置中的字符串查找解析进行限制,删除对 LDAP 协议的支持,支持Java 8 及以上版本。

Apache Log4j 2.12.2-rc1

默认配置禁用JNDI功能,并移除Message lookups功能,删除对 LDAP 协议的支持,但受CVE-2021-45105影响。

Apache Log4j 2.12.2稳定版

默认配置禁用JNDI功能,并移除Message lookups功能,删除对 LDAP 协议的支持,但受CVE-2021-45105影响。

Apache Log4j 2.12.3-rc1

对日志配置中的字符串查找解析进行限制,删除对 LDAP 协议的支持,修复已知的安全漏洞。该版本支持Java 7。

Apache Log4j 2.12.3稳定版

对日志配置中的字符串查找解析进行限制,删除对 LDAP 协议的支持,修复已知的安全漏洞。该版本支持Java 7。

Apache Log4j 2.3.1-rc1

修复本次的安全漏洞,该版本支持Java 6。

Apache Log4j 2.3.1稳定版

修复本次的安全漏洞,该版本支持Java 6。

注: 1. 建议受影响用户将Apache Log4j所有相关应用升级到Apache Log4j 2.17.0(稳定版)或Apache Log4j 2.17.0-rc1(测试版)。

2. 推荐优先选择稳定版升级,Java 7环境的用户可升至Apache Log4j 2.12.3修复,Java 6环境的用户可升至Apache Log4j 2.3.1修复。

3. 官方在Apache Log4j 2.15.0-rc1版本中已将log4j2.formatMsgNoLookups默认设置为true,在不手动开启Lookup功能的情况下,Log4j 2.15.0-rc1版本不受CVE-2021-44228漏洞的影响。

4. 防止升级过程出现意外,建议相关用户在备份数据后再进行操作。

5. 升级供应链中已知受影响的应用及组件:见前文《二、影响范围》的供应链影响范围。

(二)临时防护措施

若相关用户暂时无法进行升级操作,可先用下列措施对上述漏洞进行临时缓解:


Apache Log4j远程代码执行漏洞(CVE-2021-44228)临时防护:

1. 使用下列命令,移除log4j-core包中的JndiLookup 类文件:

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

注:此措施适用于除Apache Log4j 2.16.0外任何受影响的2.X版本。

2. 添加jvm参数启动:-Dlog4j2.formatMsgNoLookups=true  

3. 在应用的classpath下添加log4j2.component.properties配置文件,文件内容为:log4j2.formatMsgNoLookups=true  

4. 设置系统环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS=true

注:当Apache Log4j >= 2.10版本时,可使用2、3、4的任一措施实现相同效果。

5. 对于2.17<= Apache Log4j <= 2.14.1的版本,可在PatternLayout配置中使用%m{nolookups}、%msg{nolookups}、%message{nolookups}对漏洞进行缓解。

6.采用人工方式禁用JNDI,例:在spring.properties中添加spring.jndi.ignore=true

7. 建议使用JDK在11.0.1、8u191、7u201、6u211及以上的高版本,可在一定程度上缓解代码执行的利用。

8. 限制受影响应用对外访问互联网,并在边界对dnslog相关域名的访问进行检测。


部分公共dnslog平台如下:

ceye.io

dnslog.link

dnslog.cn

dnslog.io

tu4.org

burpcollaborator.net

s0x.cn


Apache Log4j JMSAppender 反序列化代码执行漏洞(CVE-2021-4104)临时防护:

1)注释掉或删除 Log4j 配置中的 JMSAppender。

2)使用下列命令,从log4j jar包中删除 JMSAppender 类文件:

zip -q -d log4j-*.jar org/apache/log4j/net/JMSAppender.class

3)限制系统用户对应用程序平台的访问,以防止攻击者修改 Log4j 的配置。

Apache Log4j 远程代码执行漏洞(CVE-2021-45046)临时防护:

使用下列命令,移除log4j-core包中的JndiLookup 类文件:

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

注:此措施适用于除Apache Log4j 2.16.0外任何受影响的2.X版本。


Apache Log4j Dos漏洞(CVE-2021-45105)临时防护:

1)在日志记录配置的 PatternLayout 中,用线程上下文映射模式(%X、%mdc 或 %MDC)替换 ${ctx:loginId} 或 $${ctx:loginId} 等上下文查找。

2)在配置中删除对上下文查找的引用,如 ${ctx:loginId} 或 $${ctx:loginId}。


五、工作要求

由于该次漏洞具有危害程度高、利用难度低、影响范围大的特点。请各单位持续关注漏洞最新情况,及时修复相关漏洞风险,防范遏制重大网络安全事件的发生。


参考网站(绿盟科技):http://blog.nsfocus.net/apache-log4j-cve-2021-44228-cve-2021-4104-cve-2021-45046-cve-2021-45105%e5%a4%84%e7%bd%ae%e6%89%8b%e5%86%8c/



联系人: 李振建 0431-85168327-8008


大数据和网络管理中心

2021年12月24日


上一条:关于做好寒假期间网络与信息... 下一条:关于防范钓鱼邮件的提醒(二)

关闭

服务电话

白天:0431-85166000
   0431-85166001
   0431-85166002

24小时:0431-85166000


业务办理

师生办事大厅

(学生):0431-85166474

(教工):0431-85167136

联系我们

Email:nic@jlu.edu.cn

地址:长春市朝阳区前进大街2699号

吉林大学大数据和网络管理中心