日常常见应用组件升级记录

news2024/10/2 10:29:50

一、前言

因近期安全扫描,发现java后端应用涉及多个引用组件版本过低,涉及潜在漏洞利用风险,特记录相关处理升级处理过程,以备后续确认;

二、升级处理过程

2.1、Java类应用内置Spring Boot版本升级

Spring Boot是一款基于Spring框架的快速开发框架,它提供了一系列的开箱即用的功能和组件,但升级过程中可能会有一些特定于项目的配置或依赖项也需要进行对应的适配调整。版本升级前,在本地/测试环境中进行充分的测试和验证,确保没有引入新的兼容性问题或其他不可预见的错误;

目标:将 Spring Boot 升级到 2.5.15、2.6.15、2.7.12、3.0.7 及以上版本;否则涉及Spring Boot 拒绝服务漏洞(CVE-2023-20883);参考过程如下:

主要过程如下:

1、确定当前的Spring Boot版本:可以在项目的pom.xml文件中查看当前使用的Spring Boot版本号。有的里面使用环境变量引用,可直接看依赖BOOT-INF/lib/spring-boot-2.7.9.jar 包

2、查看官方文档:访问Spring Boot的官方文档网站(https://docs.spring.io/spring-boot/docs/)和版本发布,对比需要升级的目标版本,查看最新的发布版本和更新的内容。

3、更新pom.xml文件/依赖的spring-boot包:将pom.xml文件中的Spring Boot版本号改为最新的/需要的版本号。可以通过在Maven仓库中搜索最新的Spring Boot版本号,然后将其替换掉pom.xml文件中原有的版本号。

4、解决依赖冲突:升级Spring Boot版本可能会导致一些依赖冲突的问题。可以使用Maven的dependencyManagement元素来解决这些问题。在pom.xml文件中添加dependencyManagement元素,并将冲突的依赖项的版本号设置为所需的版本号。

5、运行测试用例:在升级完成后,运行项目的测试用例,确保升级后的版本没有引入新的bug或问题后,运行mvn package命令打出jar包,即发新的包进行部署

6、部署和运行:在升级完成后,重新构建项目并将其部署到服务器上进行测试和生产环境的运行。

在这里插入图片描述
在这里插入图片描述
另外可参考:spring boot中spring框架的版本升级;

2.2、Java类应用内置 MyBatis 组件升级

MyBatis是美阿帕奇(Apache)软件基金会的一款优秀的持久层框架。 MyBatis存在远程代码执行漏洞,该漏洞源于错误处理对象流的反序列化。攻击者可利用漏洞将对象反序列化后存储至redis服务器中。

目标:对现场后台应用组件 MyBatis 升级到 3.5.6 及以上版本;下载地址:https://github.com/mybatis/mybatis-3/releases,现场:BOOT-INF/lib/mybatis-3.4.6.jar,否则涉及MyBatis远程代码执行漏洞(CVE-2020-26945);升级过程同上,修改版本,调试无报错后重新发包,部署替换,升级到最新版Mybatis 3.5.15;

2.3、Apache Commons FileUpload 组件升级

Apache Commons FileUpload 包可以提供强大的、高性能的、文件上传能力。 Apache Commons FileUpload 存在安全漏洞,由于1.5 版本之前的Commons FileUpload对处理的请求部分的数量没有限制,攻击者有可能通过恶意上传或一系列上传触发 DoS。低于1.5版本的涉及Apache Commons FileUpload 拒绝服务漏洞(CVE-2023-24998);

目标:将 Commons FileUpload 升级到 1.5 及以上版本,下载地址;现场版本:BOOT-INF/lib/commons-fileupload-1.2.2.jar,该组件依赖java版本,现场Java版本 “1.8.0_391”,FileUpload组件还依赖于commons IO组件,现场版本:BOOT-INF/lib/commons-io-2.5.jar。

注:在Spring Boot开发的Web应用程序中,处理文件上传在早期的Spring Boot版本中,通常使用
commons-fileupload库来处理文件上传。然而,随着时间的推移,commons-fileupload库已经过时,不再推荐
使用,Spring Boot社区推荐使用commons-fileupload2-jakarta库来代替旧的commons-
fileupload库。

1、首先,确定当前使用的 Apache Commons FileUpload 版本。可以在项目的依赖管理文件(如 Maven 或 Gradle)中查看相关信息。

2、打开官方网站 https://commons.apache.org/proper/commons-fileupload/index.html,并导航到 “Download” 页面。根据需求选择最新的版本号,点击对应的下载链接获取 JAR 包。也可以通过 Maven 或 Gradle 等构建工具来添加依赖。

3、将下载得到的 JAR 包复制到项目的类路径下,或者将其添加为 Maven 或 Gradle 项目的依赖。

4、更新项目中所有引用了 Apache Commons FileUpload 的地方,确保正确调用新版本提供的 API。

5、运行测试,确认项目能够成功编译、部署和运行,调试修改现有代码以适配新版本。重新运行测试,确保没有因升级而引入任何错误或 bug。

6、将 Apache Commons FileUpload 升级到最新版本后重新发包,部署到生产后确认。

2.4、Apache Commons Collections 组件

Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并且实现了各种集合工具类。作为Apache开源项目的重要组件,Commons Collections被广泛应用于各种Java应用的开发。 Apache Commons Collections库实现了一个TransformedMap类,该类是对Java标准数据结构Map接口的一个扩展。该类可以在一个元素被加入到集合内时,自动对该元素进行特定的修饰变换,具体的变换逻辑由Transformer类定义,Transformer在TransformedMap实例化时作为参数传入。而Apache Commons Collections已经内置了一些常用的Transformer,如InvokerTransformer类。研究人员发现InvokerTransformer类可以通过调用Java的反射机制来调用任意函数,从而导致任意代码执行。 Apache Commons Collections在3.2.2版本中做了一定的安全处理,对InvokerTransformer、InstantiateTransformer等不安全的Java类的序列化支持增加了开关,开关默认为关闭状态。 如果没有开启不安全类的序列化开关,漏洞利用时则会抛出异常。 Commons Collections4中也存在内置的可能被攻击的类,存在被反序列化利用的风险。

目标:将 Apache Commons Collections 升级到 3.2.2、4.1 及以上版本,版本可参考下载地址,否则涉及Apache Commons Collections 反序列化漏洞;现场版本:BOOT-INF/lib/commons-collections-3.2.jar;需升级到最新的3.3.3版本,它依赖Java 1.3及以上,现场Java版本为:1.8.0_391。

jar -tf ./dialup-service.jar |grep "commons-collections"  #输出如下
BOOT-INF/lib/commons-collections-3.2.jar
BOOT-INF/lib/commons-collections4-4.1.jar

#下载最新版本的 commons-collections。,将最新版本的 commons-collections 复制到我们的项目中的 BOOT-INF/lib 目录下

#更新项目中的依赖关系,编辑pom.xml 文件中,将 commons-collections 的版本号更新为最新版本

#重新编译和运行项目,直到无报错后,重新发包,部署替换,完成升级

2.5、Flink引用hadoop

Apache Hadoop是美国阿帕奇(Apache)基金会的一套开源的分布式系统基础架构。该产品能够对大量数据进行分布式处理,并具有高可靠性、高扩展性、高容错性等特点。 Apache Hadoop YARN CapacityScheduler 中的 ZKConfigurationStore 由于没有验证从 ZooKeeper 获得的数据就进行反序列化处理,使得有权访问 ZooKeeper 的攻击者通过特制数据以 YARN 用户身份运行任意命令。

目标:将 Hadoop 升级到 2.10.2、3.2.4、3.3.4 及以上版本,版本选择参考下载地址;现场版本:hadoop-3.3.2(官方建议升级到 3.3.6)、flink-1.15.1;低于此版本的涉及Apache Hadoop YARN 远程代码执行漏洞(CVE-2021-25642)。

2.6、XXL-JOB应用

XXL-JOB是一个轻量级分布式任务调度平台。默认情况下XXL-JOB的API接口没有配置认证,在API接口未授权访问的情况下,攻击者通过向API发送精心构造的请求,可以造成远程命令执行。下载地址:https://gitee.com/xuxueli0323/xxl-job

目的:默认不配置认证确公网暴露的情况下,涉及XXL-JOB API 接口未授权访问远程命令执行漏洞,因此我们需增加授权验证,配置 xxl.job.accessToken 防止未授权访问漏洞。

#调度中心配置文件地址
/xxl-job/xxl-job-admin/src/main/resources/application.properties
### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=Weq34r2
#相关文件说明
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
xxl-job-executor-sample-frameless:无框架版本;

#执行器 AccessToken 配置:xxl-job-executor-sample-springboot
xxl:
  job:
    accessToken: Weq34r2
    admin:
      addresses: http://127.0.0.1:8080/xxl-job-admin

或直接页面配置,打开http://localhost:80807/xxl-job-admin/:
在这里插入图片描述

2.7、Java应用内置tomcat组件

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 Tomcat存在输入验证错误漏洞,该漏洞源于存在不正确的输入验证漏洞,可能会导致将单个请求视为多个请求,从而在反向代理后面出现请求走私。

目标:将 Tomcat 升级到 11.0.0-M11、10.1.16、9.0.83(官方最新9.0.85)、8.5.96 及以上版本,版本参考官网;低于9.0.80版本的涉及Tomcat 输入验证错误漏洞(CVE-2023-46589)、Tomcat 输入验证错误漏洞(CVE-2023-45648)、Tomcat 开放重定向漏洞(CVE-2023-41080),低于9.0.71版涉及Tomcat 拒绝服务漏洞(CVE-2023-24998)、低于9.0.72版涉及Tomcat 安全漏洞(CVE-2023-28708)、Tomcat Session 反序列化代码执行漏洞(CVE-2021-25329);对低于8.5.68、9.0.48、10.0.7 的Tomcat 涉及请求走私漏洞(CVE-2021-33037)、低于9.0.40涉及Tomcat 本地权限提升漏洞(CVE-2022-23181)、Tomcat 拒绝服务漏洞(CVE-2022-29885)、Tomcat 信息泄露漏洞(CVE-2021-24122)。

jar -tf dialup-controller.jar|grep "tomcat"  #版本检查
BOOT-INF/lib/tomcat-embed-core-9.0.76.jar
BOOT-INF/lib/tomcat-embed-el-9.0.76.jar
BOOT-INF/lib/tomcat-embed-websocket-9.0.76.jar
#下载最新版本的 Tomcat Embed Core JAR 文件
wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.85/bin/embed/apache-tomcat-9.0.85-embed.tar.gz
#替换现有的现有的 tomcat-embed-core-9.0.76.jar 文件
mv tomcat-embed-core-9.0.76.jar tomcat-embed-core-9.0.76.jar.bak
mv tomcat-embed-core-9.0.85.jar tomcat-embed-core-9.0.76.jar

#重新编译发布我们的java应用
mvn clean install
java -jar target/dialup-controller.jar
#部署替代环境现有应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】之字符串系列-20240121

这里写目录标题 一、344. 反转字符串二、125. 验证回文串三、205. 同构字符串四、242. 有效的字母异位词五、290. 单词规律 一、344. 反转字符串 简单 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额…

java SSM政府采购管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM政府采购管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

【UE5】第一次尝试项目转插件(Plugin)的时候,无法编译

VS显示100条左右的错误,UE热编译也不能通过。原因可能是[名字.Build.cs]文件的错误,缺少一些内容,比如说如果要写UserWidget类,那么就要在 ]名字.Build.cs] 中加入如下内容: public class beibaoxitong : ModuleRules …

