http://mpvideo.qpic.cn/0b2efqaaaaaayuafwklcgfrfalgdaawaaaaa.f10002.mp4?dis_k=845b8f6650548a7f8a49c67ea82fbffc&dis_t=1650845908&vid=wxv_2365939010432417793&format_id=10002&support_redirect=0&mmversion=false
继Log4J爆出安全漏洞之后,又在深夜,Spring的github上又更新了一条可能造成RCE(远程命令执行漏洞)的问题代码,随即在国内的安全圈炸开了锅。有安全专家建议升级到JDK 9以上,有些专家又建议回滚到JDK 7以下,一时间小伙伴们不知道该怎么办了。大家来看一段动画演示,怎么改都是“将军"。
大家不要慌,我给大家先临时支个招,后面再出教程。首先叫大家怎么排查哪些项目存在风险,然后,再介绍修复方案。
排查的主要目的是确定你的项目是否使用了Spring框架。当然,你的项目有没有使用Spring框架开发者都知道。但是,如果公司项目比较多,为了规避风险,还要对一些老项目要进行排查。那老项目如何确定是否使用了Spring框架呢?
方法很简单,不管你的项目是用war独立部署还是用jar包独立部署,只需要对应的war或者jar包,将后缀改为zip包,然后将zip解压。在解压后的目录中搜索是否存在spring-beans-开头的jar包或者CachedInrospectionResults.class文件。如果存在就可以确定该项目使用了Spring。
确定项目使用了Spring框架以后,如何来修复可能存在的风险呢?
目前为止,Spring官方还没有给出解决方案。我先教大家一个简单粗暴的方案,可以临时解决问题。
1、如果安装了WAF防护,也就是Web应用防火墙,只需要追加这样一个防护规则“class.*Class.****.class.***.Class”,防止远程下载。
2、如果没有安装WAF,只需要在拦截器中增加对 class.*Class.****.class.***.Class 后缀请求的拦截就可以了。
按照这两步操作完之后,大家记得对业务运行情况进行测试,避免对已有功能造成影响。此次爆出的漏洞,攻击原理和之前Log4J爆出的漏洞原理差不多。如果大家对原理有兴趣的话,可以关注我发布的其他视频。