3月29日,Spring框架曝出RCE0day漏洞。已经确认,由于SerializationUtils#deserialize是基于Java的序列化机制,会导致远程代码执行(RCE),JDK9及以上版本可能会受到影响。相关监控发现该漏洞可能已被远程攻击者利用。广东省网络安全应急中心连夜发布预警通知。考虑到Spring框架的广泛应用,FreeBuf对该漏洞的评级为:危险。漏洞描述:Spring作为全球最流行的Java轻量级开源框架,让开发者专注于业务逻辑,简化了Java企业应用的开发周期。但是,在JDK9版本(及以上)的Spring框架中,远程攻击者可以在满足一定条件的基础上,通过框架的参数绑定功能获取AccessLogValve对象和恶意字段值,从而触发管道机制并在路径中写入任何文件。目前已知触发该漏洞需要满足两个基本条件:使用JDK9及以上版本的SpringMVC框架SpringFramework及其派生框架spring-beans-*.jar文件或存在CachedIntrospectionResults.class漏洞影响范围:JDK9<=Spring在CloudFunction中执行“java-version”命令查看JDK版本解决方案(暂定):目前Spring官方尚未发布该漏洞相关补丁文件,相关漏洞POC尚未公开。考虑到3月29日开始小范围蔓延,鉴于SpringMVC的广泛应用,企业仍需警惕远程攻击者,使用广东省网络安全应急中心公布的临时预案加强保护。FreeBuf会密切关注Spring官方补丁的发布。临时方案一:在WAF等网络防护设备上实施WAF临时策略,根据实际业务流量情况部署:“class.*”、“Class.*”、“*.class.*”、“*.Class.*”等字符串规则进行过滤,部署过滤规则后,测试业务权限,避免产生额外影响。临时解决方案二:临时缓解措施在应用系统的工程包下创建如下全局类,并保证该类被Spring加载(建议添加到Controller所在包中)。添加类后,需要对项目进行重新编译打包和功能验证测试。并重新发布项目。.InitBinder;@ControllerAdvice@Order(10000)publicclassa{@InitBinderpublicvoidsetAllowedFields(WebDataBinderdataBinder){String[]abd=newString[]{"class.*","Class.*","*.class.*","*.Class.*"};dataBinder.setDisallowedFields(abd);}}