UML序列图入门

使用工具:processOn可免费建9个文件 UML:Unified Modeling Language 统一建模语言 ProcessOn - 我的文件 一、介绍 序列图是基于对象而非基于类; 从上到下:展示了处理过程中,每个对象的生命周期; 从左到…

从白子画到东方青苍,你选择谁来守护你的修仙之旅?

从白子画到东方青苍,你选择谁来守护你的修仙之旅? 在繁花似锦的修仙世界中,每一位追梦者都渴望有那么一位守护者,与你共患难,共成长。热血与浪漫交织的《花千骨》与《苍兰诀》,给我们带来了两位风华绝代的守护者:白子…

ST-GCN 人体姿态估计模型 代码实战

构建一个ST-GCN(Spatio-Temporal Graph Convolutional Network)模型需要结合图卷积网络(GCN)的思想,以处理时空数据。以下是一个简单的例子,演示如何使用PyTorch构建ST-GCN模型: import torch …

偷偷浏览小网站时,原来有这么多人已经知道

最近看到一篇挺有意思文章,偷偷浏览小网站时,都有谁会知道你看了啥。思量之下,从更广泛的技术角度看,仍有大量补充的空间,于是就有了这样一篇文章。本文的目的在于增强大家的网络安全意识,非必要不要浏览不…

