Cloudanix VulnDB

CVE-2021-33037

Medium · 5.3

CVSS

5.3

EPSS

74.7%

Published

Jul 12, 2021

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Attend

A flaw in some Tomcat-based web systems can let attackers sneak hidden web requests past front-end protections when traffic is handled by a proxy.

Chainable
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Tampering
Component
Web Framework
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

CVE-2021-33037 is an HTTP request smuggling flaw in Apache Tomcat caused by incorrect parsing and validation of the Transfer-Encoding request header when Tomcat is deployed behind a reverse proxy or other front-end HTTP intermediary. In affected versions, Tomcat may ignore Transfer-Encoding under certain HTTP/1.0-related conditions, accept the obsolete identity transfer coding, or fail to require chunked to be the final transfer coding. If the proxy and Tomcat disagree about where one HTTP request ends and the next begins, an attacker can desynchronize the connection and cause Tomcat to interpret attacker-controlled bytes as a separate request. The primary impact is integrity compromise of HTTP request routing and processing, including request queue poisoning, response confusion, bypass of proxy-layer controls, or unintended actions in another user's request context depending on application behavior.

Why it matters to the business

Organizations running affected Tomcat-based applications behind reverse proxies may be exposed to request routing manipulation that can undermine authentication, access control, caching, or audit assumptions at the application edge. While the CVSS score is moderate, the EPSS score is high, indicating meaningful likelihood of exploitation activity in the wild or strong exploitability signals. The affected ecosystem is broad because Tomcat is embedded or bundled in many commercial and open-source products, including Apache TomEE, Debian packages, multiple Oracle products, and McAfee ePolicy Orchestrator, so remediation often requires checking both directly managed Tomcat servers and vendor-packaged appliances or applications.

How an attack unfolds

An attacker sends specially crafted HTTP requests through a reverse proxy to an affected Tomcat backend. The malicious request uses ambiguous or invalid Transfer-Encoding combinations, such as identity, chunked in a non-final position, or Transfer-Encoding behavior that differs when HTTP/1.0 handling is involved. The front-end proxy and Tomcat parse the message body boundaries differently. As a result, part of the attacker's payload remains queued on the backend connection and is interpreted by Tomcat as the beginning of a subsequent request. The attacker can then smuggle a hidden request past proxy-layer inspection or access-control rules, interfere with the next request on the same connection, poison responses, or reach internal application paths that the reverse proxy was expected to protect. Successful exploitation depends heavily on proxy behavior, connection reuse, application routing, and whether sensitive actions are exposed through the Tomcat-hosted application.

How to fix it

Upgrade affected Apache Tomcat installations to a fixed release outside the vulnerable ranges. For Apache Tomcat, use Tomcat 10.0.7 or later, 9.0.48 or later, or 8.5.68 or later, as applicable, or a vendor-supported version containing the backported fix. For products that bundle Tomcat, apply the relevant vendor security update rather than replacing embedded libraries manually unless the vendor explicitly supports that approach. Also update downstream distributions and appliances that include Tomcat, including Apache TomEE, Debian packages, Oracle products, and McAfee ePolicy Orchestrator where applicable. As compensating controls, configure reverse proxies to reject malformed or ambiguous Transfer-Encoding headers, reject requests containing both Content-Length and Transfer-Encoding unless explicitly normalized safely, disable backend connection reuse where feasible for high-risk routes, enforce HTTP/1.1 parsing consistency, and ensure edge devices normalize or block obsolete transfer codings such as identity. Mitigations should be treated as temporary because safe request parsing must be enforced in Tomcat itself.

How to confirm the fix worked

Confirm the deployed Tomcat version is no longer in the affected ranges: 10.0.0-M1 through 10.0.6, 9.0.0.M1 through 9.0.46, or 8.5.0 through 8.5.66. Check both standalone Tomcat installations and embedded Tomcat versions inside vendor applications. Validate package manager versions, container image layers, application server banners where reliable, and runtime library metadata such as catalina.jar implementation version. In staging, test the reverse-proxy-to-Tomcat path with benign request-smuggling probes to confirm malformed Transfer-Encoding combinations are rejected consistently by the front end and backend. Review proxy configuration to ensure ambiguous Transfer-Encoding and Content-Length combinations are denied or normalized. After patching, confirm there are no remaining exposed services or container images running the vulnerable Tomcat branches.

Typical attack path

  1. Identify an internet-facing or internally reachable service using Apache Tomcat behind a reverse proxy, load balancer, CDN, API gateway, or web application firewall.
  2. Fingerprint the front-end and backend HTTP behavior by sending malformed requests and observing timing, response differences, connection reuse, or desynchronization symptoms.
  3. Craft requests containing ambiguous Transfer-Encoding headers, including identity encodings, non-final chunked encodings, or conflicting message-length indicators.
  4. Send the crafted request through the proxy so the proxy and Tomcat disagree about the request boundary.
  5. Place an attacker-controlled HTTP request in the backend connection queue so Tomcat processes it as a separate request.
  6. Use the smuggled request to bypass proxy-level restrictions, access internal routes, manipulate another user's request flow, poison cacheable responses, or trigger unintended application actions.
  7. Repeat and tune the payload to the specific proxy/Tomcat/application combination to achieve reliable impact.

