Springboot Maven或Gradle 解决log4j2漏洞

log4j2漏洞风靡全球
影响的版本范围:Apache Log4j 2.x <= 2.14.1
根据官方的解释需要将log4j2包的版本:升级到2.15.0。

测试使用 Springboot 2.1.5 + Gradle 6.3版本进行测试。
当时以为Springboot已经天下无敌了,完全不需要考虑,结果现实比较打脸,根据gradle的包依赖,直接中枪,版本在漏洞范围。

1. 解决方法一 (方法现阶段不可用)
      升级Springboot版本,查询最新的Springboot包结构,根据Gradle包结构查询,发现最新的依赖也在漏洞范围内,可能后续Springboot更新会将这个问题改变。

2. 解决方法二 (不推荐用):
通过Gradle包的排除方式排除相应的包,但是存在一个问题,不推荐的原因也在这里,虽然系统根据排除包的方式不去引用,但是打成Jar包的时候还会存在这个包,引用环境包变了,还是会存在。下图讲解

gradle排除包写法:

	implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.16.0'
	compile ('org.springframework.boot:spring-boot-starter-logging:2.1.5.RELEASE') {
		exclude group: 'org.apache.logging.log4j:log4j-to-slf4j:2.11.2'
		exclude group: 'org.apache.logging.log4j:log4j-api:2.11.2'
	}

我们看到包已经升级包括代码包,但只是解决你代码层面替换了版本,实际包还会存在。

打成jar包发现 包已更新,但是还是不彻底,因为jar包中的依赖还是存在,只不过没有引入,如果公司扫描包的话还是会发现这个问题,虽然你没有应用。

到这里本人想到的方式就这些,最终百度下官网看看解决办法。

3. 根据官网的方式解决办法,(本人在项目中采用第三种方式)。
Gradle:官方

 maven:官方


官方地址:Log4J2 Vulnerability and Spring Boot
Maven方式:

//第一种
<properties>
    <log4j2.version>2.16.0</log4j2.version>
</properties>

//第二种
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-bom</artifactId>
            <version>2.16.0</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        ... other dependencies including spring-boot-dependencies
    </dependencies>
</dependencyManagement>

Gradle:

第一种:
ext['log4j2.version'] = '2.16.0'
第二种:
implementation(platform("org.apache.logging.log4j:log4j-bom:2.16.0"))
第三种:
configurations.all {
	resolutionStrategy.eachDependency { DependencyResolveDetails details ->
		if (details.requested.group == 'org.apache.logging.log4j') {
			details.useVersion '2.16.0'
		}
	}
}

项目中应用Gradle进行的测试,采用官方第三种方式解决,并打包部署成功。

由于时间关系没有详细的整体格式和讲解,有问题请直接联系。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值