护眼灯品牌哪个好?护眼灯最好的品牌排行

很多家长在帮助孩子选购台灯时可能会遇到一些困扰,而市面上存在许多质量不合格的台灯。曾经有央视节目曝光了许多LED台灯存在严重不合格的情况。尽管目前对于台灯执行强制性产品认证,并不定期进行抽样检查,但仍然存在一些未强制认证的产品在市…

EF Core实操,数据库生成实体,迁移

EF Core实操,数据库生成实体,迁移 大家好,我是行不更名,坐不改姓的宋晓刚,下面将带领大家进入C#编程EF Core数据库基础入门知识,如何连接数据库,如何编写代码,跟上我的步伐进入EF Core数据库下的世界。 家人们,如果有什么不懂,可以留言,或者加我联系方式,一起进入…

python系列-顺序/条件/循环语句

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 目录 顺序语句 条件语句 什么是条件语句 语法格式 缩进和代码块 空语句pass 循环语句 while循环 for循环 continue break 顺序语句 默认情况下,Python的代码执行…

Elasticsearch+Kibana 学习记录

文章目录 安装Elasticsearch 安装Kibana 安装 Rest风格API操作索引基本概念示例创建索引查看索引删除索引映射配置(不配置好像也行、智能判断)新增数据随机生成ID自定义ID 修改数据删除数据 查询基本查询查询所有(match_all)匹配查…

