当前位置: 首页 > news >正文

spring boot 修复 Spring Framework URL解析不当漏洞(CVE-2024-22243)

漏洞描述

当应用程序使用UriComponentsBuilder来解析外部提供的URL(如通过查询参数)并对解析的URL的主机执行验证检查时可能容易受到Open重定向攻击和SSRF攻击,导致网络钓鱼和内部网络探测等。

受影响产品或系统

6.1.0 <= Spring Framework <= 6.1.3

6.0.0 <= Spring Framework <= 6.0.16

5.3.0 <= Spring Framework <= 5.3.31

官方建议修复方案

Spring Framework 版本6.1.x 用户:升级到 6.1.3

Spring Framework 版本6.0.x 用户:升级到 6.0.16

Spring  Framework 版本5.3.x 用户:升级到 5.3.31

其它已经不受官方支持的版本(5.1.x,5.2.x)同样受到影响,更新到受官方支持的安全版本。

那么springboot项目我们该怎么修复该漏洞呢?

查看 springboot的版本,只有最新的3.1.93.2.3 修复了该漏洞。

如果现有项目的大版本是3.x,直接升级即可,但是有些老项目还停留在2.x的版本,官方并没有针对2.x发布新版本,从2.x直接升级到3.x,代价又比较大。

一开始我们尝试直接替换spring-web的版本,但是只替换这一个包的话项目启动会报错,通过实践和反复尝试,我们对spring相关的jar包都进行了覆盖,这样可以保持springboot的版本号不变。具体覆盖的jar包如下:

         <!-- spring-web 相关 begin --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jcl</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.3.32</version></dependency><!-- spring-web相关 end -->

只需要将上述依赖添加到pom.xml文件中即可覆盖springboot默认的版本,替换后效果如下:

项目启动正常

如果启动后访问接口报错,需要更换跨域配置,将corsConfiguration.addAllowedOrigin("*")替换为corsConfiguration.addAllowedOriginPattern("*");

好了,上面的操作都完成后,漏洞就修复了,接下来有需要的话可以慢慢的升级到大版本!

相关文章:

  • LeetCode第125场双周赛个人题解
  • 飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)
  • mysql 常用命令练习
  • 初识C语言—常见关键字
  • NLog条件配置——实现将包含某个特定字符串日志写入指定文件
  • 蓝桥杯备战刷题three(自用)
  • MapStruct 教程
  • 【Java面试题】SpringBoot与Spring的区别
  • Programming Abstractions in C阅读笔记:p308-p311
  • 暗九之凶险,更甚于明九
  • K8S部署postgresql
  • Node.js_基础知识(CommonJS模块化)
  • Hololens 2应用开发系列(1)——使用MRTK在Unity中设置混合现实场景并进行程序模拟
  • 23端口登录的Telnet命令+传输协议FTP命令
  • Django 表单
  • HTML5新特性总结
  • iOS 系统授权开发
  • JavaScript DOM 10 - 滚动
  • JSONP原理
  • learning koa2.x
  • Mysql数据库的条件查询语句
  • oldjun 检测网站的经验
  • Python连接Oracle
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue小说阅读器(仿追书神器)
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 微信小程序:实现悬浮返回和分享按钮
  • 小程序测试方案初探
  • 学习ES6 变量的解构赋值
  • 数据库巡检项
  • ​虚拟化系列介绍(十)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • $(function(){})与(function($){....})(jQuery)的区别
  • (02)vite环境变量配置
  • (30)数组元素和与数字和的绝对差
  • (C语言)fgets与fputs函数详解
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (规划)24届春招和25届暑假实习路线准备规划
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)jdk与jre的区别
  • (转)大型网站架构演变和知识体系
  • .NET Reactor简单使用教程
  • .net 发送邮件
  • .NET程序员迈向卓越的必由之路
  • .net和jar包windows服务部署
  • .pop ----remove 删除
  • :O)修改linux硬件时间
  • @RequestMapping用法详解
  • [] 与 [[]], -gt 与 > 的比较
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色