1、前景
最近公司运维通过漏洞软件,扫描出一些漏洞。有一些后端相关的软件或Java依赖包漏洞,我这边开始做起了漏洞处理。本次处理的漏洞中,以Nacos中包含的漏洞依赖包为例(以下实践都是与此相关),分别存在了以下2个漏洞:
【Spring 框架反射型文件下载漏洞 (CVE-2020-5421)】
【Jackson-databind 反序列化漏洞 (CVE-2021-20190)】
2、漏洞修复过程
2.1 漏洞版本信息
这2个漏洞,我这边都找到了对应的处理方法说明贴,链接如下:
处理【Spring 框架反射型文件下载漏洞 (CVE-2020-5421)】:Spring Framework反射型文件下载漏洞风险通告,腾讯主机安全(云镜)支持检测
处理【Jackson-databind 反序列化漏洞 (CVE-2021-20190)】:Jackson-databind反序列化漏洞(CVE-2021-20190 )风险通告
然后按照上述处理信息中,开始找到对应的安全依赖包版本。通过安全处理建议中,可以知道:
Spring Framework安全版本:
5.2.9
5.1.18
5.0.19
4.3.29jackson-databind安全版本:
>=2.9.10.7
我们服务器所使用到的nacos server版本是1.1.4版本,其中spring框架的核心相关包都是5.1.3版本:
而json-databind的版本是2.9.10版本:
所以,目前使用的nacos server端1.1.4版本,是有以上2个漏洞风险的。
2.2 快捷查找所需的安全版本
找安全版本的软件或依赖包,需要下载安装之后,才能看到具体的包引用版本。于是这里出现了一个很费时间的步骤:
1、需要下载软件或依赖包(如果包很大,几百M之类,下载就会看网速了,可能会很慢,我下载就很慢)
2、下载之后,需要安装或使用IDEA打开明细,去查找具体的包,查看对应版本(一个个去找时,很费时)
所以,如何不安装软件或应用,直接查看软件内依赖包的版本信息?
①第一步,进入下载地址,下载软件使用的资源包(注意:不是安装包,资源包一般会小很多)
我这边nacos的下载地址是:Tags · alibaba/nacos · GitHub
这个页面里,由近及远的各个版本,我这边选择查看1.4.0版本(当然我这边版本就是我所需的安全版本,找过好几遍了,这里只是做一个查找操作的分享说明)。点击1.4.0后,进入如下页面:
最下面的Assets里面有4栏可以下载的链接,前面两个分别是linux和window使用的安装包,可以看到有75M+。(我因为网速一般,下载了很久)而第三四栏,就是nacos 1.4.0版本使用到的资源包了,我这里直接下载了window的资源包(大家按需下载),这个包较小,下载的很快。
②第二步,打开资源包,查看pom文件,查找依赖包的版本(结合maven远程仓库查找)
下载完成后,使用zip工具,打开压缩包,直接解压出里面的pom.xml文件,查看nacos使用到的maven依赖情况。
打开pom文件,查看依赖版本:
可以看到,jackson-databind的版本是>2.9.10.7版本的,也就是安全本。。接下来,,在看看Spring Framework的版本,因为pom中依赖的是spring-boot-dependencies版本是2.1.17.RELEASE,看不到对应的Spring核心包的版本。此时,我们就需要到maven远程仓库查找一下了。先搜索spring-boot-dependencies,如图:
往下翻,查看spring相关的核心包依赖情况:
点进spring-framework-bom中,也拉到下面的依赖信息列表:
这里可以看到,spring的核心包相关,都是使用的5.1.18,对照上述的安全版本信息,可以发现5.1.18是属于安全版本的。至此,也就说明,这个nacos server 1.4.0版本,是安全可用的版本了。
如果你不放心,可以直接待nacos安装包下载完成之后,在target目中,有一个nacos-server.jar,使用工具打开jar包,查看一下,如图所示:
③第三步,切换安全版本的安装包或依赖包
安全的包找到之后,就可以开始切换啦。但是这里需要注意,因为切换可能会因为版本差异,存在一些未知的问题。所以,需要谨慎操作。并且在开发环境,测试验证通过,运营稳定之后,再视情况切换到生产。
3、总结
本次修复漏洞的实践分享,就到这里啦。其实本次,主要是想记录一下如何快速找到安全版本的安装包或依赖包的经验,希望能帮助到遇到类似问题的朋友们~~
另外,升级安装包或依赖包,一定要注意版本不同,可能或带来一些差异,或是报错等异常问题,所以,需要非常谨慎。建议在,开发测试环境,实践运行观察稳定之后,再切换到生产环境。避免线上出BUG,那就难搞了额!!!