因近期安全扫描,发现java后端应用涉及多个引用组件版本过低,涉及潜在漏洞利用风险,特记录相关处理升级处理过程,以备后续确认;
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框架的版本升级;
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;
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 升级到最新版本后重新发包,部署到生产后确认。