为什么 HTTPS 协议能保障数据传输的安全性?

HTTP 协议 在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。 HTTP 协议介绍 HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。 HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆…

C++ | 五、哈希表 Hash Table(数组、集合、映射)、迭代器

哈希表基础 哈希表是一类数据结构(哈希表包含数组、集合和映射,和前两篇文章叙述的字符串、链表平级)哈希表概念:类似于Python里的字典类型,哈希表把关键码key值通过哈希函数来和哈希表上的索引对应起来,之…

BGP AS-Path 选路试验

一、拓朴图: 实验要求:R5 通过改变对端传入的 AS-Path 路由策略,使原来较长的 AS-Path 成为最优 二、步骤: 1、配置IP 2、R1、R2、R3 配置 IGP 3、R1、R2、R3 配置 BGP,将 R1 创建的 Loop 100.1.1.1 的环回口在 IBGP …

uni-app小程序:文件下载打开文件方法苹果安卓都适用

api: const filetype e.substr(e.lastIndexOf(.)1)//获取文件地址的类型 console.log(文档,filetype) uni.downloadFile({url: e,//e是图片地址success(res) {console.log(res)if (res.statusCode 200) {console.log(下载成功,);var filePath encodeURI(res.tempFilePath);…

【第三课课后作业】基于 InternLM 和 LangChain 搭建你的知识库

基于 InternLM 和 LangChain 搭建你的知识库 1. 基础作业: 环境配置 1.1 InternLM 模型部署 创建开发机 进入 conda 环境之后,使用以下命令从本地一个已有的 pytorch 2.0.1 的环境,激活环境,在环境中安装运行 demo 所需要的依…

【赠书第17期】Excel高效办公:文秘与行政办公(AI版)

文章目录 前言 1 了解Excel的强大功能和工具 2 提升Excel技能的方法 3 结合AI技术提升Excel应用 4 注意事项 5 推荐图书 6 粉丝福利 前言 随着人工智能(AI)技术的快速发展,我们的工作方式也在发生深刻变革。其中,Excel 作…

Ubuntu上安装部署Qt

首先需要下载对应的虚拟机软件和ubuntu镜像,虚拟机软件使用VMware或者Virtual Box都行,我用的是前者,这里是VMware的下载链接:下载 VMware Workstation Pro | CN。Ubuntu镜像推荐去清华的网站下载:Index of /ubuntu-re…

如何查找设备的公共IP地址?这里提供三种方法

每个以某种方式连接到互联网的设备都有一个IP地址。这是你的设备使用的唯一标识符,可以被互联网或本地网络上的其他设备识别。 如果你使用的是直接连接到互联网的智能手机或平板电脑等设备,你的公共IP地址将由你的移动运营商直接分配。 另一方面,如果你使用的是连接到本地…

CentOS 系统创建网卡bond0

很多时候在机房运维的过程中,我们会遇到客户要求的建立网卡光口的bond0设置,通俗点说就是将两个光口合并为一个口进行链接设置。创建这个设置是有两种设置,一是在安装系统的过程中对bond0进行创建设置,另一种就是通过系统里面对网…