Spring 框架存在高危 RCE 零日漏洞?核心开发者澄清
近日,最受欢迎的开源轻量级 Java 框架 Spring 被曝存在高危的 RCE(远程控制设备) 零日漏洞 ,北京大学计算中心、外媒 praetorian 、 bleepingcomputer 等站点对该漏洞进行了报道。
据网上疯传的介绍,该 RCE 漏洞源于 Spring 框架核心的 SerializationUtils#dserialize
方法,该方法基于 Java 的序列化与反序列机制,可导致远程代码执行 (RCE),使用 JDK9 及以上版本皆有可能受到影响。
正在紧急修复?
从 Spring 项目的 Git 提交记录来看,在漏洞消息疯传的同时, Spring 开发者似乎在紧急处理漏洞相关的代码,比如 3 月 29日的新提交:弃用 SerializationUtils#deserialize 。
在这个敏感的时间点,该提交引了一些紧张情绪,很多用户在该提交下面留言,询问该提交的代码改动是否与网传的 0day RCE 漏洞相关?而 Spring 核心开发者之一 sbrannen 对此作出澄清:
弃用 SerializationUtils#deserialize 跟目前所有的漏洞都没有关系。
此提交的目的是通知使用过
SerializationUtils#deserialize
的用户:从不受信任的来源反序列化对象是危险的。Spring 核心框架不会使用 SerializationUtils 反序列化来自不受信任来源的对象。
事实上,早在 2 月 19 日 Spring 框架的仓库就出现过对该 SerializationUtils
方法的讨论,开发者 ledoyen 就指出:基于 Java 的序列化机制,SerializationUtils#dserialize
可能导致 RCE 远程代码执行漏洞,因此他提出了弃用 SerializationUtils#dserialize
的 PR #28075 :
由此看来,前面的提交是 ledoyen 针对该 PR 的一次代码合并,弃用 SerializationUtils#dserialize
也是计划之内的事情。有人询问在该 PR 下询问“ SerializationUtils#dserialize
是否应该作为漏洞报道”时, ledoyen 也进行解释:
SerializationUtils#dserialize
本身不是漏洞,使用此工具处理用户输入数据可能会导致 CVE,但该方法在内部作为缓存结果拦截器( CacheResultInterceptor) 使用的话,则不会导致任何漏洞。
目前, SerializationUtils#dserialize
在 Spring Framework 6.0 中已弃用,而对于 5.3.x 版本,则是向 Javadoc 中添加针对 SerializationUtils 工具类的警告,以提高用户的警觉意识。
漏洞炒作!
如果确实存在,那么这个 Spring 框架 RCE 漏洞的影响将远超此前的 Log4j 或 Heartbleed ,但小编翻了一整天,也没有看到谁能真正复现此漏洞(没有完整的 Poc ,基本是开局一张马赛克图,漏洞细节全靠编)。
GitHub 上倒是有很多命名为 Spring core RCE 的新仓库,但也基本都是“懂的都懂”的谜语描述,没有真正的干货内容。
目前为数不多的详细 PoC 还是故意先按 Spring 文档明确反对的用法引入易受攻击的代码,再进行漏洞攻击 ...而据郑州网络安全协会报道,甚至还有人打着 Poc 的幌子钓鱼...
截至发稿时间,Spring 团队没有对该漏洞发表任何官方公告:官方博客的最新漏洞公告是 CVE-2022-22963:Spring 表达式资源访问漏洞 和 CVE-2022-22950:Spring 表达式 DoS 漏洞 ,但这两个漏洞的严重程度都是中等,无法与网传 Spring 核心框架的 RCE 高危程度相比。
更新:
有热心网友联系作者,称其已掌握完整复现漏洞的 PoC 和 ExP,可证明漏洞确实存在。但因该漏洞影响太大,在官方发出公告前不宜公开更多细节。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
研究发现超 200 个针对 Azure 开发人员的恶意 NPM 包
JFrog 研究人员 Andrey Polkovnychenko 和 Shachar Menashe 在一份报告中指出,截至 3 月 21 日他们已观察到不少于 218 个恶意 NPM 包。检查后发现这都是针对 Azure 开发人员的新的大规模供应链攻击,攻击者采用了一个自动脚本来创建账户并上传覆盖整个 scope的恶意软件包,旨在窃取个人身份信息。 除了针对@azurescope外,还有@azure-rest、@azure-tests、@azure-tools和@cadl-lang也是目标。在这些恶意包发布大约两天后,JFrog 向 NPM 维护人员进行了披露,其迅速进行了删除;但在此之前,每个软件包已平均被下载了约 50 次。 根据介绍,攻击人员使用的软件供应链攻击方法是typosquatting,他们只是创建了一个新的(恶意的)包,其名称与现有的 @azure scope package 相同,但删除了 scope name。举例如下: 这是一个合法的 azure npm 包 以及它的恶意对应物 “攻击者依赖于一些开发人员在安装软件包时可能错误地省略了@azure 前缀这一事实。...
- 下一篇
网络协议之:socket协议详解之Socket和Stream Socket
简介 不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。 Socket是什么 socket的中文翻译是套接字,个人觉的这个翻译真的是太差劲了,套接字听起来毫无意义,所以很多人在第一次听到socket这个词的时候肯定很迷茫。 那么什么是socket呢?socket是一种不同程序间进行进程通讯的方法,这些程序可以在同一个服务器上也可以在不同的服务器上。 socket建立连接的基础是IP协议,IP协议被用来进行数据的封装和分组,然后才能够在网络上进行传输。这种依赖于IP协议的socket,又叫做network socket。 通过network socket可以建立客户端和服务器端的连接,客户端和服务器端是通过socket address来发现对方的。 以java为例,我们来看下SocketAddress的定义: public abstract class SocketAddress ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS关闭SELinux安全模块
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G