spring官宣网传大漏洞,并提供解决方案(代码片段)

程序猿DD 程序猿DD     2023-03-14     272

关键词:

Spring沦陷了!这样的标题这几天是不是看腻了?然而,仔细看看都是拿着之前的几个毫不相干的CVE来大吹特吹。所以,昨天发了一篇关于最近网传的Spring大漏洞的文章,聊了聊这些让人迷惑的营销文、以及提醒大家不要去下载一些利用漏洞提供补丁的钓鱼内容。而对于这个网传的漏洞,依然保持关注状态,因为确实可能存在,只是没有官宣。

就在不久前(3月31日晚),Spring社区发布了一篇名为《Spring Framework RCE, Early Announcement》的文章,官宣了最近网传的Spring漏洞。这也证实了网传漏洞确实存在,并且并非最近很多文章说提到的3月28、29日公布的CVE,如果你是照着那些文章解决问题的话,请根据这次官宣内容重新来过吧。

这次确定的Spring核心框架中的RCE漏洞,CVE号为CVE-2022-22965[1]。

这个漏洞是在周二深夜,由AntGroup FG的codePlutos,meizjm3i向VMware报告。周三,Spring官方对该问题进行了调查、分析并确定了解决方案,同时计划在周四进行紧急版本的发布

由于该漏洞被泄漏在网络上,所以Spring官方紧急发布了相关修复的版本,因为是Spring核心框架中的漏洞,所以涉及面较广。所以在这篇博文中也是在不断的持续更新进展,下面截止到本文发稿的进展时间线:

下面就来一起看看这个被网传了2天的神秘漏洞的官宣内容和解决方案。

影响范围

该漏洞的利用需要满足下面的条件:

  • JDK 9 +
  • 使用Apache Tomcat部署
  • 使用WAR方式打包
  • 依赖spring-webmvc或spring-webflux

虽然可能国内大部分用户还在用JDK 8、或者采用内置Tomcat的方式运行,但由于该漏洞的特性比较普遍,不排除其他利用方式的存在。所以,DD还是建议在有条件的情况下,尽快升到最新版本来避免可能存在的风险发生。

解决方案

因为这次不是网传,而是Spring官宣,所以解决方案已经相对完善和容易了,受影响的用户可以通过下面的方法解决该漏洞的风险:

  • Spring 5.3.x用户升级到5.3.18+
  • Spring 5.2.x用户升级到5.2.20+
  • Spring Boot 2.6.x用户升级到2.6.6+
  • Spring Boot 2.5.x用户升级到2.5.12+

对于该漏洞的复习及更多细节,这里因为篇幅有限,就不具体介绍了,感兴趣的小伙伴可以关注公众号程序猿DD,回复“CVE-2022-22965”,获取更深入的解析文档。

然后,这里需要特别再提一下,之前已经收到消息并有所行动的小伙伴,没猜错的话应该都是用下面的解决方案来处理的吧?

@ControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE)
public class BinderControllerAdvice 

    @InitBinder
    public void setAllowedFields(WebDataBinder dataBinder) 
         String[] denylist = new String[]"class.*", "Class.*", "*.class.*", "*.Class.*";
         dataBinder.setDisallowedFields(denylist);
    

这个方法DD在微信群里(点击加群)也看到蛮多次了。这次Spring官方推文里,证实了该方法是有效的,但可能会留下一些其他隐患,特别是当Controller通过其自己的@InitBinder方法在本地设置disalloedFields时,该方法会覆盖全局设置。

为了以更安全的方式应用解决方案,应用程序可以扩展RequestMappingHandlerAdapter,以便在所有其他初始化结束后更新WebDataBinder。官方给出了更好的解决方案,比如下面这样:

@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;
                
            ;
        
    

对于不是Spring Boot应用下的Spring MVC用户,可以直接从@EnableWebMvc切换到扩展DelegatingWebMvcConfiguration,如文档的高级配置部分所述[3],然后重写createRequestMappingHandlerAdapter方法来实现。

好了,今天的分享就到这里!如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群,参与交流与讨论,更好的学习与进步!更多Spring Boot教程可以点击直达!,欢迎收藏与转发支持!

参考资料

欢迎关注我的公众号:程序猿DD。前沿技术早知道,弯道超车有希望!积累超车资本,从关注DD开始!

老版本的spring应用该如何应对cve-2022-22965漏洞?(代码片段)

...,在发布了《Spring官宣承认网传大漏洞,并提供解决方案》之后。群里就有几个小伙伴问了这样的问题:我们的Spring版本比较老,该怎么办?这是一个好问题,所以DD今天单独拿出来说说。这次的RCE漏洞宣... 查看详情

spring漏洞及其修复方案

Spring社区发布了一篇名为《SpringFrameworkRCE,EarlyAnnouncement》的文章,官宣了最近网传的Spring漏洞。攻击者利用该漏洞,可在未授权的情况下远程执行命令。目前,漏洞利用细节已大范围公开,好在Spring官方已发布补... 查看详情

