近日,最受欢迎的开源轻量级 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,可证明漏洞确实存在。但因该漏洞影响太大,在官方发出公告前不宜公开更多细节。
猜你喜欢: