Springboot Maven或Gradle 解决log4j2漏洞

2023-11-17

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot Maven或Gradle 解决log4j2漏洞 的相关文章

随机推荐

  • 抖音,B站,小红书三大平台品牌投放特征与建议

    目前 小红书 抖音 B站作为品牌投放的主要平台 应该如何选择 一 抖音 平台特征 用户类型 抖音用户男女均衡 以19 30岁年龄阶段用户为主 一二线城市用户偏多 南方用户偏多 内容形式 表演剧情 vlog 颜值出境等丰富多样的短视频展示形式
  • 【雅思备考】写作表达积累

    小作文 Line graph amount of source of provided generating 用来描述来源 means of xxx generation 生产方式 over a period of over the per
  • 【重磅推荐】vue之web3.js以太坊开发总结与完整案例!

    一个完整的Vue web3 js 基于Metamask开发测试和正式上线 FirstContract sol文件 pragma solidity gt 0 4 24 lt 0 7 0 contract FirstContract strin
  • www外部异步加载(不卡)-适合大量加载

    www外部异步加载 不卡 适合大量加载
  • 第一二天作业-BGP MPLS + OSPF分流互备做法

    三 MPLS OSPF分流互备做法 MPLS OSPF分流互备做法配置命令 在中间骨干区域所有路由器先配置OSPF 然后在中间骨干区域所有路由器上配置MPLS 先创建mpls lsr id 在全局开启mpls 在全局开启mpls ldp 在
  • Linux操作系统的层次与组成

    1 Linux操作系统的层次结构 简单来说 Linux操作系统整体分为三层 1 硬件系统 包括CPU 内存 硬盘 网卡等 2 内核 这是操作系统的核心 负责管理硬件系统 同时为上层的应用程序提供操作接口 3 用户进程 表示计算机中运行的所有
  • java版微信和支付宝 支付的调起 和 回调

    写下项目中经常用到的微信和支付宝支付的拉起和回调的代码 1 支付参数和退款参数的封装 package co yixiang modules storePaymentOrder payment dto import lombok Data 支
  • tensorflow训练的模型,用C++ 部署,需要的看过来

    目录 1 先准备tensorflow 和 opencv 的lib 2 项目配置就不说了 3 试一下效果 4 代码 首先 感谢一下rockingdingo Issues rockingdingo tensorflow tutorial Git
  • 入行IT,为什么建议你学Java?

    计算机编程语言 顾名思义 是人用来跟计算机交流的编程语言 学好一门热门的计算机编程语言进入IT行业 获得较高的薪资是没有问题的 关键是热门的计算机编程语言超级多 计算机编程语言入门学什么好 当然是Java 想必很多朋友也很好奇 如此多的计算
  • 【Web方向】 PHP代码审计 CTF题目wp1

    目录 一 第一步 二 第二步 三 第三步 四 第四步 README 一 第一步 分析这道题 是要求使判断条件符合 然后输出flag 第一个if语句是不能直接给data赋值Welcome to CTF的 否则会这样无反应 查了下才知道这是因为
  • 四十一.枚举问题2.生理周期

    生理周期 解题思路 从d 1天开始 一直试到第21252天 对其中每个日期k 看是否满足 k p 23 0 k e 28 0 k i 33 0 include
  • 全自动高清录播服务器,全自动高清录播服务器 高清录播系统

    高清录播系统外观参数 规格参数是了解一台设备的基础 多家高清录播服务器对比之后发现虽有小异 却基本相同 那如何从外观参数上决出移动录播主机的是否高能呢 从外观看常规移动录播主机大小与功能成正比 其次 常规的移动录播主机虽配有高频 CPU 功
  • (Ext基础篇) 弹出窗口

    从外观上来讲 浏览器自带的alert confirm prompt等对话框并不好看 而且配置也不灵活 诸如按钮的添加 删除 以及修改按下按钮所触发的事件等操作都非常难以执行 而在EXT的msgbox里都能实现 而且外观相当漂亮 本节将详细介
  • Idea内存占用过高解决方法

    问题描述 大多数人都知道使用idea时 发现idea内存消耗比较严重 尤其开启了idea后 CPU占比可以直接飙升到100 这主要体现在刚启动的时候 系统的内存高达80 以上 甚至风扇呼呼作响 于是开始找各种解决方案 目前 就我个人电脑来说
  • Ruby on Rails微信开发1——开发模式的启用与接口配置

    参照博客 027 微信公众帐号开发教程第3篇 开发模式启用及接口配置 根据微信开发者文档 启用公共平台开发者模式并进行接口配置流程如下 加密 校验流程如下 1 将token timestamp nonce三个参数进行字典序排序 2 将三个参
  • Spark SQL 之 Temporary View

    Spark SQL 之 Temporary View spark SQL的 temporary view 是支持原生SQL 的方式之一 spark SQL的 DataFrame 和 DataSet 均可以通过注册 temporary vie
  • 华为OD机试真题-跳房子II-2023年OD统一考试(B卷)

    题目描述 跳房子 也叫跳飞机 是一种世界性的儿童游戏 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格 跳房子的过程中 可以向前跳 也可以向后跳 假设房子的总格数是count 小红每回合可能连续跳的步数都放在数组steps中 请问
  • 《三》微软Dynamics CRM 2016单服务器安装部署(Dynamics CRM 2016 安装)

    Microsoft Dynamic CRM 2016安装 在 AD域控和数据库服务器安装好的前提下 接下来我们来安装 Dynamic CRM Server 一 以具有管理员级别特权的用户身份登录到将安装Microsoft Dynamics
  • 如何使用Log4j?

    1 Log4j是什么 Log4j可以帮助调试 有时候debug是发挥不了作 用的 和分析 要下载和了解更详细的内容 还是访问其官方网站吧 http jakarta apache org log4j 2 Log4j的概念 Log4j中有三个主
  • Springboot Maven或Gradle 解决log4j2漏洞

    log4j2漏洞风靡全球 影响的版本范围 Apache Log4j 2 x lt 2 14 1 根据官方的解释需要将log4j2包的版本 升级到2 15 0 测试使用 Springboot 2 1 5 Gradle 6 3版本进行测试 当时