Compare commits

...

9 Commits
a10 ... c10s

Author SHA1 Message Date
pmeloni
9dd4988080 RESOLVES: RHEL-150720 tomcat9: Apache Tomcat: Certificate revocation bypass due to improper OCSP response validation 2026-06-05 17:24:53 +02:00
pmeloni
f7dfc91917 SOLVES RHEL-150720 tomcat9: Apache Tomcat: Certificate revocation bypass due to improper OCSP response validation 2026-04-22 15:43:07 +02:00
Coty Sutherland
5c6a19b36d Resolves: RHEL-168243 2026-04-15 15:08:18 -04:00
Coty Sutherland
df0564d748 Resolves: RHEL-158962 NPE in tomcat9 when used with TLS enabled custom connector 2026-03-24 11:38:56 -04:00
Coty Sutherland
f5d3a1825f Resolves: RHEL-148687 Update to Apache Tomcat 9.0.110 for PQC support, and switched to compiling with Java 25
* Add java-25-headless to the BuildRequires & Requires lists & set JAVA_HOME to java-25 to always use it for compiling with java-25
* Add build-with-java-25.patch that replaces the  attribute with explicit  and  attributes in javac tasks to support building with Java 25 JDK while generating appropriate bytecode versions. This enables the build to use Java 25 APIs while producing different bytecode targets, required for PQC support via FFM in Tomcat 9.0.110.
* Drop the JmxRemoteLifecycleListener patch is it's no longer necessary
* Use tar.gz instead of zip for the sources due to line ending issues
* Add rm for commons-daemon.jar from bin
2026-02-18 07:33:35 -05:00
Adam Krajcik
eb8ee63e74 Fix CVE-2025-55752 and CVE-2025-31651
Resolves: RHEL-124496 - tomcat: Directory traversal via rewrite with possible RCE
Resolves: RHEL-132559 - tomcat: Bypass of rules in Rewrite Valve
2026-02-04 04:50:59 +01:00
Adam Krajcik
ab17886acb Fix CVE-20225-48989
Resolves: RHEL-102186 - tomcat: http/2 "MadeYouReset" DoS attack through HTTP/2 control frames
2025-08-21 21:22:57 +02:00
Adam Krajcik
851a855628 Fix multiple CVES
Resolves: RHEL-108485 - CVE-2025-48976
Resolves: RHEL-108493 - CVE-2025-48988
Resolves: RHEL-108501 - CVE-2025-49125
Resolves: RHEL-108509 - CVE-2025-52434
Resolves: RHEL-108522 - CVE-2025-52520
Resolves: RHEL-108517 - CVE-2025-53506
2025-08-21 15:14:26 +02:00
Adam Krajcik
56a8925bc9 Fix CVE-2025-31650 and CVE-2024-56337
Resolves: RHEL-91750 - tomcat: DoS via malformed HTTP/2 PRIORITY_UPDATE
Resolves: RHEL-94960 - tomcat: Incomplete fix for CVE-2024-50379 - RCE due to TOCTOU issue in JSP compilation
2025-07-21 18:13:38 +02:00
7 changed files with 196 additions and 66 deletions

12
.gitignore vendored
View File

@ -1,3 +1,9 @@
/tomcat-9.0.87.redhat-00005-src.zip results_tomcat9
/tomcat-9.0.87.redhat-00006-src.zip *.rpm
/tomcat-9.0.87.redhat-00008-src.zip /tomcat-9.0.87.redhat-*-src.zip
/apache-tomcat-9*-src.tar.gz
apache-tomcat-*-src
/tomcat9.iml
/.idea/.gitignore
/.idea/modules.xml
/.idea/vcs.xml

View File

