最近使用HUB工具检查到maven工程中存在高危险漏洞,虽然定位到具体的引用包了,但是在pom文件中却没有发现该依赖包。此时,我们就需要用到这条命令mvn dependency:tree,该命令会将maven工程所依赖的包按照树形格式展示出来,我们可以将输出内容导入到一个文本中,例如:mvn dependency:tree > jar.txt  ,输出信息类似于下图所示:

  从上图的示例中可以看到该工程直接依赖了两个jar包,分别是com.alibaba:fastjson:jar:1.2.51和org.apache.poi:poi-examples:jar:4.0.1,但是org.apache.poi:poi-examples:jar:4.0.1包中又引用了其它的包,也就是说该工程中间接依赖了其它的包。注意了,上图中的 "+-" 和"\-"并没有什么意义,只是为了让分级看起来更加直观;当然我们可以根据缩进情况可以确定哪些包是工程直接引用的,而哪些包又是间接引用的。最近用HUB工具检查产品代码质量时发现一个高风险漏洞,但是该漏洞是在一个间接引用包中,所以在pom文件中是不能检索的到的,这是我们就需要借助上述命令了。那现在知道方法,如何处理呢?首先,看看HUB工具检查到的问题现象,如下图所示:

 

  接着,通过mvn dependency:tree > jar.txt命令将maven工程所依赖的包关系导出,如下图所示:

  从上面两幅图中分析可知:工程中间接用到的包commons-collections:commons-collections:jar版本是3.2.1,经过HUB工具检查,发现该版本存在高风险漏洞,需要升级到3.2.2版本,才可以解决该高危问题。此外,从上图中我们还可以知道commons-collections:commons-collections:jar:3.2.1包是在net.sf.json-lib:json-lib:jar:jdk15:2.4包中被依赖的,那么若想升级commons-collections:commons-collections:jar的版本,那么就需要升级net.sf.json-lib:json-lib:jar:jdk15版本。据此,我当时就认为只要从maven官网查看一下net.sf.json-lib:json-lib:jar:jdk15包最新的版本是多少,然后在被涂鸦的包中修改一下pom文件中依赖该包 的版本号就可以了;可结果很意外,并非我所期望。我在maven官网看到的net.sf.json-lib:json-lib:jar:jdk15包最新版本就是2.4,如下图所示:

  既然上述的修改策略不可用,那么在被涂鸦的包中可以直接使用net.sf.json-lib:json-lib:jar:jdk15:2.4依赖包,但是不要间接使用该包中的commons-collections:commons-collections:jar:3.2.1依赖包,我们可以在涂鸦的包中直接依赖commons-collections:commons-collections:jar包。在maven官网中可以找到commons-collections:commons-collections:jar包的3.2.2版本,如下图所示:

  最后,我们再看看maven中所依赖包的情况,如下图所示:

  从上图中可以看出,commons-collections:commons-collections:jar:3.2.2包和net.sf.json-lib:json-lib:jar:jdk15:2.4处于同一级,都是被直接依赖的包。到此,我们的产品高危漏洞也就得到解决了。

------20191230闪

如何处理pom文件中没有找到HUB检查到高危漏洞的依赖包的更多相关文章

  1. Maven项目中在properties 中使用 ${} 来引用pom文件中的属性

    比如在pom文件中定义了属性如下: <jdbc.host.global>127.0.0.1</jdbc.host.global> <jdbc.databasename.g ...

  2. idea中的pom文件中的jar包下载不了,手动下载jar包的方法

    问题描述: 在pom文件中添加依赖的时候,程序怎么着都是下载不了,而且实验了各种方式: IDEA引MAVEN项目jar包依赖导入问题解决 https://www.cnblogs.com/a845701 ...

  3. 【IDEA】Maven踩坑:pom文件中的默认profiles不生效+IDEA中Maven的profiles使用说明

    一.问题即分析 项目pom文件中的profiles有3个配置:dev.test和production 默认配置的是dev,如下图: 但在本地起服务时,读取的配置始终是test里的. 二.原因 2.1 ...

  4. Maven pom文件中dependency scope用法

    在Maven中依赖的域有:compile.provided.runtime.system.test.import 一.compile(默认) 当依赖的scope为compile的时候,那么当前这个依赖 ...

  5. maven在pom文件中引入了icepdf-core包,pom文件却莫名的报错,说jai_core包missing

    maven在pom文件中引入了icepdf-core包,却莫名的报错,说jai_core包missing,把这个jai_core包引入之后还是一样报错,PS:icepdf-core使用的时候不用引用j ...

  6. maven在pom文件中添加你想要的jar包

    概述:POM 文件里面的依赖jar包经常需要添加, 仅需要在google中代码查找 :maven 你需的jar包名称 repository 用了Maven,所需的JAR包就不能再像往常一样,自己找到并 ...

  7. maven项目,导入的jar包,没有包含在pom文件中,install失败

    [INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[ ...

  8. 关于使用命令添加jar进自己的pom文件中-maven项目添加jar包

    现在几乎开发项目都是使用的maven项目,但是有的时候可以使用比较偏门或者新的jar可能在网上搜不到在pom文件里的配置应该如何写,因此写下这篇博客. 比如我现在想加入的AAA.jar这个包 打开cm ...

  9. pom文件中maven-assembly-plugin插件学习

    一.使用场景 如果项目是微服务架构,可能用到这个插件的概率比较高,平时普通的项目不需要这样的实现方式. 如果项目内的一部分通用功能,不需要挨个引用,则需要将通用功能部分达成jar包. 二.Maven- ...

随机推荐

  1. Axure实现抽奖转盘(二)

    这个小应用主要用到了以下功能: 1.生成一个0-360之间的随机数,保存至变量: 2.旋转转盘到达指定角度,案例中为3-4圈(1080+变量): 3.转盘逐渐停止通过动画(缓慢退出)实现: 4.转盘停 ...

  2. webpack--介绍、安装及入门

    最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <scr ...

  3. c#音乐播放器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. js文本复制插件&vue

    /* HTML: * <a href="javascript:;" class="copy" data-clipboard-text="copy ...

  5. js—数字那些事儿

    进制之间互相转化 a=133 十进制转成其他进制 a.toString(num) a.toString(2); //转化成二进制,返回"10000101" a.toString(8 ...

  6. pikachu-远程代码、命令执行漏洞(RCE)

    一.RCE概述 1.1 什么是RCE? RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 1.2 远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要 ...

  7. Caliburn.Micro框架之Action Convertions

    首先新建一个项目,名称叫Caliburn.Micro.ActionConvertions 然后删掉MainWindow.xaml 然后去app.xaml删掉StartupUri这行代码 其次,安装Ca ...

  8. 在webform中使用ajax

    如果你用过Asp.net webform, 说明你也算是.NET 开发的老兵了.WEBform应该是2011-2013左右,当时还用visual studio 2005. visual studio ...

  9. 嗅探、DNS劫持配合CS钓鱼

    本章节讲述的是嗅探和DNS劫持的利用 嗅探:同一个局域网下,原本应该丢弃的包,被保留下来,即使不开双向欺骗 Driftnet工具:Driftnet监视网络流量,抓取网络流量中的JPEG和GIF图像.这 ...

  10. IDEA 修改编码

    IDEA: 一. 文件编码修改 IntelliJ IDEA可以在菜单中的File -> Settings -> Editor -> File Encoding下修改项目文件的编码 1 ...