当前位置: 首页 > 后端技术 > Java

疯狂的!Spring还有另一个令人震惊的漏洞,.

时间:2023-04-01 23:58:44 Java

Spring官宣高危漏洞大家好,我是栈管理员。前几天爆发的Spring漏洞,修复后又回来了?今天是愚人节,这是跟大家开的玩笑吗?这不,我也措手不及!这个笑话太大了!!之前看到的漏洞已经是过去式了:本以为是结束,没想到只是起点。现在Spring官方公布了最新的高危漏洞:EarlyAnnouncement??这只是一个提前通知吗?也许中期?后期?请继续阅读下面的内容!漏洞详情漏洞CVE-2022-22965漏洞名称远程代码执行漏洞严重级别高危影响范围SpringFramework-5.3.0~5.3.17-5.2.0~5.2.19-旧版本和其他不支持版本麻木。麻木了,这次是高危,一定要注意!!漏洞描述:用户可通过数据绑定触发远程代码执行(RCE)攻击漏洞。触发条件如下:JDK9+ApacheTomcat(war包部署形式)SpringMVC/SpringWebFlux应用一般使用SpringBoot开发,都打包成jar包,默认内嵌Tomcat,特别适合对于使用Docker/微服务的应用,也可以切换成war包部署,但是很少用,但是也不是不可用,比如一般的传统Projects,为了兼容老环境,或者为了维护统一Tomcat环境,也可以使用war包部署。所以,如果你使用的是默认嵌入Tomcat部署的默认SpringBoot可执行jar包,则不会受到影响,但由于该漏洞的普遍存在,可能会有其他的利用方式。.这是提前通知的意思吗?来吧,我要疯了!如果你想关注和学习最新最主流的Java技术,可以持续关注公众号Java技术栈,公众号会第一时间推送。解决方案Spring用户升级到以下安全版本:Spring5.3.18+Spring5.2.20+SpringBoot用户升级到以下安全版本:SpringBoot2.6.6+SpringBoot2.5.12+麻烦了!必须再次升级??这个SpringBoot2.6.5前几天刚刚发布。..可能是因为这个漏洞风险太大,没办法,必须升级主版本,防止用户使用有漏洞的版本。不过,如果你不想升级框架的主版本,也是可以的。毕竟,与SpringCloud或其他依赖的底层框架相比,很多应用程序可能无法兼容最新版本的SpringBoot。SpringBoot用户可以使用以下方法临时解决:packagecar.app;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;importorg.springframework.boot.SpringApplication;importorg.springframework。boot.autoconfigure.SpringBootApplication;导入org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;导入org.springframework.context.annotation.Bean;导入org.springframework.web.bind.ServletRequestDataBinder;导入org.springframework.web。上下文请求org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory;@SpringBootApplicationpublicclassMyApp{publicstaticvoidmain(String[]args){SpringApplication.run(CarApp.class,args);}@BeanpublicWebMvcRegistrationsmvcRegistrations(){返回新的WebMvcRegistrations(){@OverridepublicRequestMappingHandlerAdaptergetRequestMappingHandlerAdapter(){返回新的ExtendedRequestMappingHandlerAdapter();}};}privatestaticclassExtendedRequestMappingHandlerAdapterextendsRequestMappingHandlerAdapter{@OverrideprotectedInitBinderDataBinderFactorycreateDataBinderFactory(Listmethods){返回新的ServletRequestDataBinderFactory(methods,getWebBindingInitializer()){@OverrideprotectedServletRequestDataBindercreateBinderInstance(Objecttarget,Stringname,NativeWebRequestrequest)ServletRequestDataBinderbinder=super.createBinderInstance(target,name,request);字符串[]字段=binder.getDisallowedFields();ListfieldList=newArrayList<>(fields!=null?Arrays.asList(fields):Collections.emptyList());fieldList.addAll(Arrays.asList("class.*","Class.*","*.class.*","*.Class.*"));binder.setDisallowedFields(fieldList.toArray(newString[]{}));退货活页夹;}};}}}如果你没有用过SpringBoot,分享这个《Spring Boot 学习笔记,这个太全了!》给你学习。如果不使用SpringBoot,可以直接从@EnableWebMvc注解转为扩展DelegatingWebMvcConfiguration,然后重写其createRequestMappingHandlerAdapter方法。详情请参考:https://docs。spring.io/spring...总结本次受影响的用户:JDK9+ApacheTomcat(WAR包部署形式)SpringMVC/SpringWebFlux应用本次大漏洞高危,可能影响国内关键对JDK9+的用户影响有限。国外很多都在用JDK9+,JDK11和JDK8占据了主要阵营,JDK17+也在逐渐取代JDK8。据我所知国内用JDK8的人很多,JDK9+应该只是一小群人。如果你使用JDK8及以下版本,恭喜你,目前不受影响,否则会尽快修复升级,确保安全。还有两点需要澄清:1)不要误解Spring弃用SerializationUtils工具类的动作。该工具类在Spring框架中只有一次用法,不会暴露给外部输入。弃用操作与此漏洞有关。无关紧要。2)对该漏洞上报前发布的SpringCloudFunction漏洞存在一定的怀疑,与本次漏洞无关。最后,希望这次真的结束了。.参考文档:https://spring.io/blog/2022/0...https://tanzu.vmware.com/secu...最后会持续关注和分享最新的Spring漏洞进展,如果你想关注和学习最新最主流的Java技术,可以持续关注公众号Java技术栈,公众号会第一时间推送。版权声明:本文为公众号《Java技术栈》原创,原创不易,转载或引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究权利法律责任。近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!