1 漏洞描述
近日,灰度安全监测到Spring相关框架存在远程代码执行漏洞,未经授权的远程攻击者可构造HTTP请求在目标系统上写入恶意程序从而执行任意代码,此漏洞为Spring framework远程代码执行漏洞(CVE-2010-1622)的绕过利用,但影响范围更为广泛,官方已于3.31号下午发布了5.2.20.RELEASE与5.3.18版本修复此漏洞,目前PoC已公开,请相关用户尽快采取措施进行排查与防护。
灰度安全已成功复现该漏洞:
2 漏洞排查
1.检测是否使用Spring框架,若未使用,则不存在该漏洞;
2.检查中间件使用的JDK版本,若版本号小于9,则不存在该漏洞;
3.检查当前使用的中间件是否为Tomcat,若未使用Tomcat,则暂不受该漏洞影响;
4.检查Tomcat是否启用了AccessLog,若未启用,则暂不受该漏洞影响。
3 解决方案
3.1 官方升级
目前官方已发布新版本5.2.20.RELEASE与5.3.18修复此漏洞,请受影响的用户尽快更新进行防护,下载链接:
https://github.com/spring-projects/spring-framework/releases。
3.2 WAF等网络防护设备
在WAF等网络防护设备上,根据实际部署业务的流量情况,实现对
“class.*”,“Class.*”,“*.class.*”,“*.Class.*”
等字符串的规则过滤,并在部署过滤规则后,对业务允许情况进行测试,避免产生额外影响。
3.3 添加源代码缓解
在应用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到(推荐在Controller 所在的包中添加).完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
@ControllerAdvice
@Order(10000)
public class a{
@InitBinder
@Order(10000)
public void setAllowedFields(WebDataBinder dataBinder) {
String[] abd = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
dataBinder.setDisallowedFields(abd);
}
}
4 产品解决方案
灰度先知 · 智能风险评估系统,已具备该漏洞的检测能力,建议用户通过部署先知 · 智能风险评估系统排查网络环境内的漏洞风险。
5 灰度安全技术支持
灰度安全将持续为客户提供技术支持服务,如有需要请拨打电话400-1360-910或010-53676979。