前晚,一位搞安全的朋友给我发消息说,Spring 框架有个大瓜。。。
真香,刚刚经历了 log4j2 这个大雷(参考:Log4j 史诗级大雷,大厂都中招了! ),咱们 java 程序员引以为傲的Spring框架也报了RCE(远程命令执行),啪啪打脸~
目前,影响范围:JDK9、10、11 ,且使用了Spring框架。
之前 log4j2 爆出后,大部分企业都升级了JDK的版本,而这次 Spring RCE Leak 又刚好存在于高版本的 JDK 中。
同时朋友也给我发来了一条链接,Spring官方有一个提交疑似来解决 Spring RCE Leak。
https://github.com/spring-projects/spring-framework/commit/7f7fb58dd0dae86d22268a4b59ac7c72a6c22529
就以上这些信息看来,似乎确实是有问题!
但是官方目前并没有发声明,大家不用太担心。
临时修复方案
考虑到有些读者可能不放心,下面是我在网上看到的修复方案,大家可以参考一下。
1、在应用中全局搜索@InitBinder注解,看看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现有此代码片段的引入,则在原来的黑名单中,添加{"class.*","Class. *","*. class.*", "*.Class.*"},如果此代码片段使用较多,需要每个地方都追加。
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(0)
public class GlobalControllerAdvice{
@InitBinder
public void setAllowedFields(webdataBinder dataBinder){
String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};
dataBinder.setDisallowedFields(abd);
}
}
其实,如果有waf的话,也可以在waf中配置 class.*,Class.*,*.class.*,*.Class.* 字符串进行过滤。
感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。
· END ·
最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。
正文结束
1.救救大龄码农!45岁程序员在国务院网站求助总理!央媒网评来了...
5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...
6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看