一、背景说明
客户使用的是阿里云的云服务,阿里云上面的渗透测试扫描会定期对运行在上面的云服务进行漏洞检查,因此没有几轮的漏扫是不会放过你了额。
这次收到了如下的内容
ContainerName:commonprovider, ImageName:commonprovider:V0.2.12_Server_T;软件:apache-calcite 1.27.0
命中:["apache-calcite version less than 1.32.0"]
路径:/data/commonProvider-1.0.0.jar(BOOT-INF/lib/calcite-core-1.27.0.jar)
扩展信息:{}
二、报错内容分析
从报错内容来看,是BOOT-INF/lib/calcite-core-1.27.0.jar的版本有问题。
从报错解释看,官方已发布安全更新。Apache Calcite 1.32.0 已修复该漏洞,建议升级至Apache Calcite 1.32.0 及其以后版本。
但是我并没有引入过这个jar包啊,为啥会扫出这个内容啊。
于是,我顺藤摸瓜,将这个jar包改了后缀名变成了zip包,然后查看里面的目录BOOT-INF/lib/
发现确实有这个文件,但是这个文件究竟怎么来的呢?
忽然想起,会不会是其他我引入的jar包的,解决一查,还真的是,
这里使用IDEA中的Maven Helper插件
三、IDEA中的Maven Helper插件的使用介绍
3.1 Maven Helper插件的安装
打开Intellij IDEA软件,点击顶部的File菜单,然后选择下拉菜单中的Settings选项。
在弹出的Settings界面,选择Plugins选项。
在搜索框中输入maven选项,然后在检索出的结果中找到Maven Helper选项进行安装即可。
去到项目的pom.xml文件点击后,在pom.xml文件,在下面text(文本)的右边,会显示多了个“Dependency Analyzer”的Tab选项
当切换到“Dependency Analyzer”视图后,可以发现如下界面
3.2 Maven Helper插件的两大作用
3.2.1 在Maven项目中排除依赖项
点击Exclude按钮后,Maven Helper会自动在pom.xml文件中添加exclusion相关代码,进行子依赖的排除,这样就可以快速排除依赖,还免去了自己手写代码。
3.2.2 在依赖分析中显示依赖项的详细信息
详细信息包括版本号、传递性依赖、依赖树等,帮助开发者更好地理解和分析项目的依赖关系。
使用搜索功能,输入calcite, 点击Fliter的按钮,可以看到整个的依赖树如下
原来下面这个依赖有问题。
查看后发现,正是漏洞提示的版本。
四、报错内容解决
定位了问题的依赖,以下是两个可能的参考解决方案
(1)升级对应的shardingsphere-jdbc-core-spring-boot-starter依赖的版本
(2)或者移除对应的内容(这个是我们的解法)