背景:接到通告,部分依赖存在漏洞风险,项目需要进行依赖版本升级
依赖名称 | 问题描述 | 风险 | 解决方案 |
---|---|---|---|
Jackson-databind | ackson-databind<=2.910.8本存在远程代码执行漏洞 | 服务器沦陷 | 升级Jackson-databind>2.9.10.8版本 |
Xstream | XStream <=1.4.19版本存在反序列漏洞 | 服务器沦陷 | 升级XStream >1.4.19版本 |
1、整理思路
(1)我们的目标肯定是要将项目的依赖汇聚起来并且能够查询,最好的办法就是打印项目依赖树
(2)依赖树打印出来后,我们就可以直接查询相关的依赖包是包含在哪些依赖里面
2、安装打印插件Maven Dependency Checker
3、用idea打开项目,在父工程pom目录下,执行maven命令
D:\code\shop-cloud> mvn dependency:tree
4、查看打印结果,大概如下。可以直接Ctrl+F查询有问题依赖,进而找到具体引用的地方
5、到maven仓库查找适合版本的依赖,Vulnerabilities项尽可能不要有红色字体,有红色字体的都是有一些问题的版本。
6、进行依赖升级
这里拿jackson-databind为例,在父工程pom中properties先添加版本号,再添加依赖
<properties>
<jackson.version>2.11.0</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
7、检查当前项目实际引用的依赖版本
右键点击项目=》maven=>show Effective POM
Ctrl+F 搜索依赖检查,正确无误
8、还差很重要的两步,以下两个步骤都通过,则升级成功!
(1)编译项目,需要通过
(2)运行项目,需要通过
该流程说明主要是记录一下解决问题的流程,也结合了网上的意见说明,并非唯一手段