首页 >> 网络安全 >>漏洞预警 >> SpringShell:Spring Core RCE 0-day 漏洞
详细内容

SpringShell:Spring Core RCE 0-day 漏洞

时间:2022-03-30     【转载】   阅读

2021 年底,由于 Apache Log4j2 中的远程代码执行漏洞(也称为Log4Shell )的零日漏洞,互联网火了。该漏洞由阿里云安全团队发现。 

今天,研究人员发现了另一个可能破坏互联网的最严重漏洞。此时,此漏洞没有 CVE id,但我们可以将其 称为 SpringShell。该漏洞存在于JDK版本大于等于9.0的Spring内核中。


在这一点上,我们没有关于这个错误的确切信息,但从未经证实的消息来源中,我们得到了一些有趣的细节。 

以下所有详细信息均来自 未经证实的来源。我们不对造成的任何损害负责。


漏洞详情和调查

(1)。检查JDK版本号 

在组织系统的运行服务器上,运行“ java -version ”命令查看运行的JDK版本。如果版本号小于等于8,则不受漏洞影响。


(2)。检查 Spring 框架的使用情况

1.如果组织系统项目以war包的形式部署,请按照以下步骤进行判断。

解压war包:将war文件后缀改为.zip,解压zip文件

在解压目录中搜索spring-beans-*.jar格式的jar文件(例如spring-beans-5.3.16.jar)。如果存在,则说明业务系统是使用spring框架开发的。

如果spring-beans-*.jar文件不存在,在解压目录下搜索CachedIntrospectionResuLts.class文件是否存在。如果存在,则说明业务系统是使用Spring框架开发的。


2、如果组织系统项目以jar包的形式直接独立运行,按以下步骤判断。

解压jar包:将jar文件后缀改为.zip,解压zip文件。

在解压目录中搜索spring-beans-*.jar格式的jar文件(例如spring-beans-5.3.16.jar)。如果存在,则说明业务系统是使用spring框架开发的。

如果spring-beans-*.jar文件不存在,在解压目录下搜索CachedIntrospectionResuLts.class文件是否存在。如果存在,则说明业务系统是使用spring框架开发的。


(三)综合调查

完成以上两步排查后,同时满足以下两个条件,即可判断受此漏洞影响:

JDK版本号为9及以上;

使用spring框架或派生框架。

漏洞修复指南

目前,spring 没有官方补丁。但建议使用以下两种临时方案进行防护,并注意及时发布官方补丁,根据官方补丁修复漏洞。

我们有一些更新,这是一个比 Log4Shell 漏洞大得多的漏洞。所以我们建议关注官方补丁的发布,并使其在骗子之前应用。


WAF保护

在WAF等网络保护设备上,根据实际流量情况对“class.*”、“Class.*”、“*.class.*”、“*.Class.*”等字符串进行规则过滤部署的服务。过滤规则后,测试业务运行,避免额外影响。


临时维修措施

泄漏的临时修复应同时进行以下两个步骤:

1、在应用中全局搜索@InitBinder注解,查看方法体中是否调用了dataBinder.setDisallowedFields方法。如果找到这段代码片段的介绍,将{"class.*","Class.*加入原黑名单","*.class.*", "*.Class.*"}。(注:如果这个代码片段使用的比较多,需要到处追加)


2、在应用系统的项目包下创建如下全局类,并保证该类被Spring加载(建议在Controller所在包中添加)。添加类后,需要重新编译打包项目,并进行功能验证测试。并重新发布该项目。

image.png

从 Spring 项目的 Git Repository来看,Spring 开发者似乎正在着手修复远程代码执行漏洞,但我们必须等待官方确认。

技术支持: 建站ABC | 管理登录