继 Log4j 漏洞之后的又一“大”漏洞 —— Spring 框架漏洞
大聪明教你学Java
20
22
长按二维码
01
前言
就在昨天,我的同事突然问我:你在XX项目里的代码用 Spring 框架了吗?我看到这条消息的时候还是一头雾水(内心:我这个项目在搭建的时候用的是 Spring Boot,那肯定用到了 Spring 框架呀),我突然想到了前阵子刚发生的 Log4j 漏洞,心里突然一颤… 于是我给他回复:用到 Spring 框架了,是出什么漏洞了吗?紧接着,看了他给我回复的消息后便印证了我的猜测,果然是 Spring 框架出现漏洞了😱
万幸的是本次漏洞和我没什么关系,我是 Java8 的忠实爱好者,完美的规避了本次漏洞的影响,不过还是引起了我的好奇心,决定尝一尝 Spring 的瓜甜不甜🤭
02
Spring 框架漏洞
我果断打开了百度,输入“Spring 框架漏洞”关键字后敲下了回车键,准备安安稳稳的吃个瓜,但是查询结果并不尽如人意👇
于是我打开了国家信息安全漏洞共享平台,果然不出所料,CNVD(国家信息安全漏洞共享平台)发布了 Spring 框架远程命令执行漏洞的公告(CNVD-2022-23942)。
🍓漏洞描述🍓
Spring框架(Framework)是一个开源的轻量级J2EE应用程序开发框架,提供了IOC、AOP及MVC等功能,解决了程序人员在开发中遇到的常见问题,提高了应用程序开发便捷度和软件系统构建效率。2022年3月30日,CNVD平台接收到蚂蚁科技集团股份有限公司报送的Spring框架远程命令执行漏洞。由于Spring框架存在处理流程缺陷,攻击者可在远程条件下,实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。使用Spring框架或衍生框架构建网站等应用,且同时使用JDK版本在9及以上版本的,易受此漏洞攻击影响。CNVD对该漏洞的综合评级为“高危”。
🍓漏洞影响范围🍓
漏洞影响的产品版本包括:版本低于5.3.18和5.2.20的 Spring 框架或其衍生框架构建的网站或应用。
如果有些小伙伴不幸中招了,那么该如何解决本次的漏洞呢?我们可以从 Spring 官网找到答案👇
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
我们可以在 Spring 官网看到更加详细的漏洞描述,首先它为我们指出了如何判断自己的项目是否中招👇(本人英语水平相当有限,只能翻译个大概,各位小伙伴见笑了😂)
①在 JDK 9 或更高版本上运行
②Apache Tomcat 作为 Servlet 容器
③打包为传统的 WAR(与 Spring Boot 可执行 jar 相比)
④spring-webmvc 或 spring-webflux 依赖
⑤Spring Framework 版本 5.3.0 到 5.3.17、5.2.0 到 5.2.19 以及更早的版本
看到这我就可以确定了,这次出现的 Spring 漏洞和上次的 Log4j2 漏洞相比,只能说是小巫见大巫,完全不一个重量级~ 估计 “在JDK 9 或更高版本上运行” 这一条件就有很多小伙伴都不满足,小伙伴们也可以放心啦😊
如果真的不幸中招了,Spring 官方也给我们提供了几个有效的解决办法👇
解决方案
①最简单粗暴的办法 —— 将 JDK 版本降级到 JDK 8(该说不说,还是 JDK8 香~)
②如果使用了 Tomcat,可以选择将 Tomcat 进行升级(升级到 Apache Tomcat 10.0.20、9.0.62或8.5.78可以提供足够的保护),但是这个方法属于治标不治本,可以当作一个临时解决方案。
③升级 Spring Framework 版本,官方已经发布了 Spring Framework 5.3.18和 5.2.20 ,可以解决该漏洞
温馨提示
这次的 Spring 的漏洞再次提醒我们:“千万不要随意升级 JDK 版本!!”
03
结语
本人经验有限,有些地方可能讲的没有特别到位,如果文章中有错误,欢迎大家留言指正;若您有更好、更独到的理解,欢迎您留下宝贵想法。
在遭受打击时,记起你的珍贵,抵抗恶意;
在处于迷茫时,坚信你的珍贵,抛开蜚语;
爱你所爱,行你所行
听从你心,无问东西
本人经验有限,有些地方可能讲的没有特别到位,如果您在阅读的时候想到了什么问题,欢迎在评论区留言,我们后续再一一探讨
CSDN主页:https://blog.csdn.net/qq_39134664