@ -1,40 +0,0 @@
diff --git a/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java b/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java
index f62f8d1..db19960 100644
--- a/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java
+++ b/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java
@@ -611,34 +611,28 @@ public class JmxRemoteLifecycleListener extends SSLHostConfig implements Lifecyc
* Better to use the internal API than re-invent the wheel.
*/
@SuppressWarnings("restriction")
- private static class JmxRegistry extends sun.rmi.registry.RegistryImpl {
+ private static class JmxRegistry {
private static final long serialVersionUID = -3772054804656428217L;
private final String jmxName;
private final Remote jmxServer;
public JmxRegistry(int port, RMIClientSocketFactory csf,
RMIServerSocketFactory ssf, String jmxName, Remote jmxServer) throws RemoteException {
- super(port, csf, ssf);
this.jmxName = jmxName;
this.jmxServer = jmxServer;
}
- @Override
public Remote lookup(String name)
throws RemoteException, NotBoundException {
return (jmxName.equals(name)) ? jmxServer : null;
}
- @Override
public void bind(String name, Remote obj)
throws RemoteException, AlreadyBoundException, AccessException {
}
- @Override
public void unbind(String name)
throws RemoteException, NotBoundException, AccessException {
}
- @Override
public void rebind(String name, Remote obj)
throws RemoteException, AccessException {
}
- @Override
public String[] list() throws RemoteException {
return new String[] { jmxName };
}

76
build-with-java-25.patch Normal file
View File

@ -0,0 +1,76 @@
--- build.xml.orig 2026-02-12 14:28:31.466893106 -0500
+++ build.xml 2026-02-12 14:28:44.320933346 -0500
@@ -968,7 +968,7 @@
<javac srcdir="java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeAntRuntime="true" >
<!-- Uncomment this to show unchecked warnings:
@@ -1021,7 +1021,7 @@
<javac srcdir="java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeAntRuntime="true" >
<!-- Uncomment this to show unchecked warnings:
@@ -1038,7 +1038,7 @@
<javac srcdir="java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${release.java.version}"
+ source="22" target="22"
encoding="ISO-8859-1"
includeAntRuntime="true"
if:set="has-ffm" >
@@ -1577,7 +1577,7 @@
<javac srcdir="webapps/examples/WEB-INF/classes"
destdir="${tomcat.build}/webapps/examples/WEB-INF/classes"
debug="${compile.debug}" deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
classpath="${tomcat.classes}"
encoding="ISO-8859-1"
includeantruntime="false">
@@ -1806,7 +1806,7 @@
destdir="${xreflect.directory}/classes"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeAntRuntime="true" >
<compilerarg value="-XDignore.symbol.file"/>
@@ -1892,7 +1892,7 @@
<javac srcdir="test" destdir="${test.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeantruntime="true">
<classpath refid="tomcat.test.classpath" />
--- modules/jdbc-pool/build.xml.orig 2026-02-12 14:28:31.469893115 -0500
+++ modules/jdbc-pool/build.xml 2026-02-12 14:28:44.327503027 -0500
@@ -163,7 +163,7 @@
<javac srcdir="${basedir}/src/main/java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeantruntime="false">
<classpath refid="tomcat.jdbc.classpath"/>
@@ -201,7 +201,7 @@
<javac srcdir="${basedir}/src/test/java" destdir="${tomcat.testclasses}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeantruntime="false">
<classpath refid="tomcat.jdbc.classpath"/>

View File

@ -1,7 +1,6 @@
diff -up ./build.xml.orig ./build.xml --- build.xml.orig 2026-02-11 15:17:18.947314996 -0500
--- build.xml.orig 2021-07-07 10:53:55.493742841 +0800 +++ build.xml 2026-02-11 15:17:23.675329041 -0500
+++ build.xml 2021-07-07 11:09:43.107968515 +0800 @@ -1116,7 +1116,7 @@
@@ -1020,7 +1020,7 @@
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.annotations-api" filesId="files.annotations-api"
manifest="${tomcat.manifests}/annotations-api.jar.manifest" manifest="${tomcat.manifests}/annotations-api.jar.manifest"
@ -10,7 +9,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- Servlet Implementation JAR File --> <!-- Servlet Implementation JAR File -->
<jarIt jarfile="${servlet-api.jar}" <jarIt jarfile="${servlet-api.jar}"
@@ -1029,41 +1029,41 @@ @@ -1125,41 +1125,41 @@
manifest="${tomcat.manifests}/servlet-api.jar.manifest" manifest="${tomcat.manifests}/servlet-api.jar.manifest"
notice="${tomcat.manifests}/servlet-api.jar.notice" notice="${tomcat.manifests}/servlet-api.jar.notice"
license="${tomcat.manifests}/servlet-api.jar.license" license="${tomcat.manifests}/servlet-api.jar.license"
@ -58,7 +57,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- Bootstrap JAR File --> <!-- Bootstrap JAR File -->
<jarIt jarfile="${bootstrap.jar}" <jarIt jarfile="${bootstrap.jar}"
@@ -1075,61 +1075,61 @@ @@ -1171,68 +1171,68 @@
<jarIt jarfile="${tomcat-util.jar}" <jarIt jarfile="${tomcat-util.jar}"
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-util" filesId="files.tomcat-util"
@ -90,6 +89,14 @@ diff -up ./build.xml.orig ./build.xml
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-coyote" filesId="files.tomcat-coyote"
- addOSGi="true" /> - addOSGi="true" />
+ addOSGi="false" />
<!-- OpenSSL FFM - Coyote -->
<jarIt jarfile="${tomcat-coyote-ffm.jar}"
filesDir="${tomcat.classes}"
filesId="files.tomcat-coyote-ffm"
manifest="${tomcat.manifests}/tomcat-coyote-ffm.jar.manifest"
- addOSGi="true" />
+ addOSGi="false" /> + addOSGi="false" />
<!-- WebSocket implementation JAR File --> <!-- WebSocket implementation JAR File -->
@ -130,7 +137,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- Catalina Ant Tasks JAR File --> <!-- Catalina Ant Tasks JAR File -->
<jarIt jarfile="${catalina-ant.jar}" <jarIt jarfile="${catalina-ant.jar}"
@@ -1140,27 +1140,27 @@ @@ -1243,27 +1243,27 @@
<jarIt jarfile="${catalina-storeconfig.jar}" <jarIt jarfile="${catalina-storeconfig.jar}"
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.catalina-storeconfig" filesId="files.catalina-storeconfig"
@ -162,7 +169,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- i18n JARs --> <!-- i18n JARs -->
<jar jarfile="${tomcat.build}/lib/tomcat-i18n-cs.jar" <jar jarfile="${tomcat.build}/lib/tomcat-i18n-cs.jar"
@@ -1620,7 +1620,7 @@ @@ -1716,7 +1716,7 @@
filesId="files.tomcat-embed-core" filesId="files.tomcat-embed-core"
notice="${tomcat.manifests}/servlet-api.jar.notice" notice="${tomcat.manifests}/servlet-api.jar.notice"
license="${tomcat.manifests}/servlet-api.jar.license" license="${tomcat.manifests}/servlet-api.jar.license"
@ -171,7 +178,7 @@ diff -up ./build.xml.orig ./build.xml
addGraal="true" addGraal="true"
graalPrefix="org.apache.tomcat.embed/tomcat-embed-core" graalPrefix="org.apache.tomcat.embed/tomcat-embed-core"
graalFiles="res/graal/tomcat-embed-core/native-image" graalFiles="res/graal/tomcat-embed-core/native-image"
@@ -1628,7 +1628,7 @@ @@ -1724,7 +1724,7 @@
<jarIt jarfile="${tomcat-embed-el.jar}" <jarIt jarfile="${tomcat-embed-el.jar}"
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-embed-el" filesId="files.tomcat-embed-el"
@ -180,7 +187,7 @@ diff -up ./build.xml.orig ./build.xml
addGraal="true" addGraal="true"
graalPrefix="org.apache.tomcat.embed/tomcat-embed-el" graalPrefix="org.apache.tomcat.embed/tomcat-embed-el"
graalFiles="res/graal/tomcat-embed-el/native-image" graalFiles="res/graal/tomcat-embed-el/native-image"
@@ -1637,7 +1637,7 @@ @@ -1733,7 +1733,7 @@
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-embed-jasper" filesId="files.tomcat-embed-jasper"
meta-inf="${tomcat.manifests}/jasper.jar" meta-inf="${tomcat.manifests}/jasper.jar"
@ -189,7 +196,7 @@ diff -up ./build.xml.orig ./build.xml
addGraal="true" addGraal="true"
graalPrefix="org.apache.tomcat.embed/tomcat-embed-jasper" graalPrefix="org.apache.tomcat.embed/tomcat-embed-jasper"
graalFiles="res/graal/tomcat-embed-jasper/native-image" graalFiles="res/graal/tomcat-embed-jasper/native-image"
@@ -1646,7 +1646,7 @@ @@ -1742,7 +1742,7 @@
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-embed-websocket" filesId="files.tomcat-embed-websocket"
meta-inf="${tomcat.manifests}/tomcat-websocket.jar" meta-inf="${tomcat.manifests}/tomcat-websocket.jar"

View File

@ -1 +1 @@
SHA512 (tomcat-9.0.87.redhat-00008-src.zip) = 5863c033928427db91d1ecf92485641aa3de8d0bf38dd23293c6d86667da46df77b592342031f7caf915a52ed87a415a1d88937809a0b799a17b5901ceda03c2 SHA512 (apache-tomcat-9.0.117-src.tar.gz) = f40854a6ed1f208ccdd3da82527fc806eb9231aebaee86d6987e9699d1d31bb548765241424368708b89bdce01d4558a638532a35932f686d3edabd26951041d

View File

@ -10,7 +10,8 @@ OPTIONS="-Dcatalina.base=$CATALINA_BASE \
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \ -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
-Djava.io.tmpdir=$CATALINA_TMPDIR \ -Djava.io.tmpdir=$CATALINA_TMPDIR \
-Djava.util.logging.config.file=${LOGGING_PROPERTIES} \ -Djava.util.logging.config.file=${LOGGING_PROPERTIES} \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Dsun.io.useCanonCaches=false"
if [ "$1" = "start" ] ; then if [ "$1" = "start" ] ; then
FLAGS="${FLAGS} $CATALINA_OPTS" FLAGS="${FLAGS} $CATALINA_OPTS"

View File

@ -31,8 +31,8 @@
%global jspspec 2.3 %global jspspec 2.3
%global major_version 9 %global major_version 9
%global minor_version 0 %global minor_version 0
%global micro_version 87 %global micro_version 117
%global packdname tomcat-%{major_version}.%{minor_version}.%{micro_version}.redhat-00008-src %global packdname apache-tomcat-%{major_version}.%{minor_version}.%{micro_version}-src
%global servletspec 4.0 %global servletspec 4.0
%global elspec 3.0 %global elspec 3.0
%global tcuid 53 %global tcuid 53
@ -53,12 +53,12 @@
Name: tomcat9 Name: tomcat9
Epoch: 1 Epoch: 1
Version: %{major_version}.%{minor_version}.%{micro_version} Version: %{major_version}.%{minor_version}.%{micro_version}
Release: 5%{?dist} Release: 1%{?dist}
Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API
License: Apache-2.0 License: Apache-2.0
URL: http://tomcat.apache.org/ URL: http://tomcat.apache.org/
Source0: %{packdname}.zip Source0: %{packdname}.tar.gz
Source1: tomcat-%{major_version}.%{minor_version}.conf Source1: tomcat-%{major_version}.%{minor_version}.conf
Source3: tomcat-%{major_version}.%{minor_version}.sysconfig Source3: tomcat-%{major_version}.%{minor_version}.sysconfig
Source4: tomcat-%{major_version}.%{minor_version}.wrapper Source4: tomcat-%{major_version}.%{minor_version}.wrapper
@ -77,20 +77,20 @@ Patch1: tomcat-%{major_version}.%{minor_version}-tomcat-users-webapp.patc
Patch3: tomcat-%{major_version}.%{minor_version}-catalina-policy.patch Patch3: tomcat-%{major_version}.%{minor_version}-catalina-policy.patch
Patch4: rhbz-1857043.patch Patch4: rhbz-1857043.patch
Patch6: tomcat-%{major_version}.%{minor_version}-bnd-annotation.patch Patch6: tomcat-%{major_version}.%{minor_version}-bnd-annotation.patch
Patch7: JmxRemoteLifecycleListener.patch Patch7: build-with-java-25.patch
BuildArch: noarch BuildArch: noarch
BuildRequires: ant BuildRequires: ant
BuildRequires: ecj >= 1:4.10 BuildRequires: ecj >= 1:4.10
BuildRequires: findutils BuildRequires: findutils
BuildRequires: java-devel
BuildRequires: javapackages-local BuildRequires: javapackages-local
BuildRequires: aqute-bnd BuildRequires: aqute-bnd
BuildRequires: aqute-bndlib BuildRequires: aqute-bndlib
BuildRequires: systemd BuildRequires: systemd
BuildRequires: java-25-devel
Requires: java-headless Requires: (java-headless or java-25-headless)
Requires: javapackages-tools Requires: javapackages-tools
Requires: %{name}-lib = %{epoch}:%{version}-%{release} Requires: %{name}-lib = %{epoch}:%{version}-%{release}
@ -199,7 +199,7 @@ Obsoletes: tomcat-webapps < 1:10.0.0-1
The ROOT web application for Apache Tomcat. The ROOT web application for Apache Tomcat.
%prep %prep
%setup -q -n apache-%{packdname} %setup -q -n %{packdname}
# remove pre-built binaries and windows files # remove pre-built binaries and windows files
find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "*.gz" -o \ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "*.gz" -o \
-name "*.jar" -o -name "*.war" -o -name "*.zip" \) -delete -name "*.jar" -o -name "*.war" -o -name "*.zip" \) -delete
@ -209,7 +209,7 @@ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "
%patch -P3 -p0 %patch -P3 -p0
%patch -P4 -p0 %patch -P4 -p0
%patch -P6 -p0 %patch -P6 -p0
%patch -P7 -p1 %patch -P7 -p0
# Remove webservices naming resources as it's generally unused # Remove webservices naming resources as it's generally unused
%{__rm} -rf java/org/apache/naming/factory/webservices %{__rm} -rf java/org/apache/naming/factory/webservices
@ -229,8 +229,12 @@ export OPT_JAR_LIST="xalan-j2-serializer"
# so just create a dummy file for later removal # so just create a dummy file for later removal
touch HACK touch HACK
# Adding JAVA_HOME to always compile with java-25 instead of autodetecting
export JAVA_HOME=%{_jvmdir}/java-25-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# who needs a build.properties file anyway # who needs a build.properties file anyway
%{ant} -Dbase.path="." \ ant -Dbase.path="." \
-Dbuild.compiler="modern" \ -Dbuild.compiler="modern" \
-Dcommons-daemon.jar="HACK" \ -Dcommons-daemon.jar="HACK" \
-Dcommons-daemon.native.src.tgz="HACK" \ -Dcommons-daemon.native.src.tgz="HACK" \
@ -249,6 +253,9 @@ touch HACK
# remove some jars that we'll replace with symlinks later # remove some jars that we'll replace with symlinks later
%{__rm} output/build/lib/ecj.jar %{__rm} output/build/lib/ecj.jar
# Cleanup commons-daemon.jar that somehow appeared since last build, but is unnecessary
%{__rm} -rf output/build/bin/commons-daemon.jar
# Remove the example webapps per Apache Tomcat Security Considerations # Remove the example webapps per Apache Tomcat Security Considerations
# see https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html # see https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html
%{__rm} -rf output/build/webapps/examples %{__rm} -rf output/build/webapps/examples
@ -396,6 +403,9 @@ popd
%mvn_file org.apache.tomcat:tomcat-coyote tomcat/tomcat-coyote %mvn_file org.apache.tomcat:tomcat-coyote tomcat/tomcat-coyote
%mvn_artifact res/maven/tomcat-coyote.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote.jar %mvn_artifact res/maven/tomcat-coyote.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote.jar
%mvn_file org.apache.tomcat:tomcat-coyote-ffm tomcat/tomcat-coyote-ffm
%mvn_artifact res/maven/tomcat-coyote-ffm.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote-ffm.jar
%mvn_file org.apache.tomcat:tomcat-dbcp tomcat/tomcat-dbcp %mvn_file org.apache.tomcat:tomcat-dbcp tomcat/tomcat-dbcp
%mvn_artifact res/maven/tomcat-dbcp.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-dbcp.jar %mvn_artifact res/maven/tomcat-dbcp.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-dbcp.jar
@ -622,6 +632,76 @@ fi
%{appdir}/ROOT %{appdir}/ROOT
%changelog %changelog
* Thu May 29 2026 Pietro Meloni <pmeloni@redhat.com> - 1:9.0.117-1
- Resolves: RHEL-150720
Tomcat: Certificate revocation bypass due to improper OCSP response validation (CVE-2026-24734)
- Resolves:
Tomcat: OCSP checks sometimes soft-fail with FFM even when soft-fail is disabled (CVE-2026-34500)
- Resolves:
Tomcat: Cloud membership for clustering component exposed the Kubernetes bearer token (CVE-2026-34487)
- Resolves:
Tomcat: The fix for CVE-2026-29146 allowed the bypass of the EncryptInterceptor (CVE-2026-34486)
- Resolves:
Tomcat: Incomplete escaping of JSON access logs (CVE-2026-34483)
- Resolves:
Tomcat: The fix for CVE-2025-66614 was incomplete (CVE-2026-32990)
- Resolves:
Tomcat: EncryptInterceptor vulnerable to padding oracle attack by default (CVE-2026-29146)
- Resolves:
Tomcat: OCSP checks sometimes soft-fail even when soft-fail is disabled (CVE-2026-29145)
- Resolves:
Tomcat: Configured TLS cipher preference order not preserved (CVE-2026-29129)
- Resolves:
Tomcat: Occasionally open redirect (CVE-2026-25854)
- Resolves:
Tomcat: Request smuggling via invalid chunk extension (CVE-2026-24880)
- Resolves:
Tomcat: Incomplete OCSP verification checks (CVE-2026-24734)
- Resolves:
Tomcat: Security constraint bypass (CVE-2026-24733)
- Resolves:
Tomcat: Client certificate verification bypass due to virtual host mapping (CVE-2025-66614)
* Tue Apr 14 2026 Coty Sutherland <csutherl@redhat.com> - 1:9.0.110-3
- Resolves: RHEL-168243 Fix copy/paste error in AJP connector that caused DELETE requests to be processed as OPTIONS requests (BZ#69848)
* Mon Mar 23 2026 Coty Sutherland <csutherl@redhat.com> - 1:9.0.110-2
- Resolves: RHEL-158962 NPE in tomcat9 when used with TLS enabled custom connector
* Wed Feb 11 2026 Coty Sutherland <csutherl@redhat.com> - 1:9.0.110-1
- Resolves: RHEL-148687
Update to 9.0.110 and compile with Java 25 to enable FFM features for PQC support
* Fri Jan 23 2026 Pietro Meloni <pmeloni@redhat.com> - 1:9.0.87-9
- Resolves: RHEL-124496
tomcat: Directory traversal via rewrite with possible RCE (CVE-2025-55752)
- Resolves: RHEL-132559
tomcat: Bypass of rules in Rewrite Valve (CVE-2025-31651)
* Mon Aug 18 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-8
- Resolves: RHEL-102186
tomcat: http/2 "MadeYouReset" DoS attack through HTTP/2 control frames (CVE-2025-48989)
* Wed Aug 13 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-7
- Resolves: RHEL-108485
tomcat: Apache Commons FileUpload DOS via part headers (CVE-2025-48976)
- Resolves: RHEL-108493
tomcat: Dos in multipart upload (CVE-2025-48988)
- Resolves: RHEL-108501
tomcat: Security constraint bypass for pre/post-resources (CVE-2025-49125)
- Resolves: RHEL-108509
tomcat: Denial of service (CVE-2025-52434)
- Resolves: RHEL-108522
tomcat: Denial of service (CVE-2025-52520)
- Resolves: RHEL-108517
tomcat: Denial of service (CVE-2025-53506)
* Mon May 26 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-5.el10_0.1
- Resolves: RHEL-91750
tomcat: DoS via malformed HTTP/2 PRIORITY_UPDATE frame (CVE-2025-31650)
- Resolves: RHEL-94960
tomcat: Incomplete fix for CVE-2024-50379 - RCE due to TOCTOU issue in JSP compilation (CVE-2024-56337)
* Mon Apr 14 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-5 * Mon Apr 14 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-5
- Resolves: RHEL-82927 - Resolves: RHEL-82927
tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT (CVE-2025-24813) tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT (CVE-2025-24813)