How to detect it

Investigating prior exploitation requires logs that preserve raw HTTP request headers, because normal access logs usually record only method, path, status, and user agent. Review reverse proxy, load balancer, CDN, WAF, API gateway, and Tomcat access/application logs for malformed Transfer-Encoding usage, especially requests containing Transfer-Encoding: identity, multiple Transfer-Encoding values, chunked followed by another coding, or both Content-Length and Transfer-Encoding. Look for clusters of 400/408/502/503 responses, backend connection resets, mismatched request and response pairs, unusual keep-alive behavior, unexpected access to internal-only routes, or requests appearing in Tomcat logs that are absent from proxy logs. Compare proxy-side and Tomcat-side logs by timestamp, source IP, connection identifier, request path, and status to identify desynchronization. In applications with authentication or session workflows, review suspicious actions that occurred immediately after malformed HTTP requests from the same source or on reused backend connections. If packet captures, WAF event payloads, or full request logging are available, search directly for ambiguous Transfer-Encoding headers and request bodies that contain a second HTTP request line such as GET / or POST / embedded after chunk terminators.

  • Transfer-Encoding: identity
  • Transfer-Encoding: chunked, identity
  • Transfer-Encoding: identity, chunked
  • Transfer-Encoding: chunked, gzip
  • Transfer-Encoding: gzip, chunked
  • Transfer-Encoding: chunked, chunked
  • Content-Length:
  • Transfer-Encoding:
  • 0\r\n\r\nGET /
  • 0\r\n\r\nPOST /
  • HTTP/1.0\r\nTransfer-Encoding: chunked
  • HTTP/1.0\r\nTransfer-Encoding: identity

What your security team should do

  • Inventory all Tomcat-based services, including embedded Tomcat in commercial products and container images, prioritizing systems behind reverse proxies or load balancers.
  • Patch or upgrade Apache Tomcat to 10.0.7+, 9.0.48+, or 8.5.68+, or apply vendor-provided fixed builds for bundled products.
  • Prioritize internet-facing applications and authentication, API, administrative, payment, healthcare, telecom, and file-transfer systems because request smuggling can bypass edge controls in sensitive workflows.
  • Harden reverse proxies, WAFs, CDNs, and API gateways to reject malformed Transfer-Encoding headers, obsolete identity transfer codings, non-final chunked encodings, and conflicting Content-Length plus Transfer-Encoding requests.
  • Enable or temporarily increase logging of raw HTTP headers at the edge where privacy and performance constraints allow, because standard access logs often do not capture the evidence needed for request-smuggling investigations.
  • Search historical proxy, WAF, and application logs for malformed Transfer-Encoding patterns and unexplained 400 responses, backend 5xx spikes, response desynchronization, or unusual access to paths normally blocked at the proxy.
  • Add regression tests for HTTP request smuggling behavior to application edge validation pipelines so future proxy or application-server changes do not reintroduce parser discrepancies.

The record

Apache Tomcat 10.0.0-M1 to 10.0.6, 9.0.0.M1 to 9.0.46 and 8.5.0 to 8.5.66 did not correctly parse the HTTP transfer-encoding request header in some circumstances leading to the possibility to request smuggling when used with a reverse proxy. Specifically: - Tomcat incorrectly ignored the transfer encoding header if the client declared it would only accept an HTTP/1.0 response; - Tomcat honoured the identify encoding; and - Tomcat did not ensure that, if present, the chunked encoding was the final encoding.

Affected packages

