今天,研究人员发现了一个可能破坏互联网的最严重漏洞。此时,此漏洞没有 CVE id,但我们可以将其 称为 SpringShell。
该漏洞存在于JDK版本大于等于9.0的Spring内核中。
可能类似2021年底Log4j RCE 0-day 漏洞:Log4Shell
漏洞详情和调查
(1).检查JDK版本号
在系统的运行服务器上,运行“ java -version ”命令查看运行的JDK版本。如果版本号小于等于8,则不受漏洞影响。
(2) 检查 Spring 框架的使用情况
1.如果系统项目以war包的形式部署,请按照以下步骤进行判断。
- 解压war包。将war文件的后缀改为.zip,并解压压缩文件
- 在解压目录中搜索spring-beans-*.jar格式的jar文件(例如,spring-beans-5.3.16.jar)。如果它存在,说明该业务系统是使用spring框架开发的。
- 如果spring-beans-*.jar文件不存在,在解压目录下搜索CachedIntrospectionResuLts.class文件是否存在。如果它存在,说明该业务系统是使用Spring框架开发的。
2. 如果系统项目以jar包的形式直接独立运行,则按照以下步骤判断。
- 解压缩jar包。将jar文件的后缀改为.zip,并解压压缩文件。
- 在解压目录中搜索spring-beans-*.jar格式的jar文件(例如,spring-beans-5.3.16.jar)。如果它存在,说明该业务系统是使用spring框架开发的。
- 如果spring-beans-*.jar文件不存在,在解压目录下搜索CachedIntrospectionResuLts.class文件是否存在。如果它存在,说明该业务系统是使用spring框架开发的。
(3) 全面调查
在完成以上两步排查后,同时满足以下两个条件,就可以确定是受此漏洞影响。
- JDK版本号为9及以上。
- 使用spring框架或衍生框架。
漏洞修复指南
目前,官方还没有针对的补丁。但建议使用以下两种临时解决方案进行防护,并及时关注官方补丁的发布,根据官方补丁修复漏洞。
Git Repository来看,Spring 开发者似乎正在着手修复远程代码执行漏洞,但我们必须等待官方确认。