突发!Spring疑似沦陷了
点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
前晚,一位搞安全的朋友给我发消息说,Spring 框架有个大瓜。
真香,刚刚经历了 log4j2 这个大雷,咱们 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.*"},如果此代码片段使用较多,需要每个地方都追加。
2、在应用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到,建议在controller所在的包中添加;完成类添加后,需对项目进行重新编译打包和功能验证测试,并重新发布项目,实例如下:
@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.* 字符串进行过滤。
PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。
往期推荐