网传的spring大漏洞(代码片段)

昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了。主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),... 查看详情

网传的spring大漏洞(代码片段)

昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了。主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),... 查看详情

疯了!spring再官宣惊天大漏洞。。

点击关注公众号,Java干货及时送达Spring官宣高危漏洞大家好,我是栈长。前几天爆出来的Spring漏洞,刚修复完又来?今天愚人节来了,这是和大家开玩笑吗?不是的,我也是猝不及防!这个玩笑也... 查看详情

疯了..spring再爆惊天大漏洞。。(代码片段)

Spring官宣高危漏洞大家好,我是栈长。前几天爆出来的Spring漏洞,刚修复完又来?今天愚人节来了,这是和大家开玩笑吗?不是的,我也是猝不及防!这个玩笑也开的太大了!!你之前看到的这个漏洞已经是过去式了:我以为是... 查看详情

网传spring爆出更大漏洞?别再炒作了…

之前刚刚过去的log4j2漏洞还历历在目,这次来了个更大的……云舒老大在29日发微博称,出了个超级大漏洞。有吃瓜群众就问:“这个瓜有log4j2那么好吃吗?”云舒大佬的回复是:“更大”。​之后,又有... 查看详情

springboot项目的创建:通过spring官网提供的模板创建springboot项目,模板地址:https://start.spring.io/.(需联网,下载好模板后再导入到idea)(代码片

SpringBoot项目的创建1.从官网下载模板2.将下载的项目解压出来并导入到idea中3.项目结构如下(以打包成jar的形式示例)4.添加web依赖5.添加代码测试1.从官网下载模板模板地址:https://start.spring.io/.2.将下载的项目解压出... 查看详情

记录一些遇见的bug——项目启动报错org.mybatis.spring.mybatissystemexception:nestedexceptionisorg.apache.ibatis.e(代码片

记录一些遇见的bug——项目启动报错org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.executor.ExecutorException:Errorpreparingstatement.Cause:java.lang.NullPointerException一、问题描述二、问题原因三、解决方案 查看详情

网络安全spring框架漏洞总结(代码片段)

Spring简介Spring是JavaEE编程领域的一个轻量级开源框架,该框架由一个叫RodJohnson的程序员在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各层的松耦合问题,因此它将面向... 查看详情

只会springmvc了,太low了!spring又官宣了一个更牛逼的替代框架!

来源:blog.csdn.net/yasin_huang/article/details/106556935#Spring-webflux简介spring-webflux是spring在5.0版本后提供的一套响应式编程风格的web开发框架。这个框架包含了spring-framework和springmvc,它可以运行在Netty、Undertow以及3.1版本以上的Se 查看详情

官宣!微软发布vscodeserver!(代码片段)

...,微软发布了GitHubCodespaces——一个全托管的远程开发解决方案。如今,Visu 查看详情

疯了..spring再爆惊天大漏洞。。

Spring官宣高危漏洞大家好,我是栈长。前几天爆出来的Spring漏洞,刚修复完又来?今天愚人节来了,这是和大家开玩笑吗?不是的,我也是猝不及防!这个玩笑也开的太大了!!你之前看到的这... 查看详情

只会springmvc了,太low了!spring又官宣了一个更牛逼的替代框架

...P7被裁员,找工作小半年了,流程走着走着就没了Spring-webflux简介spring-webflux是spring在5.0版本后提供的一套响应式编程风格的web开发框架。这个框架包含了spring-framework和springmvc,它可以运行在Netty、Undertow以及3.1版本以... 查看详情

求求你别只会springmvc了,太low了!spring又官宣了一个更牛逼的替代框架!(代码片段)

...声了...来源:blog.csdn.net/yasin_huang/article/details/106556935Spring-webflux简介什么是“响应式”Spring-webflux的响应式API选 查看详情

「安全狗漏洞通告」fortinetsslvpn远程代码执行漏洞解决方案

...et(飞塔)是一家全球知名的网络安全产品和安全解决方案提供商,其产品包括防火墙、防病毒软件、入侵防御系统和终端安全组件等。FortiOSsslvpnd中存在基于堆的缓冲区溢出漏洞,可利用该漏洞在未经身份验证的... 查看详情

官宣|ipaylinks与shopyy达成战略合作

...nks始终专注于为跨境卖家提供安全、高效、稳定的一站式解决方案。随着iPayLinks全球布局的深入展开,我们与全球越来越多的卡组织、本地银行和服务商建立起了长期合作关系。即日起,iPayLinks与Shopyy正式开启第三方支... 查看详情

ppc405ep

...C405EP32位RISC处理器旨在提供一套灵活、上市时间短的硬件解决方案,以满足高性能嵌入式应用的需求。通过可扩展PowerPCArchitecture™进行实现,405EP处理器保留了与其它PowerPC处理器的代码兼容性,从而简化了代码移植并缩短了... 查看详情