CVE-2025-46701
NoneApache Tomcat - CGI security constraint bypass
CVSS
—
EPSS
2.9%
Published
May 29, 2025
CISA due date
—
Cloudanix analysis
A flaw in Tomcat can let someone reach certain protected CGI web features by changing the capitalization of the web address.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Web Framework
- Class
- Authorization Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
CVE-2025-46701 is an authorization bypass in Apache Tomcat’s CGI servlet caused by improper handling of URI path case sensitivity. When applications rely on Tomcat security constraints that apply to the pathInfo portion of a URI mapped to the CGI servlet, an attacker may be able to alter the case of the requested path to avoid matching the intended constraint. The flaw does not inherently provide code execution, but it can allow unauthenticated or underprivileged access to CGI-backed resources that were intended to be protected by web.xml security constraints or equivalent configuration. Affected Tomcat versions are 11.0.0-M1 through 11.0.6, 10.1.0-M1 through 10.1.40, and 9.0.0.M1 through 9.0.104.
Why it matters to the business
Organizations using Apache Tomcat with the CGI servlet enabled and security constraints applied to CGI pathInfo routes could unintentionally expose restricted CGI functionality or sensitive resources. The business risk depends heavily on what the protected CGI endpoint does: exposure could range from information disclosure to unauthorized administrative actions or access to internal tooling. The issue is not currently listed in CISA KEV, has no reported ransomware association, and the provided exploit maturity is none, but it has been public for an extended period and Tomcat is widely deployed, so exposed CGI configurations should still be reviewed and upgraded promptly.
How an attack unfolds
An attacker first identifies a Tomcat instance with the CGI servlet enabled and discovers or guesses a CGI-mapped URI that has security constraints on its pathInfo component. The attacker then sends requests that vary the capitalization of portions of the pathInfo value. Because the vulnerable Tomcat versions mishandle case sensitivity when evaluating these constraints, the modified URI may not match the intended protected path rule while still routing to the CGI servlet. If successful, the server processes the CGI request without enforcing the expected authentication or authorization requirement, giving the attacker access to functionality or data that should have required valid credentials or a higher privilege level.
How to fix it
Upgrade Apache Tomcat to a fixed release: 11.0.7 or later, 10.1.41 or later, or 9.0.105 or later. For source-based deployments, ensure the fix commit 15c524d11651708bc046929139e6b633f2a50fb5 or later is included. If immediate upgrade is not possible, disable the CGI servlet if it is not required, remove or restrict CGI servlet mappings, place affected CGI routes behind an external access control layer, and review security constraints that depend on pathInfo matching. Ensure any compensating controls normalize or strictly validate URI paths before authorization decisions are made.
How to confirm the fix worked
Confirm the running Tomcat version is not in an affected range and is at least 11.0.7, 10.1.41, or 9.0.105 depending on the deployed branch. Review configuration files such as conf/web.xml, application WEB-INF/web.xml files, and context-specific configuration for org.apache.catalina.servlets.CGIServlet or CGI servlet mappings. If CGI is enabled, test representative protected CGI URLs by changing the case of pathInfo components and verifying that the same authentication and authorization decisions are enforced for every case variation. Also verify that expected security constraints still apply after upgrade and that no CGI endpoints are reachable without the intended credentials.
Typical attack path
- Identify an Apache Tomcat server exposed over HTTP or HTTPS.
- Determine whether the CGI servlet is enabled and reachable.
- Find or infer CGI servlet mappings and pathInfo-based protected routes.
- Send requests to protected CGI paths using alternate letter casing in the pathInfo component.
- Observe whether authentication prompts, authorization failures, or expected access controls are bypassed.
- Use the bypassed CGI functionality to access restricted output, invoke scripts, or perform actions available through the CGI endpoint.
How to detect it
To assess possible prior exploitation, review HTTP access logs, reverse proxy logs, WAF logs, and Tomcat localhost/access logs for requests to CGI servlet mappings where the pathInfo portion uses unusual or inconsistent capitalization. Compare mixed-case requests against the canonical protected paths defined in web.xml security constraints and look for successful HTTP 200, 2xx, or 3xx responses where 401 or 403 responses would normally be expected. Focus on externally sourced requests, repeated casing variations against the same CGI path, and sequences where an attacker first receives 401/403 and then receives success after changing case. Also review CGI script execution logs, application logs, and operating system process accounting for unexpected CGI script invocation corresponding to those requests. No named threat actor exploitation or CISA KEV activity was provided for this issue, so detection should focus on behavioral evidence rather than actor-specific indicators.
- org.apache.catalina.servlets.CGIServlet
- /cgi-bin/
- /WEB-INF/cgi/
- 200
- 401
- 403
- GET /cgi
- POST /cgi
- GET /cgi-bin/
- POST /cgi-bin/
What your security team should do
- Inventory Tomcat instances and prioritize those exposed to untrusted networks or the internet.
- Identify deployments with the CGI servlet enabled; systems without CGI servlet usage are unlikely to be practically affected by this flaw.
- Upgrade affected Tomcat branches to 11.0.7+, 10.1.41+, or 9.0.105+ as appropriate.
- Disable the CGI servlet wherever it is not explicitly required.
- Review CGI servlet mappings and security constraints that apply to pathInfo routes for case-sensitive bypass risk.
- Add targeted regression tests for protected CGI paths using mixed-case URI variants.
- Search historical access logs for mixed-case requests to CGI paths, especially requests that returned successful responses where authorization failures were expected.
- Monitor for probing of CGI endpoints and unusual access to scripts or protected resources until patching is complete.
The record
Improper Handling of Case Sensitivity vulnerability in Apache Tomcat's GCI servlet allows security constraint bypass of security constraints that apply to the pathInfo component of a URI mapped to the CGI servlet. This issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.6, from 10.1.0-M1 through 10.1.40, from 9.0.0.M1 through 9.0.104. Users are recommended to upgrade to version 11.0.7, 10.1.41 or 9.0.105, which fixes the issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 10.1.0-M1 | 10.1.41 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 11.0.0-M1 | 11.0.7 |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 8.5.0 | No fix |
| Maven | org.apache.tomcat.embed:tomcat-embed-core | 9.0.0.M1 | 9.0.105 |
| Maven | org.apache.tomcat:tomcat-catalina | 10.1.0-M1 | 10.1.41 |
| Maven | org.apache.tomcat:tomcat-catalina | 11.0.0-M1 | 11.0.7 |
| Maven | org.apache.tomcat:tomcat-catalina | 8.5.0 | No fix |
| Maven | org.apache.tomcat:tomcat-catalina | 9.0.0.M1 | 9.0.105 |
| Bitnami | tomcat | 0 | 9.0.105 |
| Bitnami | tomcat | 10.1.0 | 10.1.41 |
| Bitnami | tomcat | 9.0.0 | 9.0.105 |
| Chainguard | camunda-zeebe-8.6 | 0 | 8.6.30-r0 |
| Chainguard | camunda-zeebe-8.6-compat | 0 | 8.6.30-r0 |
| Chainguard | thingsboard | 0 | 4.0.1-r4 |
| Chainguard | thingsboard-tb-js-executor | 0 | 4.0.1-r4 |
| Chainguard | thingsboard-tb-mqtt-transport | 0 | 4.0.1-r4 |
| Chainguard | thingsboard-tb-node | 0 | 4.0.1-r4 |
| Chainguard | thingsboard-tb-web-ui | 0 | 4.0.1-r4 |
| Debian:11 | tomcat9 | 0 | No fix |
| Debian:12 | tomcat10 | 0 | No fix |
| Debian:12 | tomcat9 | 0 | 9.0.70-2 |
| Debian:13 | tomcat10 | 0 | No fix |
| Debian:13 | tomcat11 | 0 | No fix |
| Debian:13 | tomcat9 | 0 | 9.0.70-2 |
| Mageia:9 | tomcat | 0 | 9.0.105-1.mga9 |
| SUSE:Enterprise Storage 7.1 | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP6 | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 15 SP7 | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | tomcat | 0 | 9.0.36-3.145.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | tomcat | 0 | 9.0.36-3.145.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat | 0 | 9.0.106-150200.86.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| SUSE:Manager Server 4.3 | tomcat | 0 | 9.0.106-150200.86.1 |
| Wolfi | thingsboard | 0 | 4.0.1-r4 |
| Wolfi | thingsboard-tb-js-executor | 0 | 4.0.1-r4 |
| Wolfi | thingsboard-tb-mqtt-transport | 0 | 4.0.1-r4 |
| Wolfi | thingsboard-tb-node | 0 | 4.0.1-r4 |
| Wolfi | thingsboard-tb-web-ui | 0 | 4.0.1-r4 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 10.1.0-M1 | 10.1.41 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 11.0.0-M1 | 11.0.7 |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 8.5.0 | No fix |
| maven | org.apache.tomcat.embed/tomcat-embed-core | 9.0.0.M1 | 9.0.105 |
| maven | org.apache.tomcat/tomcat-catalina | 10.1.0-M1 | 10.1.41 |
| maven | org.apache.tomcat/tomcat-catalina | 11.0.0-M1 | 11.0.7 |
| maven | org.apache.tomcat/tomcat-catalina | 8.5.0 | No fix |
| maven | org.apache.tomcat/tomcat-catalina | 9.0.0.M1 | 9.0.105 |
| openSUSE:Leap 15.6 | tomcat | 0 | 9.0.106-150200.86.1 |
| openSUSE:Leap 15.6 | tomcat10 | 0 | 10.1.42-150200.5.45.1 |
| openSUSE:Tumbleweed | tomcat | 0 | 9.0.106-1.1 |
| openSUSE:Tumbleweed | tomcat10 | 0 | 10.1.42-1.1 |
| openSUSE:Tumbleweed | tomcat11 | 0 | 11.0.8-1.1 |
Related vulnerabilities
- 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-wmwf-9ccg-fff5 Apache Tomcat Vulnerable to Relative Path Traversal 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-55752 Relative Path Traversal 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