当前位置:   article > 正文

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

spring framework url解析不当漏洞

漏洞描述

当应用程序使用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.4

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

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

其它已经不受官方支持的版本(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包如下:

  1. <!-- spring-web 相关 begin -->
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-web</artifactId>
  5. <version>5.3.32</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework</groupId>
  9. <artifactId>spring-webmvc</artifactId>
  10. <version>5.3.32</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework</groupId>
  14. <artifactId>spring-aop</artifactId>
  15. <version>5.3.32</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-beans</artifactId>
  20. <version>5.3.32</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework</groupId>
  24. <artifactId>spring-context</artifactId>
  25. <version>5.3.32</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework</groupId>
  29. <artifactId>spring-context-support</artifactId>
  30. <version>5.3.32</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework</groupId>
  34. <artifactId>spring-core</artifactId>
  35. <version>5.3.32</version>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework</groupId>
  39. <artifactId>spring-expression</artifactId>
  40. <version>5.3.32</version>
  41. </dependency>
  42. <dependency>
  43. <groupId>org.springframework</groupId>
  44. <artifactId>spring-jcl</artifactId>
  45. <version>5.3.32</version>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework</groupId>
  49. <artifactId>spring-jdbc</artifactId>
  50. <version>5.3.32</version>
  51. </dependency>
  52. <dependency>
  53. <groupId>org.springframework</groupId>
  54. <artifactId>spring-oxm</artifactId>
  55. <version>5.3.32</version>
  56. </dependency>
  57. <dependency>
  58. <groupId>org.springframework</groupId>
  59. <artifactId>spring-tx</artifactId>
  60. <version>5.3.32</version>
  61. </dependency>
  62. <!-- spring-web相关 end -->

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

项目启动正常

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/291954
推荐阅读
相关标签
  

闽ICP备14008679号