Spring Boot、Spring Security升级、版本选择、安全漏洞说明

2年前 (2022) 程序员胖胖胖虎阿
347 0 0

文章目录

      • 一、概述
        • 依据一:官方主维护
        • 依据二:CVE-2022-22965
        • 依据三:CVE-2022-22978
      • 二、版本选择

一、概述

截止(2022-05-26),推荐Spring Boot 2.6.8及以上,如果使用jdk8则可以使用Spring Boot 2.5.14。

Springboot可以依据以下几点进行版本选择。

依据一:官方主维护

截止(2022-05-26)为止,Spring Boot 2.5 、2.6为官方主要维护版本。

发行说明 : https://github.com/spring-projects/spring-boot/wiki

依据二:CVE-2022-22965

0x01漏洞详情

Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。RCE(remotecommand/code exec cute),远端命令执行,相当于一个命令窗口。发生在2021年的Log4j的漏洞也有类似的状况。

0x02影响范围

  • Spring Framework < 5.3.18
  • Spring Framework < 5.2.20

0x03同时满足才会受影响

  • JDK9及以上版本
  • 使用Tomcat服务器
  • 以war部署运行
  • 使用了spring-webmvc或spring-webflux

0x04处置建议

将Springboot升级到2.6.6。

依据三:CVE-2022-22978

0x01漏洞详情

当SpringSecurity中使用RegexRequestMatcher进行权限配置,且规则中使用带点号的正则表达式时,未经授权的远程攻击者可通过构造恶意数据包绕过身份认证,导致配置的权限验证失效。

0x02影响范围

  • Spring Security 5.5.x < 5.5.7
  • Spring Security 5.6.x<5.6.4
  • SpringSecurity其他低版本同样受影响

0x03处置建议

升级到官方已发布的最新版本:
Spring Security 5.5.x升级至 5.5.7:
https://github.com/spring-projects/spring-security/releases/tag/5.5.7
Spring Security 5.6.x升级至5.6.4 ∶
https://github.com/spring-projects/spring-security/releases/tag/5.6.4

0x04参考链接

https://tanzu.vmware.com/security/cve-2022-22978

0x05版本依赖

Spring Boot Spring Security 是否受CVE-2022-22978影响
2.5.13 5.5.6
2.5.14 5.5.8 否(可用)
2.6.5 5.6.2
2.6.7 5.6.3
2.6.8 5.6.5 否(可用)

二、版本选择

截止(2022-05-26),推荐Spring Boot 2.6.8及以上,如果使用jdk8则可以使用Spring Boot 2.5.14。

  • 注意1: SpringBoot2.6以后需要手动设置循环引用。

    SpringBoot2.6 正式发布:循环依赖默认禁止。

    application.properties

    spring.main.allow-circular-references=true
    

    application.yml

    spring:
      main:
        allow-circular-references:true
    
  • 注意2: Spring Boot 2.5.14 版本默认 resources 为 3.2.0,编译报错,手动降低版本。

    问题:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources
    

    解决:pom.xml手动降低版本

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.7</version>
    </plugin>
    
  • 注意3: Spring Boot 2.5.14内置了netty相关依赖,如果在pom中配置了netty依赖,则会报已经包含了一个兼容版本。

    Correct the classpath of your application so that it contains a single, compatible version of io.netty.resolver.dns.DnsNameResolverBuilder
    

    解决:去掉pom.xml中netty依赖

相关文章

暂无评论

暂无评论...