CVE-2025-55752
High · 7.5CVSS
7.5
EPSS
64.4%
Published
Oct 27, 2025
CISA due date
—
Cloudanix analysis
A flaw in some Tomcat servers can let an attacker bypass protected application paths and, in risky configurations, upload code that takes over the application server.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Remote Code Execution
- Component
- Network Service
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a relative path traversal and access-control bypass in Apache Tomcat URL rewriting behavior. A regression caused rewritten URLs to be normalized before decoding, allowing specially encoded request URIs to be interpreted differently after rewrite processing. When an application uses rewrite rules that move query parameters into the request path, an attacker may be able to bypass security constraints that should protect internal locations such as /WEB-INF/ and /META-INF/. In the most severe configuration, if HTTP PUT is enabled for a user or endpoint, the attacker may be able to write a server-side file such as a JSP into a reachable application path, which can lead to remote code execution under the Tomcat process account. The issue affects Tomcat 11.0.0-M1 through 11.0.10, 10.1.0-M1 through 10.1.44, 9.0.0.M11 through 9.0.108, and known end-of-life 8.5.6 through 8.5.100 versions.
Why it matters to the business
Successful exploitation can expose protected application resources, bypass intended access controls, allow unauthorized modification of web content, and in high-risk deployments lead to full application server compromise. Because Tomcat commonly hosts business-critical Java applications, compromise could result in data theft, service disruption, credential exposure, lateral movement, or malicious code running inside trusted application infrastructure. The CVSS score is high and the EPSS score is elevated, indicating meaningful exploitation likelihood even though it is not currently listed in CISA KEV and no mature public exploit is indicated. Environments that enable PUT, use URL rewrite rules, or still run end-of-life Tomcat 8.5 should treat this as urgent.
How an attack unfolds
An attacker first identifies a Tomcat instance running an affected version and determines whether the application uses rewrite rules that transform query string values into URL paths. The attacker then sends crafted requests containing encoded traversal or encoded protected path components. Because the vulnerable rewrite flow normalizes the URL before decoding it, the request can resolve after decoding to a path that should have been blocked by Tomcat security constraints, including locations under /WEB-INF/ or /META-INF/. If only read access is possible, the attacker may retrieve protected resources such as configuration files, classpath metadata, or application internals. If PUT is enabled and the attacker has sufficient privileges to use it, the attacker can attempt to upload a malicious file into a web-accessible location and then request that file to execute code in the context of the Tomcat process.
How to fix it
Upgrade Apache Tomcat to a fixed release: 11.0.11 or later for the 11.x branch, 10.1.45 or later for the 10.1.x branch, or 9.0.109 or later for the 9.x branch. Tomcat 8.5 is end-of-life and known affected from 8.5.6 through 8.5.100; migrate to a supported fixed branch rather than relying on 8.5 mitigations. For source-based deployments, ensure the Apache Tomcat code includes the fixing commit 312541e51725cdfe98d8cc6414b31d36d913fdd1 or a later vendor release containing it. Review and reduce use of rewrite rules that place query parameters into URL paths, especially where protected paths or authorization rules depend on the resulting URI. Disable HTTP PUT unless explicitly required; where PUT is required, restrict it to authenticated and authorized principals, narrow allowed paths, and block writes to executable web application locations. Add compensating controls at reverse proxies or WAFs to reject encoded traversal sequences and encoded access to /WEB-INF/ and /META-INF/. For vendor-packaged products, apply vendor-fixed builds where relevant, including the listed Red Hat package fixes such as openshift-console 0:0.0.16-1.el6op and other fixed packages provided by the vendor advisory.
How to confirm the fix worked
Confirm all Tomcat runtimes report fixed versions: 11.0.11+, 10.1.45+, or 9.0.109+. Verify there are no remaining Tomcat 8.5.x deployments unless they have been replaced by a supported fixed branch. Inspect server.xml, web.xml, context configuration, deployed application rewrite configuration, and reverse proxy rewrite rules for patterns that rewrite query parameter values into paths. Confirm HTTP PUT is disabled where unnecessary by testing with an OPTIONS request and by reviewing servlet and proxy configuration. For applications that require PUT, verify authorization is enforced and writes cannot land in executable web roots, /WEB-INF/, /META-INF/, or deployment directories. Perform a safe validation test using encoded traversal and encoded /WEB-INF/ or /META-INF/ path probes and confirm the server returns a denial or not-found response consistently before and after decoding/rewrite handling. Review package inventories and container images to ensure fixed Tomcat artifacts are present and no vulnerable embedded Tomcat libraries remain.
Typical attack path
- Scan internet-facing or internal web applications for Apache Tomcat version exposure and URL rewrite behavior.
- Identify applications whose rewrite rules place query parameter values into the request URI path.
- Send crafted requests with encoded path traversal or encoded protected directory names to test whether /WEB-INF/ or /META-INF/ protections can be bypassed.
- Retrieve protected application resources if access-control bypass is successful.
- If HTTP PUT is enabled, upload a server-side payload such as a JSP or modified application resource.
- Request the uploaded file to execute commands or establish persistence under the Tomcat service account.
- Use the compromised application server to access application data, credentials, internal services, or adjacent systems.
How to detect it
Check for prior exploitation using Tomcat access logs, reverse proxy logs, WAF logs, application logs, endpoint telemetry, file integrity monitoring, and operating system audit logs. Focus on requests containing encoded traversal sequences, double-encoded characters, or encoded references to protected Tomcat directories such as /WEB-INF/ and /META-INF/. Review all HTTP PUT activity, especially successful PUT responses or PUT requests followed by GET requests to newly created JSP or class resources. Investigate requests where query parameters appear to contain path fragments, encoded slashes, encoded dots, or protected directory names and are processed through application rewrite rules. On hosts, compare deployed application directories against known-good release artifacts and look for newly created or modified JSP, class, JAR, WAR, XML, or properties files. Examine whether the Tomcat Java process spawned shell interpreters or utilities, made unusual outbound connections, or wrote files outside normal deployment workflows. Since no named threat actor or KEV exploitation is currently associated with this CVE, prioritize behavior-based detection over actor-specific indicators.
- %2e%2e
- %252e%252e
- ..%2f
- ..%5c
- %2fWEB-INF%2f
- %2fMETA-INF%2f
- %252fWEB-INF%252f
- %252fMETA-INF%252f
- /WEB-INF/
- /META-INF/
- PUT /
- "PUT
- " 201
- " 204
- .jsp
- /webapps/
- /WEB-INF/web.xml
- /META-INF/MANIFEST.MF
- $CATALINA_BASE/webapps/
- $CATALINA_HOME/webapps/
- localhost_access_log
- java.lang.ProcessBuilder
- Runtime.getRuntime
- /bin/sh
- cmd.exe
What your security team should do
- Immediately inventory externally exposed and business-critical Tomcat servers and identify versions 11.0.0-M1 through 11.0.10, 10.1.0-M1 through 10.1.44, 9.0.0.M11 through 9.0.108, and any 8.5.x deployments.
- Prioritize patching systems with URL rewrite rules, enabled PUT methods, administrative portals, file upload workflows, or internet exposure.
- Upgrade Tomcat to 11.0.11+, 10.1.45+, or 9.0.109+; migrate end-of-life 8.5 deployments to a supported branch.
- Disable or tightly restrict HTTP PUT and ensure uploaded content cannot be executed by the application server.
- Review rewrite rules for query-parameter-to-path transformations and remove or harden risky patterns.
- Deploy temporary WAF or reverse proxy rules to block encoded traversal sequences and encoded references to /WEB-INF/ and /META-INF/ until patching is complete.
- Search historical logs for suspicious encoded path traversal, access to protected directories, and successful PUT requests, especially responses with 200, 201, 204, or 207 status codes.
- Inspect web application directories for recently created JSPs, class files, JARs, or modified deployment artifacts that do not match expected releases.
- Monitor Tomcat process behavior for unusual child processes, outbound network connections, or file writes in application deployment paths.
- Because EPSS is elevated, maintain heightened monitoring even though the CVE is not currently in CISA KEV and no mature exploit is reported.
The record
Relative Path Traversal vulnerability in Apache Tomcat. The fix for bug 60013 introduced a regression where the rewritten URL was normalized before it was decoded. This introduced the possibility that, for rewrite rules that rewrite query parameters to the URL, an attacker could manipulate the request URI to bypass security constraints including the protection for /WEB-INF/ and /META-INF/. If PUT requests were also enabled then malicious files could be uploaded leading to remote code execution. PUT requests are normally limited to trusted users and it is considered unlikely that PUT requests would be enabled in conjunction with a rewrite that manipulated the URI. This issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.10, from 10.1.0-M1 through 10.1.44, from 9.0.0.M11 through 9.0.108. The following versions were EOL at the time the CVE was created but are known to be affected: 8.5.6 though 8.5.100. Other, older, EOL versions may also be affected. Users are recommended to upgrade to version 11.0.11 or later, 10.1.45 or later or 9.0.109 or later, which fix the issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 10.1.0-M1 | 10.1.45 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 11.0.0-M1 | 11.0.11 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 8.5.6 | No fix |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 8.5.60 | No fix |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 9.0.0-M11 | 9.0.109 |
| Maven | org.apache.tomcat:tomcat | 10.1.0-M1 | 10.1.45 |
| Maven | org.apache.tomcat:tomcat | 11.0.0-M1 | 11.0.11 |
| Maven | org.apache.tomcat:tomcat | 8.5.6 | No fix |
| Maven | org.apache.tomcat:tomcat | 8.5.60 | No fix |
| Maven | org.apache.tomcat:tomcat | 9.0.0-M11 | 9.0.109 |
| Maven | org.apache.tomcat:tomcat-catalina | 10.1.0-M1 | 10.1.45 |
| Maven | org.apache.tomcat:tomcat-catalina | 11.0.0-M1 | 11.0.11 |
| Maven | org.apache.tomcat:tomcat-catalina | 8.5.6 | No fix |
| Maven | org.apache.tomcat:tomcat-catalina | 8.5.60 | No fix |
| Maven | org.apache.tomcat:tomcat-catalina | 9.0.0-M11 | 9.0.109 |
| AlmaLinux:10 | tomcat | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-admin-webapps | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-docs-webapp | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-el-5.0-api | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-jsp-3.1-api | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-lib | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-servlet-6.0-api | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat-webapps | 0 | 1:10.1.36-3.el10_1.1 |
| AlmaLinux:10 | tomcat9 | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-admin-webapps | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-docs-webapp | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-el-3.0-api | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-jsp-2.3-api | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-lib | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-servlet-4.0-api | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:10 | tomcat9-webapps | 0 | 1:9.0.87-8.el10_1.1 |
| AlmaLinux:8 | tomcat | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-admin-webapps | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-docs-webapp | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-el-3.0-api | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-jsp-2.3-api | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-lib | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-servlet-4.0-api | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:8 | tomcat-webapps | 0 | 1:9.0.87-1.el8_10.7 |
| AlmaLinux:9 | tomcat | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-admin-webapps | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-docs-webapp | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-el-3.0-api | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-jsp-2.3-api | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-lib | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-servlet-4.0-api | 0 | 1:9.0.87-6.el9_7.1 |
| AlmaLinux:9 | tomcat-webapps | 0 | 1:9.0.87-6.el9_7.1 |
| Bitnami | tomcat | 0 | 9.0.109 |
| Chainguard | camunda-zeebe-8.6 | 0 | 8.6.29-r2 |
| Chainguard | camunda-zeebe-8.6-compat | 0 | 8.6.29-r2 |
| Chainguard | camunda-zeebe-8.7 | 0 | 8.7.16-r1 |
| Chainguard | camunda-zeebe-8.7-compat | 0 | 8.7.16-r1 |
| Chainguard | kayenta-2025.0 | 0 | 2025.0.8-r3 |
| Chainguard | kayenta-2025.1 | 0 | 2025.1.5-r3 |
| Chainguard | kayenta-2025.2 | 0 | 2025.2.2-r3 |
| Chainguard | kayenta-fips-2025.0 | 0 | 2025.0.8-r3 |
| Chainguard | kayenta-fips-2025.1 | 0 | 2025.1.6-r0 |
| Chainguard | kayenta-fips-2025.2 | 0 | 2025.2.2-r3 |
| Chainguard | seata | 0 | 2.5.0-r3 |
| Chainguard | seata-namingserver | 0 | 2.5.0-r3 |
| Chainguard | seata-namingserver-oci-entrypoint | 0 | 2.5.0-r3 |
| Chainguard | seata-openjdk-17-compat | 0 | 2.5.0-r3 |
| Chainguard | seata-openjdk-21-compat | 0 | 2.5.0-r3 |
| Chainguard | seata-openjdk-8-compat | 0 | 2.5.0-r3 |
| Chainguard | seata-server | 0 | 2.5.0-r3 |
| Chainguard | seata-server-oci-entrypoint | 0 | 2.5.0-r3 |
| Mageia:9 | tomcat | 0 | 9.0.111-1.mga9 |
| SUSE:Enterprise Storage 7.1 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat11 | 0 | 11.0.13-150600.13.12.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat11 | 0 | 11.0.13-150600.13.12.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | tomcat | 0 | 9.0.36-3.153.2 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | tomcat | 0 | 9.0.36-3.153.2 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat | 0 | 9.0.111-150200.96.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| SUSE:Manager Server LTS 4.3 | tomcat | 0 | 9.0.111-150200.96.1 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 10.1.0-M1 | 10.1.45 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 11.0.0-M1 | 11.0.11 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 8.5.6 | No fix |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 8.5.60 | No fix |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 9.0.0-M11 | 9.0.109 |
| maven | org.apache.tomcat/tomcat | 10.1.0-M1 | 10.1.45 |
| maven | org.apache.tomcat/tomcat | 11.0.0-M1 | 11.0.11 |
| maven | org.apache.tomcat/tomcat | 8.5.6 | No fix |
| maven | org.apache.tomcat/tomcat | 8.5.60 | No fix |
| maven | org.apache.tomcat/tomcat | 9.0.0-M11 | 9.0.109 |
| maven | org.apache.tomcat/tomcat-catalina | 10.1.0-M1 | 10.1.45 |
| maven | org.apache.tomcat/tomcat-catalina | 11.0.0-M1 | 11.0.11 |
| maven | org.apache.tomcat/tomcat-catalina | 8.5.6 | No fix |
| maven | org.apache.tomcat/tomcat-catalina | 8.5.60 | No fix |
| maven | org.apache.tomcat/tomcat-catalina | 9.0.0-M11 | 9.0.109 |
| openSUSE:Leap 15.6 | tomcat | 0 | 9.0.111-150200.96.1 |
| openSUSE:Leap 15.6 | tomcat10 | 0 | 10.1.48-150200.5.54.1 |
| openSUSE:Leap 15.6 | tomcat11 | 0 | 11.0.13-150600.13.12.1 |
| openSUSE:Leap 16.0 | tomcat | 0 | 9.0.111-160000.1.1 |
| openSUSE:Leap 16.0 | tomcat10 | 0 | 10.1.52-160000.1.1 |
| openSUSE:Leap 16.0 | tomcat11 | 0 | 11.0.13-160000.1.1 |
| openSUSE:Tumbleweed | tomcat | 0 | 9.0.111-1.1 |
| openSUSE:Tumbleweed | tomcat10 | 0 | 10.1.48-1.1 |
| openSUSE:Tumbleweed | tomcat11 | 0 | 11.0.13-1.1 |
Related vulnerabilities
- GHSA-wmwf-9ccg-fff5 Apache Tomcat Vulnerable to Relative Path Traversal Same vulnerability
- CVE-2026-24733 Improper Input Validation vulnerability in Apache Tomcat. Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-66614 Improper Input Validation vulnerability. Also affects org.apache.tomcat.embed:tomcat-embed-core
- GHSA-vfww-5hm6-hx2j Apache Tomcat Vulnerable to Improper Neutralization of Escape, Meta, or Control Sequences Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-61795 Improper Resource Shutdown or Release vulnerability in Apache Tomcat. Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-55754 Improper Neutralization of Escape, Meta, or Control Sequences vulnerability in Apache… Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-48989 Improper Resource Shutdown or Release vulnerability in Apache Tomcat made Tomcat… Also affects org.apache.tomcat.embed:tomcat-embed-core
- CVE-2025-49124 Untrusted Search Path vulnerability in Apache Tomcat installer for Windows. Also affects org.apache.tomcat.embed:tomcat-embed-core