页面升级中敬请期待
2022-03-31 01:26:38
优炫软件安全研究院监测到Spring 框架曝出 RCE 0day 漏洞。经研究,已经证实由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),使用 JDK9 及以上版本皆有可能受到影响。考虑到 Spring 框架的广泛应用,漏洞利用整个过程操作简单, 该漏洞可能已被远程攻击者利用。
用户认证:不需要用户认证
触发方式:远程
配置方式:默认
1、使用 JDK9 及以上版本的 Spring MVC 框架。
2、Spring 框架以及衍生的框架 spring-beans-*.jar 文件或者存在
CachedIntrospectionResults.class。
利用难度:低,无需授权即可远程代码执行
威胁等级:严重,能造成远程代码执行
2022-3-30
优炫软件安全研究院监测到 Spring RCE 0day 漏洞并发布安全动态
2022-3-30
优炫软件安全研究院发布安全公告
组件 |
影响版本 |
安全版本 |
Spring MVC |
JDK >=9 |
JDK<=8 |
可能的受影响应用包括但不限于如下:
⚫ Spring 框架及其衍生框架
在业务系统的运行服务器上,执行“java -version”命令查看运行的 JDK 版本,如果版本号小于等于 8,则不受漏洞影响。
1、如果业务系统项目以 war 包形式部署,按照如下步骤进行判断。
(1)解压 war 包:将 war 文件的后缀修改成.zip,解压 zip 文件
(2)在解压缩目录下搜索是否存在 spring-beans--*.jar 格式的 jar 文件(例如 spring-beans-5.3.16.jar),如存在则说明业务系统使用了 spring 框架进行开发。
(3)如果 spring-beans--*.jar 文件不存在,则在解压缩目录下搜索CachedIntrospectionResuLts.class 文件是否存在,如存在则说明业务系统使用了 Spring 框架开发。
2、如果业务系统项目以 jar 包形式直接独立运行,按照如下步骤进行判断。
(1)解压 jar 包:将 jar 文件的后缀修改成.zip,解压 zip 文件。
(2)在解压缩目录下搜索是否存在 spring-beans-*.jar 格式的 jar 文件 (例如 spring-beans-5.3.16.jar),如存在则说明业务系统使用了 spring 框架进行开发。
(3)如果 spring-beans-*.jar 文件不存在,则在解压缩目录下搜索CachedIntrospectionResuLts.class 文件是否存在,如存在则说明业务系统使用了 spring 框架进行开发。
优炫下一代防火墙具有防御网络攻击的能力,提供基于身份识别的全面安全防护,以抵御存在的复杂的混合型威胁。在优炫下一代防火墙设备上,根据实际部署业务的流量情况,实现对{ "class.*","Class. *","*. class.*", "*.Class.*"} 等字符串的规则过滤,并在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。
目前,spring 官方无官方补丁,建议采用以下二个临时方案进行防护,并及时关注官方补丁发布情况,按官方补丁修复漏洞。
需同时按以下两个步骤进行漏洞的临时修复:
1、在应用中全局搜索@InitBinder 注解,看看方法体内是否调用dataBinder.setDisallowedFields 方法,如果发现此代码片段的引入,则在原来的黑名单中,添加{"class.*”,"C1ass.*","米.class.*","*.Class.*"}。(注:如果此代码片段使用较多,需要每个地方都追加)
2、在应用系统的项目包下新建以下全局类,并保证这个类被 Spring 加载到(推荐在 Controller 所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。
@ControllerAdvice
@Order(10000)
public class a{
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
String[] abd = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
dataBinder.setDisallowedFields(abd);
}
}