美文网首页
Spring 官宣高危漏洞 springboot 2.6.6 已

Spring 官宣高危漏洞 springboot 2.6.6 已

作者: IT祖师爷 | 来源:发表于2022-04-11 13:58 被阅读0次

    前几天爆出来的 Spring 漏洞,刚修复完又来?

    漏洞CVE-2022-22965

    漏洞名称远程代码执行漏洞

    严重级别高危

    影响范围Spring Framework

    - 5.3.0 ~ 5.3.17

    - 5.2.0 ~ 5.2.19

    - 老版本及其他不受支持的版本

    这次是高危,必须引起重视

    用户可以通过数据绑定的方式引发远程代码执行 (RCE) 攻击漏洞,触发的前提条件如下:

    JDK 9+

    Apache Tomcat(war 包部署形式)

    Spring MVC/ Spring WebFlux 应用程序

    使用 Spring Boot 开发一般都是打成 jar 包,默认内嵌 Tomcat 形式,这对使用 Docker/ 微服务这种应用特别合适,但也可以切换为 war 包部署,但很少使用,但也不是没有,比如说一般的传统项目,为了兼容老环境,或者运维统一维护 Tomcat 环境,可能也会使用 war 包部署。

    所以,如果你使用的是默认的 Spring Boot 可执行 jar 包默认内嵌 Tomcat 部署,则不受影响,但由于这个漏洞的普遍性,可能还有其他方式进行利用。。难道这就是 Early Announcement 的含义?还来,真要搞疯了!

    如果你想关注和学习最新、最主流的 Java 技术,可以持续关注公众号Java技术栈,公众号第一时间推送。

    解决方案

    Spring 用户升级到以下安全版本:

    Spring 5.3.18+

    Spring 5.2.20+

    Spring Boot 用户升级到以下安全版本:

    Spring Boot 2.6.6

    Spring Boot 2.5.12+

    麻了麻了!又得升级??这 Spring Boot 2.6.5 刚发布没几天。。。可能由于这个漏洞太过于高危,没有办法,必须升级主版本应对,以免用户使用了带了漏洞的版本。Spring Boot 2.6.6项目 fhadmin.cn

    但是,如果不想升级框架主版本,也是可以的,毕竟很多应用不一定会兼容 Spring Boot 最新版本,比较 Spring Cloud 或者其他依赖的底层框架。

    Spring Boot 用户可以使用以下方法临时解决:

    package car.app;

    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.List;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;

    import org.springframework.context.annotation.Bean;

    import org.springframework.web.bind.ServletRequestDataBinder;

    import org.springframework.web.context.request.NativeWebRequest;

    import org.springframework.web.method.annotation.InitBinderDataBinderFactory;

    import org.springframework.web.method.support.InvocableHandlerMethod;

    import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;

    import org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory;

    /**

    * 说明:MyApp

    * 作者:FH Admin

    * from:fhadmin.cn

    */

    @SpringBootApplication

    public class MyApp {

    public static void main(String[] args) {

    SpringApplication.run(CarApp.class, args);

    }

    @Bean

    public WebMvcRegistrations mvcRegistrations() {

    return new WebMvcRegistrations() {

    @Override

    public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {

    return new ExtendedRequestMappingHandlerAdapter();

    }

    };

    }

    private static class ExtendedRequestMappingHandlerAdapter extends RequestMappingHandlerAdapter {

    @Override

    protected InitBinderDataBinderFactory createDataBinderFactory(List<InvocableHandlerMethod> methods) {

    return new ServletRequestDataBinderFactory(methods, getWebBindingInitializer()) {

    @Override

    protected ServletRequestDataBinder createBinderInstance(

    Object target, String name, NativeWebRequest request) throws Exception {

    ServletRequestDataBinder binder = super.createBinderInstance(target, name, request);

    String[] fields = binder.getDisallowedFields();

    List<String> fieldList = new ArrayList<>(fields != null ? Arrays.asList(fields) : Collections.emptyList());

    fieldList.addAll(Arrays.asList("class.*", "Class.*", "*.class.*", "*.Class.*"));

    binder.setDisallowedFields(fieldList.toArray(new String[] {}));

    return binder;

    }

    };

    }

    }

    }

    总结

    总结下这次受影响的用户:

    JDK 9+

    Apache Tomcat(WAR 包部署形式)

    Spring MVC/ Spring WebFlux 应用程序

    这次的大漏洞虽然是高危的,国内可能影响面有限。影响的关键还是JDK 9+ 的用户,国外用 JDK 9+ 的比较多,JDK 11 和 JDK8 占据主要阵营,JDK 17+ 也在逐步发力替代 JDK 8。

    据我了解,国内用 JDK 8 的比较多,JDK 9+ 应该只是少部分群体,如果你用的 JDK 8 及以下版本,那恭喜你,目前不受影响,否则尽快修复、升级保平安。

    相关文章

      网友评论

          本文标题:Spring 官宣高危漏洞 springboot 2.6.6 已

          本文链接:https://www.haomeiwen.com/subject/tnvisrtx.html