SpringBoot解决Apache Tomcat输入验证错误漏洞

Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat存在输入验证错误漏洞,该漏洞源于HTTP/2请求的输入验证不正确,会导致拒绝服务。

修复方案

目前,官方漏洞修复版本已经发布。建议用户升级到安全修复版本: 8.0.x 用户升级组件到 8.5.99 版; 9.0.x 用户升级组件到 9.0.86 版; 10.0.x 用户升级组件到 10.1.19 版; 11.0.x 用户升级组件到 11.0.0-M17 版 。参考链接:https://tomcat.apache.org/

扫描到服务器存在漏洞风险,建议立即对相关主机进行快照备份,避免遭受损失。

参考链接

https://lists.apache.org/thread/4c50rmomhbbsdgfjsgwlb51xdwfjdcvg

Apache Tomcat中存在一个输入验证错误(也称为CVE-2022-23708)漏洞,这是因为Tomcat在处理HTTP/2请求时未能正确验证请求头部的大小,可能导致内存溢出漏洞。攻击者可以构造特制的HTTP/2请求,利用此漏洞发起攻击,如果攻击成功,可能会导致服务器崩溃或执行任意代码。

解决方法:

升级 org.apache.tomcat.embed 依赖版本到 9.0.86。

修改pom.xml文件:

XML 复制代码
        <!-- tomcat -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.86</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
            <version>9.0.86</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
            <version>9.0.86</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-annotations-api</artifactId>
            <version>9.0.86</version>
        </dependency>

        <!-- Exclude conflicting dependencies -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-el</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-websocket</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-el</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-websocket</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
相关推荐
doshy_1 小时前
aws协议实现文件管理
java·spring boot·aws
恩爸编程5 小时前
RabbitMQ 在 Spring Boot 项目中的深度应用与实战解析
spring boot·rabbitmq·java-rabbitmq·rabbitmq使用·rabbitmq使用介绍·rabbitmq使用详细讲解·rabbitmq系统怎样使用
MasterNeverDown5 小时前
spring boot Linux dockerfile与Windows dockerfile区别
linux·windows·spring boot
Json____5 小时前
2. 使用springboot做一个音乐播放器软件项目【框架搭建与配置文件】
java·spring boot·后端·音乐播放器·音乐播放器项目·java项目练习·springboot练习
昱禹7 小时前
使用spring-ws发布webservice服务
xml·java·spring boot·spring·webservice·spring-ws
zhexiao277 小时前
Springboot Rabbitmq + 线程池技术控制指定数量task执行
spring boot·rabbitmq·java-rabbitmq
荆州克莱7 小时前
腾讯二面:MySQL的半同步是什么?不是MySQL的两阶段提交,那是什么?
spring boot·spring·spring cloud·css3·技术
ss2738 小时前
2025新年源码免费送
java·前端·javascript·spring boot·后端·html
寒冰碧海8 小时前
Spring Boot + MyBatis Plus 存储 JSON 或 List 列表全攻略
java·spring boot·后端·json·list·mybatis
孤蓬&听雨9 小时前
Java SpringBoot如何生成唯一的订单号
java·spring boot·雪花算法·订单号·唯一性