Logback也爆漏洞了,总结下最近log相关的几个漏洞

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Logback也爆漏洞了,总结下最近log相关的几个漏洞

大家好,我是君哥,周末又要结束了。

前些天 Apache Log4j2 接连报了几个重大漏洞,好在我们的系统使用的 logback,可当我们正庆幸的时候,logback 也爆出漏洞了。今天我们一起来看一下这几个漏洞。

CVE-2021-42550

先看一下官方的漏洞描述:

In logback version 1.2.7 and prior versions, an attacker with the required privileges to edit configurations files could craft a malicious configuration allowing to execute arbitrary code loaded from LDAP servers.

The vulnerability is considered to pose a lesser threat than log4shell because it requires access to logback's configuration file by the attacker, sign of an already compromised system.This CVE-2021-42550 is intended to prevent an escalation of an existing flaw to a higher threat level.

微信图片_20221213104639.png首先让我们松一口气的是,logback 的这个漏洞不像 log4j 那样严重。如果是 SpringBoot 项目,没有做日志配置的话,默认使用的就是 logback。

logback 官方的修复速度也是非常给力,短时间内发布了 5 个版本:

  • 14th of December, 2021, Release of version 1.2.8
  • 16th of December, 2021, Release of version 1.3.0-alpha11
  • 16th of December, 2021, Release of version 1.2.9
  • 22nd of December, 2021, Release of version 1.3.0-alpha12
  • 23rd of December, 2021, Release of version 1.2.10

从上面官方的截图我们可以看到,有两个方法可以避开这个漏洞

  • logback 版本升级到 1.2.9
  • 把 logback.xml 文件配置为只读

SpringBoot 项目也跟着 logback 的升级做了升级,比如  SpringBoot v2.6.2 版本就把 logback 升级到了 1.2.9。

但是对于真实的系统环境,升级 SpringBoot 版本牵扯到的测试太多了,要快速修复还是升级一下 logback 版本最快。






<dependency>   <groupId>ch.qos.logback</groupId>   <artifactId>logback-classic</artifactId>   <version>1.2.9</version></dependency>

CVE-2021-44228

这个漏洞的另一个编号是 CNVD-2021-95914。

Log4j2 日志组件在处理程序日志记录时存在 JNDI 注入缺陷,攻击者可以利用该漏洞,获得目标服务器权限,向目标服务器发送恶意数据,在目标服务器任意代码执行。这个攻击主要针对有外网访问的应用,如果没有外网访问,可以不用太担心。

影响范围:2.0 <= Apache log4j <Log4j-2.15.0

修复措施:

  • 升级 Log4j2 版本到 2.16.0
  • 改用日志框架,使用 Log4j 或者 logback
  • 添加 jvm 启动参数 -Dlog4j2.formatMsgNoLookups=true
  • 在应用 classpath 下添加配置文件 log4j2.component.properties,文件内容为 log4j2.formatMsgNoLookups=true
  • 升级 JDK 版本,使用 11.0.1、8u191、7u201、6u211 及以上的高版本
  • 禁用 JNDI,比如在 spring.properties 里添加 spring.jndi.ignore=true
  • 部署使用第三方防火墙产品进行安全防护,并更新 WAF、RASP 规则

可以看到,最快的方式就是添加 jvm 参数然后重启服务。

CVE-2021-45046

CVE-2021-44228 的一种形式,如启 Log4j2 用日志配置查找(例如,$${ctx:loginId})或上下文映射模式(%X、%mdc或%MDC)时,将允许远程攻击者使用JNDI查找模式加载恶意类,从而导致远程代码执行或信息漏洞等风险。

这个漏洞只对使用 log4j-core 的应用受影响。

影响范围:2.0 <= Apache log4j <Log4j-2.15.0

建议:将 Log4j2 升级到 1.17.0。

CVE-2021-45105

由于 Log4j2 某些特殊配置,使用非默认的模式布局和上下文查找(例如,$${ctx:loginId})时,攻击者可以通过构造包含递归查找数据包的方式,控制线程上下文映射 (MDC),导致 StackOverflowError 产生并终止进程,实现拒绝服务攻击。

这个漏洞只对使用 log4j-core 的应用受影响。

影响范围:2.0 <= Apache log4j <Log4j-2.16.0

建议:将 Log4j2 升级到 1.17.0。

CVE-2021-4104

这个攻击是针对 Log4j1.x 而不是 Log4j2。

当应用程序启用了 JMSAppende,且攻击者可以控制 JMSAppender 添加 JMSBroker 时,将允许远程攻击者进行代码执行攻击。

影响范围:Log4j1.x版本

因 2015 年 8 月起官方已停止维护  Log4j1.x 版本组件,因此不会提供 Log4j1.x 的版本更新,可以从类路径中移除JMSAppender 类进行修复。命令如下:


zip-q-dlog4j-*.jarorg/apache/log4j/net/JMSAppender.class

总结

上面的漏洞都是跟日志组件相关的,官方已经修复。

如果使用 logback,只要把版本升级到 1.2.9 之上就可以。

如果使用了 log4j2,把版本升级到最新版本,也就是 2.17.0 就可以了。

如果使用 log4j,可以从 classpath 中移除 JMSAppender,但这不是长久之计,建议还是升级到 log4j2 或者改用 logback,毕竟 log4j 1.x 版本官方已经不再维护了。

最后,作为程序员,要时刻关注系统中的技术栈,关注新版本修复的问题是否对系统有影响。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
356 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
86 5
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
334 3
|
1月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
45 1
|
2月前
|
存储 Java Android开发
Android|记一个导致 logback 无法输出日志的问题
在给一个 Android 项目添加 logback 日志框架时,遇到一个导致无法正常输出日志的问题,这里记录一下。
42 2
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
139 1
|
4月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
4月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
4月前
|
XML Java API
Java日志通关(四) - Logback 介绍
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第四篇。
|
4月前
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。

热门文章

最新文章