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.

ac49d65c005bdc7b723714ccff74ba3a.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 版本官方已经不再维护了。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题

九月十月百度人搜&#xff0c;阿里巴巴&#xff0c;腾讯华为小米搜狗笔试面试八十题 引言 自发表上一篇文章至今&#xff08;事实上&#xff0c;上篇文章更新了近3个月之久&#xff09;&#xff0c;blog已经停了3个多月&#xff0c;而在那之前&#xff0c;自开博以来的21个月每…

C++ exception类

语言本身或者标准库抛出的异常都是 exception 的子类&#xff0c;称为标准异常&#xff08;Standard Exception&#xff09;。你可以通过下面的语句来匹配所有标准异常&#xff1a; try{ //可能抛出异常的语句}catch(exception &e){ //处理异常的语句} 之所以使用引用…

拿了年终奖后,发现自己又拖后腿了?对不起,可能事实并没有那么糟糕...

全世界只有3.14 % 的人关注了爆炸吧知识不平凡的2020年早已过去了&#xff0c;打工人们已经跨过了2021年的门槛。2021年将会怎么样&#xff0c;那只有到2021年结束后我们才会知道。但我们的情绪常常毫无例外地会被“年终奖”这个关键词所扰动&#xff0c;无论在什么时候&#x…

JAVA-MyBatis ORM

MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。 iBATIS一词来源于“internet”和“abatis”的组合&#xff0c;是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects&#xff08;DAO&#xff09;&#xff0c;同时还提供一个利用这…

AMD and CMD are dead之KMD.js依赖可视化工具发布

使用 require("MyAapp.DepTree", function (DepTree) {DepTree(({renderTo: "holder",width: "820",height: "580",data: [{ "name": "System" },{ "name": "Util" },{ "name": &q…

WPF中的触发器(Trigger)

这节来讲一下WPF中的触发器——Trigger。触发器&#xff0c;是指在既定条件或者特殊场景下被触发&#xff0c;从而去执行一个操作。在WPF中&#xff0c;触发器可以分为以下几类&#xff1a;基本触发器(Trigger)&#xff1b;事件触发器(EventTrigger)&#xff1b;数据触发器(Dat…

数学之美番外篇:平凡而又神奇的贝叶斯方法

概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 记得读本科的时候&#xff0c;最喜欢到城里的计算机书店里面去闲逛&#xff0c;一逛就是好几个小时&#xff1b;有一次&#xff0c;在书店看到一本书&#xff0c;名叫贝叶斯方法。当时数学系的课程还没有学到概率统计…

linux red hat 安装svn

安装步骤如下&#xff1a;1、yum install subversion 2、输入rpm -ql subversion查看安装位置&#xff0c;如下图&#xff1a;我们知道svn在bin目录下生成了几个二进制文件。输入 svn --help可以查看svn的使用方法&#xff0c;如下图。3、创建svn版本库目录mkdir -p /var/svn/s…

驰骋表单设计器 设计表单案例演示

为什么80%的码农都做不了架构师&#xff1f;>>> 我们以客户提供如下原始的word表单样本&#xff0c;使用驰骋表单设计器制作表单的过程介绍如下:工业设计和创意需求登记表原始表单图 在ccform表单设计器中&#xff0c;设计如下&#xff1a; 驰骋表单设计器&#xf…

这个避孕套让生活更和谐……

1 三连暴击▼2 开塞露还能这样用&#xff1f;▼3 这真不是打架&#xff1f;▼4 送礼佳品&#xff0c;必拉黑神器&#xff01;▼5 孩子&#xff1a;爹妈&#xff0c;真的可以再考虑一下的......▼6 四只手才能拆的避孕套▼7 谭警官&#xff1a;莫挨我&#xff01;&#xff…

WPF GridControl控件的用法举例

01—前言WPF中自带的表格控件是DataGrid&#xff0c;但是格式并不是很美观&#xff0c;我们一般用Dev中类似的控件GridControl来取代&#xff0c;这个控件功能相当强大。WPF数据网格&#xff08;GridControl&#xff09;是一个数据感知控件&#xff0c;用于以不同的布局显示和编…

推荐我看过的几本好书给大家!(2)

继续从亚马逊盗图&#xff01;哈哈&#xff01; 这本书感觉很不错&#xff0c;对于算法&#xff0c;个人觉得还是需要掌握的&#xff0c;毕竟你不可能一辈子都做最底层的程序员吧&#xff0c;想要获得提升&#xff0c;一方面是经验的积累&#xff0c;另外一方面则是一种厚积薄发…

activemq安全设置 设置admin的用户名和密码

ActiveMQ使用的是jetty服务器, 打开conf/jetty.xml文件&#xff0c;找到 <bean id"securityConstraint" class"org.eclipse.jetty.http.security.Constraint"> <property name"name" value"BASIC" /> <p…

转:IOS开发之----Xcode非ARC项目中设置部分文件ARC支持

ARC是什么 ARC是iOS 5推出的新功能&#xff0c;全称叫 ARC(Automatic Reference Counting)。简单地说&#xff0c;就是代码中自动加入了retain/release&#xff0c;原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机制在 iOS 5/ Mac OS X 10.…

C# ActionT和 FuncT委托

除了为每个参数和返回类型定义一个新委托类型之外&#xff0c;还可以使用 Action<T> 和 Func<T>委托。泛型 Action<T>委托表示引用一个 void 返回类型的方法。这个委托类存在不同的变体&#xff0c;可以传递至多 16 种不同的参数类型。没有泛型参数的 Action…

linux学习-简单命令介绍及安装VMware Tools

常用简单命令介绍 ethernet以太网pts&#xff1a;模拟终端图形界面&#xff1a;CtrlAltF1 字符界面&#xff1a;CtrlAltF2-F6切换虚拟终端&#xff1a;&#xff08;本机操作&#xff09;# chvt 1-6关闭图形界面,在纯字符界面下操作&#xff1a; init 3打开图形界面&#xff…