Spring官宣承认网传大漏洞,并提供解决方案
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 |
这个方法DD在微信群里( 点击加群)也看到蛮多次了。这次Spring官方推文里,证实了该方法是有效的,但 可能会留下一些其他隐患,特别是当 Controller
通过其自己的 @InitBinder
方法在本地设置 disalloedFields
时,该方法会覆盖全局设置。
为了以更安全的方式应用解决方案,应用程序可以扩展 RequestMappingHandlerAdapter
,以便在所有其他初始化结束后更新 WebDataBinder
。官方给出了更好的解决方案,比如下面这样:
@SpringBootApplication |
对于不是Spring Boot应用下的Spring MVC用户,可以直接从 @EnableWebMvc
切换到扩展 DelegatingWebMvcConfiguration
,如文档的高级配置部分所述[3],然后重写 createRequestMappingHandlerAdapter
方法来实现。
参考资料
- [1] https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
- [2] https://tanzu.vmware.com/security/cve-2022-22965
- [3] https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-config-advanced-java
好了,今天的分享就到这里!如果您学习过程中如遇困难?可以加入我们超高质量的 Spring技术交流群,参与交流与讨论,更好的学习与进步!更多 Spring Boot教程可以点击直达!,欢迎收藏与转发支持!