查看原文
其他

突发!Spring疑似沦陷了

康熙 终码一生 2022-09-22

点击“终码一生”,关注,置顶公众号

每日技术干货,第一时间送达!



前晚,一位搞安全的朋友给我发消息说,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:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。 

 

END

 



往期推荐



字节一面:说说 Java 内存管理

如何在 Java 中通过 Bucket4j 提供速率限制?

Nginx+SpringBoot 实现负载均衡

Java 接口的演变史

Nginx 对俄罗斯动手了!!

避免重复造轮子,Java 程序员必备!!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存