Springboot Maven或Gradle 解决log4j2漏洞

Springboot Maven或Gradle 解决log4j2漏洞,第1张

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的包依赖,直接中q,版本在漏洞范围。

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方式:

//第一种

    2.16.0


//第二种

    
        
            org.apache.logging.log4j
            log4j-bom
            2.16.0
            import
            pom
        
        ... other dependencies including spring-boot-dependencies
    

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进行的测试,采用官方第三种方式解决,并打包部署成功。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存