Ecosystem Package Introduced Fixed
Maven org.apache.tomcat:tomcat 10.0.0-M1 10.0.7
Maven org.apache.tomcat:tomcat 8.5.0 8.5.68
Maven org.apache.tomcat:tomcat 9.0.0-M1 9.0.48
Bitnami tomcat 8.5.0 8.5.66
Bitnami tomcat 8.5.0 8.5.67
Debian:10 tomcat9 0 9.0.31-1~deb10u5
Debian:11 tomcat9 0 9.0.43-2~deb11u1
Debian:12 tomcat9 0 9.0.43-2
Debian:13 tomcat9 0 9.0.43-2
Debian:9 tomcat8 0 8.5.54-0+deb9u7
Mageia:8 tomcat 0 9.0.54-1.mga8
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-admin-webapps 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-docs-webapp 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-el-3.0-api 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-java-jdk11 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-java-jdk8 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-javadoc 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-jsp-2.3-api 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-lib 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-native 0 0:1.2.30-3.redhat_3.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-native-debuginfo 0 0:1.2.30-3.redhat_3.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-selinux 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-servlet-4.0-api 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-vault 0 0:1.1.8-4.Final_redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-vault-javadoc 0 0:1.1.8-4.Final_redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el7 jws5-tomcat-webapps 0 0:9.0.50-3.redhat_00004.1.el7jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-admin-webapps 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-docs-webapp 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-el-3.0-api 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-javadoc 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-jsp-2.3-api 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-lib 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-native 0 0:1.2.30-3.redhat_3.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-native-debuginfo 0 0:1.2.30-3.redhat_3.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-selinux 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-servlet-4.0-api 0 0:9.0.50-3.redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-vault 0 0:1.1.8-4.Final_redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-vault-javadoc 0 0:1.1.8-4.Final_redhat_00004.1.el8jws
Red Hat:jboss_enterprise_web_server:5.6::el8 jws5-tomcat-webapps 0 0:9.0.50-3.redhat_00004.1.el8jws
SUSE:Enterprise Storage 6 tomcat 0 9.0.36-4.63.1
SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS tomcat 0 9.0.36-4.63.1
SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS tomcat 0 9.0.36-4.63.1
SUSE:Linux Enterprise High Performance Computing 15-ESPOS tomcat 0 9.0.36-3.84.1
SUSE:Linux Enterprise High Performance Computing 15-LTSS tomcat 0 9.0.36-3.84.1
SUSE:Linux Enterprise Module for Web and Scripting 15 SP2 tomcat 0 9.0.36-13.1
SUSE:Linux Enterprise Module for Web and Scripting 15 SP3 tomcat 0 9.0.36-13.1
SUSE:Linux Enterprise Server 12 SP4-LTSS javapackages-tools 0 2.0.1-13.1
SUSE:Linux Enterprise Server 12 SP4-LTSS tomcat 0 9.0.36-3.71.1
SUSE:Linux Enterprise Server 12 SP5 javapackages-tools 0 2.0.1-13.1
SUSE:Linux Enterprise Server 12 SP5 tomcat 0 9.0.36-3.71.1
SUSE:Linux Enterprise Server 15 SP1-BCL tomcat 0 9.0.36-4.63.1
SUSE:Linux Enterprise Server 15 SP1-LTSS tomcat 0 9.0.36-4.63.1
SUSE:Linux Enterprise Server 15-LTSS tomcat 0 9.0.36-3.84.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP4 javapackages-tools 0 2.0.1-13.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP4 tomcat 0 9.0.36-3.71.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 javapackages-tools 0 2.0.1-13.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 tomcat 0 9.0.36-3.71.1
SUSE:Linux Enterprise Server for SAP Applications 15 tomcat 0 9.0.36-3.84.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP1 tomcat 0 9.0.36-4.63.1
SUSE:OpenStack Cloud 9 javapackages-tools 0 2.0.1-13.1
SUSE:OpenStack Cloud 9 tomcat 0 9.0.36-3.71.1
SUSE:OpenStack Cloud Crowbar 9 javapackages-tools 0 2.0.1-13.1
SUSE:OpenStack Cloud Crowbar 9 tomcat 0 9.0.36-3.71.1
Ubuntu:16.04:LTS tomcat6 0 No fix
Ubuntu:18.04:LTS tomcat9 0 9.0.16-3ubuntu0.18.04.2
Ubuntu:20.04:LTS tomcat9 0 9.0.31-1ubuntu0.2
Ubuntu:22.04:LTS tomcat9 0 No fix
Ubuntu:24.04:LTS tomcat9 0 No fix
Ubuntu:24.10 tomcat9 0 No fix
Ubuntu:Pro:14.04:LTS tomcat6 0 No fix
Ubuntu:Pro:14.04:LTS tomcat7 0 No fix
Ubuntu:Pro:16.04:LTS tomcat6 0 No fix
Ubuntu:Pro:16.04:LTS tomcat7 0 No fix
Ubuntu:Pro:16.04:LTS tomcat8 0 No fix
Ubuntu:Pro:18.04:LTS tomcat7 0 No fix
Ubuntu:Pro:18.04:LTS tomcat8 0 No fix
maven org.apache.tomcat.embed/tomcat-embed-core 10.0.0 10.0.6
maven org.apache.tomcat.embed/tomcat-embed-core 8.5.0 8.5.66
maven org.apache.tomcat.embed/tomcat-embed-core 9.0.0 9.0.46
maven org.apache.tomcat/tomcat 10.0.0-M1 10.0.6
maven org.apache.tomcat/tomcat 8.5.0 8.5.66
maven org.apache.tomcat/tomcat 9.0.0-M1 9.0.46
maven org.apache.tomcat/tomcat-coyote 10.0.0 10.0.7
maven org.apache.tomcat/tomcat-coyote 8.5.0 8.5.68
maven org.apache.tomcat/tomcat-coyote 9.0.0 9.0.48
maven org.apache.tomee/tomee 8.0.6 No fix
maven org.apache.tomee/tomee-webapp 8.0.6 No fix
openSUSE:Leap 15.2 tomcat 0 9.0.36-lp152.2.25.1
openSUSE:Leap 15.3 tomcat 0 9.0.36-13.1
openSUSE:Tumbleweed tomcat 0 9.0.43-2.1
openSUSE:Tumbleweed tomcat10 0 10.1.14-1.1

Related vulnerabilities