网传的 Spring 大漏洞

速领:神作《凤凰架构:构建可靠的大型分布式系统》电子版

昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了。

主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),所以就删除了。

经过一天的时间,似乎这个事情变得有点看不懂了。所以下面聊聊这个网传的Spring大漏洞吧。

这个漏洞话题的起点源自3月29日晚,DD在群里(点击加群)看到网友分享了几位安全大佬爆料Java生态出现了超级大漏洞。

但两位大佬都没有透露这次漏洞更详细的信息。只有网友问了一句:“有log4j那么大吗?”。云舒大佬的回复是:“更大”。

之后,又有安全大佬sunwear(就之前那个因为上海银行工作人员服务态度差,而直接怒取500万现金的大佬,具体什么故事如果你不知道可以百度一下,这里DD就不细说了)给了一些更细节的信息:

所以漏洞影响范围,可以缩小到使用Java 9+和Spring的项目上了。

此时就有网友开始结合之前log4j漏洞的信息开始调侃了:

其实到这里,不少小伙们其实已经松了一口气了,因为国内大部分地方还是在用Java 8。这点DD深有体会,因为每次发布Java新版本资讯的时候,一直都有小伙伴反馈,不会升级,版本任你发,我用Java 8。

反正也睡不着,DD想着继续搜搜相关信息吧。然后DD发现了Spring官方最近有这样一个提交:

从提交信息来看,是解决某个RCE漏洞问题的。所以,大概很可能就是这个了吧?感兴趣的小伙伴,可以通过下面的链接查看具体信息。

https://github.com/spring-projects/spring-framework/commit/7f7fb58dd0dae86d22268a4b59ac7c72a6c22529

之后有看到一些专业的网络安全类渠道发布了一下修复方法。但没多久,不少号的内容被和谐了,不清楚具体原因是什么。

再之后就是3月30日白天了,接着各种营销号开始炒作这个问题了,比较扯淡的有两类:一类是张冠李戴,拿过去的一些漏洞说是这次的大漏洞,因为标题够唬人,所以很多人关注了,然后也在群里讨论。比如又一些说是Spring Cloud Gateway的,其实都是3月1日就已经公布的漏洞。也有一些说是最近那两个的,但仔细看看,你会发现似乎搭不上边,而且漏洞级别都不高。

还有一类是钓鱼的,由于号称漏洞很大,所以放了一些非正式的修复包,实际是恶意代码,来引诱大家使用。

所以这里DD提醒大家一句,当碰到安全问题的时候,一定一定要去看官方信息,而不是随便搜一篇文章就开干了。包括DD这边分享出来的内容,一定也都会放出官方信息的连接,供大家去核实与处理。

再回到这次网传的漏洞信息,其实从29日晚开始,大家就都在关注Spring官方的信息。然而白天等到的是这篇博文:

这里指出的CVE-2022-22963与网传的漏洞信息大相径庭,并且级别也并不像之前大佬称的堪比log4j的漏洞。

所以,再去追溯了一下之前提到的那个关于RCE的PR。可以看到这里的内容有了一些更新:

有网友问:什么时候report CVE?

@ledoyen 回复:这个本身并不是一个CVE。使用此工具处理用户输入数据可能会导致CVE,但在内部像CacheResultInterceptor那样使用它的时候,不会导致CVE。

@sbrannen 最后也给出了结论:这不是Spring核心框架中的CVE。此更改的目的是通知以前使用SerializationUtils反序列化的人,对来自不可信来源对象进行反序列化时候是危险的。而Spring核心框架不使用SerializationUtils来反序列化来自不可信来源的对象。如果您认为您发现了安全问题,请通过专门的页面来报告:https://spring.io/security-policy。

所以,这个看似解决网传大漏洞的PR并不是一回事?回头再去看了一下爆料该漏洞的云舒大佬的微博,之前发的那条已经不存在了。那么这个所谓的大漏洞去哪里了呢?DD也猜不出来了,也不瞎猜了,毕竟安全漏洞是个很严肃的事。

总结

最后,因为这个漏洞的问题,群里(点击加群)一直有小伙伴问起,所以,按目前DD的认识,给大家总结一些注意点:

  1. Spring官方报告出来的漏洞没那么严重,根据报告给的升级版本就可以解决。
  2. Spring官方报告出来的漏洞可能与网传的大漏洞无关
  3. 现存的一些营销号文章中存在风险下载物,大家要注意
  4. 保持关注,如果有进一步消息,DD这边会继续给大家同步和解析

如果您正在学习Spring全家桶或关注Spring相关的前沿信息,欢迎关注我的公众号程序猿DD,或者我的个人博客,长期分享关于Spring一切的干货内容。