Log4j2 再爆雷

Log4j2 这是没完没了了,栈长以为 Log4j 2.16.0 是最终终结版本了,没想到才过多久又爆雷了:

log4j2_log4j2漏洞原理_log4j2使用

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

log4j2使用_log4j2_log4j2漏洞原理

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

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

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

安全漏洞:CVE-2021-45105漏洞摘要

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

log4j2_log4j2使用_log4j2漏洞原理

该漏洞已在支持 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

最新正式版本下载:

最新 Maven 依赖:


    org.apache.logging.log4j
    log4j-core
    2.17.0

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


  2.17.0

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

另外,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 个漏洞了:

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

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

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

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

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

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注