近日,微步在线获取到 Spring Core 远程代码执行漏洞事件 0day 相关漏洞情报,攻击者可以利用该漏洞实现远程代码执行。根据微步在线的安全云,目前已经监测到有僵尸网络利用该漏洞进行扫描探测,攻击者会随时利用该漏洞进行进一步的攻击行为,我们建议相关政企单位引起重视,排查受影响的资产并参考官方补丁尽快修复。
此次受影响版本如下:
Spring
|
是否受影响
|
低于5.3.18和5.2.20
|
是
|
公开程度:已出现在野利用
利用条件:无权限要求
交互要求:0-click
漏洞危害:高危、远程代码执行
影响范围:Spring
1.Spring参数绑定造成的变量覆盖问题
这里不展开'Spring'中自动参数绑定造成的变量覆盖问题,具体的原理可以参照参考链接[1][2]。'Spring'中变量覆盖漏洞的利用方式是修改'Class'属性中的'classLoader'相关信息,但正常情况下开发人员不会在'POJO'中添加'Class'的属性,而在'Spring'框架中使用了'Intropector.getBeanInfo()`来获取'POJO'的属性,'Intropector.getBeanInfo()'有多种实现方式,如下所示:
直接使用了'Intropector.getBeanInfo(Class<T>beanClass)',这个方法会导致在获取对象信息的时候会包含一个'Class'属性。如下图所示:
但如果使用'Intropector.getBeanInfo(Class<?>beanClass,Class<?> stopClass)'的方式就不会包含'class'属性,如下所示:
而众所周知的是,这个漏洞场景存在已久,Spring官方也在不停的修复该漏洞的利用方式,例如过滤Class中的classLoader[1],最新版的修复方式如下所示:
虽然过滤'classLoader'的方式能够有效的阻止一定的攻击,但使用'stopClass'的参数应该更能从根本上解决问题,可能是'Spring'框架为了功能牺牲了一定的安全性。这使得该漏洞虽然依然存在,但已经无法有效利用了,而'JDK9+'提供的'Module'新特性绕过这个修复方式。
'Spring'的修复方式首先判断'beanClass'是不是'java.lang.Class'类型,'Spring'的这种修复方式是默认只有'java.lang.Class'类才具有被利用的价值。但'JDK9+'提出的新类型'java.lang.Module'中同样具有'classLoader'的信息,可以造成变量覆盖从而实现攻击。如下图所示:
'java.lang.Module'其实和'java.lang.Class'的功能相同,前者用于记录'Module'的相关信息,后者用于记录'class'的相关信息,这样才能使用反射去获取一些信息。
30号晚,微步在线研究响应中心通过蜜罐捕获到Spring-core RCE漏洞攻击,发现僵尸网络的IP正通过刚爆发的Spring-core RCE漏洞传播:
查询微步情报社区发现,IP37.239.76.108 存在有大量的扫描、攻击行为 :
同样的IP 141.255.150.72 曾经是Bladabindi僵尸网络的通信C2:
2022.3.29 微步捕获该漏洞在野利用相关情报
2022.3.30 微步蜜罐捕获在野利用
2022.3.31 Spring官方发布漏洞修复建议公告信息
2022.4.1 微步发布漏洞公告
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
[1] http://rui0.cn/archives/1158
[2] https://www.inbreak.net/archives/377
37.239.76.108
141.255.150.72
第一时间为您推送最新威胁情报
阅读原文,可加入粉丝群~
原文始发于微信公众号(微步在线研究响应中心):漏洞公告 | Spring Core 远程代码执行漏洞已出现在野利用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
http://cn-sec.com/archives/861940.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论