Log4j2 再爆雷,Log4j v2.17.0 横空出世。。。

简介: Log4j2 这是没完没了了,栈长以为《玩大了!Log4j 2.x 再爆雷。。。》 Log4j 2.16.0 是最终终结版本了,没想到才过多久又爆雷了:

Log4j2 再爆雷

Log4j2 这是没完没了了,栈长以为《玩大了!Log4j 2.x 再爆雷。。。》 Log4j 2.16.0 是最终终结版本了,没想到才过多久又爆雷了:


image.png


前两天栈长还说 Log4j 2.16.0 是最安全的版本,没想到这么快就又打脸了,Log4j 2.17.0 横空出世。。。


image.png


又来了。。Log4j2 这是中了新冠的毒?


这次又爆出来新的 DOS 拒绝服务攻击漏洞。。


如果你想关注和学习最新、最主流的 Java 技术,可以持续关注公众号Java技术栈,公众号第一时间推送。


安全漏洞:CVE-2021-45105

漏洞摘要

Log4j 团队又获悉了一个重要的安全漏洞 CVE-2021-45105:

image.png

CVE-2021-45105 拒绝服务攻击漏洞

安全等级 高

影响版本 Log4j2 2.0-alpha1 到 2.16.0

该漏洞已在支持 Java 8+ 版本的 Log4j 2.17.0 中得到解决,请尽快升级。


漏洞详情

因没有防止自引用 lookups 的不受控制的递归,当日志配置使用带有上下文 Lookup 的非默认模式,例如:


$${ctx:loginId}


此时,攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError 错误而终止进程,这也就是 DOS(Denial of Service)拒绝服务攻击。


从 Log4j 2.17.0 版本开始,只有配置中的 lookup 字符串才允许递归扩展,另外,在任何其他用法中,仅解析最顶级的 lookup,不解析任何嵌套的 lookups。


解决方案

1、升级版本

立马升级到最新版本:Log4j 2.17.0


最新正式版本下载:


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


最新 Maven 依赖:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.0</version>
</dependency>

spring-boot-starter-log4j2 尚未更新,可以先覆盖其内置版本:

<properties>
  <log4j2.version>2.17.0</log4j2.version>
</properties>

Spring Boot 基础就不介绍了,推荐下这个实战教程:


https://github.com/javastacks/spring-boot-best-practice


另外,Spring Boot 也在跟进此漏洞,界时新版本可以连带解决,等新版本发布,栈长再给大家解读,公众号Java技术栈第一时间推送,不要走开哦。


2、临时解决

如果你不想升级版本,可以考虑使用以下 2 种临时解决方案:


1)在 PatternLayout 日志配置中,替换上下文 Lookups 中的 ${ctx:loginId} 或者 $${ctx:loginId} 为线程上下文映射模式(%X, %mdc, or %MDC)。


2)或者,删除对上下文 Lookups 中对 ${ctx:loginId} or $${ctx:loginId} 的引用,它们一般来自应用程序外部,如 HTTP Header 或用户输入。


总结

Log4j2 最近是魔怔了??


一直在解决漏洞,连续发版,从最开始的 Log4j 2.15.0 到现在最新 2.17.0,大大小小的版本已经发了 10 个了,影响的周期已经接近两周了,目前还没看到收尾的迹象。。


这次应该是爆出来的第 4 个漏洞了:


CVE-2021-45105(拒绝服务攻击漏洞,最新!)

CVE-2021-45046(远程代码执行漏洞)

CVE-2021-44228(远程代码执行漏洞)

信息泄漏漏洞(安全公司 Praetorian 发现)

后面 3 个在 Log4j 2.16.0 中已经得到解决,最新的请升级 2.17.0!!!


这是不是最后一次版本不得而知,总之这个版本是必须升级的,或检查配置,使用临时解决方案,后续进展栈长也会第一时间跟进,关注公众号Java技术栈,公众号第一时间推送。


这也不能怪 Log4j2,详细可阅读:


Log4j2 维护者发声:没有工资,还要挨骂!!(我真是醉了!)


所以,用开源就要接受开源可能带来的影响,也不能责备开源人,都是成年人了,用不用是自己的选择,哪款产品没有漏洞呢?哪怕是商用产品。


相关文章
|
4月前
|
Java Spring
spring boot 配置log4j 日志
spring boot 配置log4j 日志
69 0
|
3月前
|
Java Spring
【Spring Boot】logback和log4j日志异常处理
【1月更文挑战第25天】【Spring Boot】logback和log4j日志异常处理
|
5月前
|
XML JSON Java
最牛逼 Java 日志框架—Log4j2,性能无敌,横扫对手
Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
199 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
1天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
7 0
|
26天前
|
监控 Java 测试技术
日志框架到底是Logback 还是 Log4j2
日志框架到底是Logback 还是 Log4j2
18 0
QGS
|
3月前
|
Java 数据库连接 Apache
Springboot日志框架logback与log4j2
Springboot日志框架logback与log4j2
QGS
38 0
|
3月前
|
Java Apache 数据库
【日志技术】LOG4J / LOG4J2
【1月更文挑战第14天】Log4j是Apache下的一款开源的日志框架,通过在项目中使用 Log4J,我们可以控制日志信息输出到控 制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以 更灵活的控制日志的输出过程。方便项目的调试。
|
3月前
|
Java
log4j:WARN Please initialize the log4j system properly.
log4j:WARN Please initialize the log4j system properly.
|
4月前
|
XML Java Maven
【Log4j2】Spring 整合 Log4j2 日志框架
【Log4j2】Spring 整合 Log4j2 日志框架
36 0