解决maven工程中依赖漏洞问题

工程上不可避免的引入的依赖发生CVE漏洞的情况,像比较有名的log4j 1.x的远程执行漏洞,对于已知的漏洞可以使用dependency check来进行漏洞扫描,发现工程上的漏洞。本文旨在如何发现工程上的漏洞,如何解决依赖漏洞。

1、dependency check

官网 可以下载command line来执行扫描,第一次运行需要下载很多信息,时间较长(猜测是CVE相关的数据),查看帮助:

shell 复制代码
 bin/dependency-check.sh --help

扫描产出:

shell 复制代码
bin/dependency-check.sh -s /path/to/jar -o /output

2、maven依赖分析

两个命令:

查看maven工程的依赖树

shell 复制代码
mvn dependency:tree

查看具体某个依赖坐标的情况,比如查看groovy的依赖引入情况:

shell 复制代码
mvn dependency:tree -Dverbose -Dincludes=org.codehaus.groovy:groovy

这样我们能看到依赖是如何引入的,以及引入的scope,在修复完成后,也能通过这种方式来验证依赖全部修复完成。

3、处理漏洞

发现了漏洞就需要对依赖做升级或者剔除处理:

  • 升级 ,在maven中央仓库中寻找高版本,不含有CVE漏洞的,进行版本升级,版本升级有可能涉及到工程代码的变动,比如log4j1.x升级到log4j2.x配置文件会有变动,版本之间的兼容性问题需要考虑和解决。
  • 剔除,对于引入漏洞的jar包,我们可以进行定向剔除,追踪到引入漏洞的依赖,定点排除无用的jar,善用
xml 复制代码
<exclusions>
    <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </exclusion>
</exclusions>
  • 剔除and升级 , 当依赖的jartransitive scopecompile来引入的,如果做简单的剔除,代码有问题,这时候可以做定向升级,做法是先进行定向排除,再单独引入高版本进行升级处理。比如:
xml 复制代码
<dependency>
    <groupId>xxxxx</groupId>
    <artifactId>xxxx</artifactId>
    <version>x.x.x</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
        </exclusion>
   </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro</artifactId>
    <version>1.11.0</version>
</dependency>
相关推荐
.生产的驴20 分钟前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
景天科技苑28 分钟前
【Rust】Rust中的枚举与模式匹配,原理解析与应用实战
开发语言·后端·rust·match·enum·枚举与模式匹配·rust枚举与模式匹配
追逐时光者1 小时前
MongoDB从入门到实战之Docker快速安装MongoDB
后端·mongodb
方圆想当图灵1 小时前
深入理解 AOP:使用 AspectJ 实现对 Maven 依赖中 Jar 包类的织入
后端·maven
豌豆花下猫2 小时前
Python 潮流周刊#99:如何在生产环境中运行 Python?(摘要)
后端·python·ai
嘻嘻嘻嘻嘻嘻ys2 小时前
《Spring Boot 3 + Java 17:响应式云原生架构深度实践与范式革新》
前端·后端
异常君2 小时前
线程池隐患解析:为何阿里巴巴拒绝 Executors
java·后端·代码规范
mazhimazhi2 小时前
GC垃圾收集时,居然还有用户线程在奔跑
后端·面试
Python私教2 小时前
基于 Requests 与 Ollama 的本地大模型交互全栈实践指南
后端
ypf52082 小时前
Tortoise_orm与Aerich 迁移
后端