← Back to Feed CACHED · 2026-09-17 03:47:41 · CACHE_KEY tenable:194473
tenable:194473 · CWE-835 · Disclosed 2021-09-16

Apache Tomcat 9.0.0.M1 < 9.0.44 multiple vulnerabilities

ASSESSED — NOISGATE
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Like leaving a coffee shop's lost-and-found bin open where strangers can peek at the last customer's receipt

This Tenable plugin (194473) bundles two CVEs fixed in Apache Tomcat 9.0.44, released March 2021 — over five years ago. CVE-2021-41079 (CVSS 7.5 HIGH) is a denial-of-service via infinite loop triggered by a malformed TLS packet, but *only* when Tomcat is configured with NIO+OpenSSL or NIO2+OpenSSL connectors — a non-default configuration most deployments never enable. CVE-2024-21733 (CVSS 5.3 MEDIUM) is an information-disclosure flaw where an incomplete POST request causes Tomcat's error page to leak body data from a *different user's prior request*, potentially exposing credentials or session tokens.

Tenable rates the plugin MEDIUM, which is reasonable. The NVD HIGH score for CVE-2021-41079 overstates real-world risk because it ignores the OpenSSL connector prerequisite that eliminates the vast majority of Tomcat deployments. CVE-2024-21733 is the more broadly applicable issue — it requires no authentication, works over the network, and has a public PoC — but its impact ceiling is partial confidentiality loss (leaked fragments), not code execution or persistent compromise. The MEDIUM rating holds.

"Old Tomcat vulns: DoS needs rare OpenSSL config, info leak is real but limited to partial data."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Identify vulnerable Tomcat instance

Attacker fingerprints an internet-facing or internal Tomcat instance running version 9.0.0-M1 through 9.0.43 via HTTP response headers (Server: Apache-Coyote/1.1) or error pages. Shodan shows ~378K Tomcat instances globally, though the fraction still running pre-9.0.44 after 5+ years is shrinking rapidly.
Conditions required:
  • Tomcat instance reachable on HTTP/HTTPS port
  • Version < 9.0.44
Where this breaks in practice:
  • 9.0.44 was released March 2021 — most maintained deployments have long since upgraded
  • Many Tomcat instances sit behind reverse proxies that strip version headers
Detection/coverage: Tenable plugin 194473, Qualys QID equivalent, Nuclei apache-tomcat-detect template
STEP 02

CVE-2024-21733: Send incomplete POST to leak cross-user data

Attacker sends a crafted incomplete POST request to any JSP endpoint, then immediately sends a second request. The Tomcat error response for the incomplete request may include the body content from a different user's prior request. The LtmThink/CVE-2024-21733 PoC automates this with a Python script. The leaked data is whatever happened to be in the connector's input buffer — it could be credentials, API keys, or nothing useful.
Conditions required:
  • Any HTTP endpoint on the vulnerable Tomcat
  • No authentication required
Where this breaks in practice:
  • Leaked data is probabilistic — attacker cannot target a specific user or request
  • WAFs with request-body validation may reject malformed/truncated POSTs
  • Data leaked is partial fragments, not complete request bodies in most cases
Detection/coverage: WAF logs showing malformed POST requests with truncated Content-Length, application error logs showing 400-series responses with unexpected body content
STEP 03

CVE-2021-41079: Send malformed TLS packet for DoS

If the target uses NIO+OpenSSL or NIO2+OpenSSL connector configuration, attacker sends a specially crafted TLS ClientHello or handshake packet that triggers an infinite loop in Tomcat's TLS processing thread. This consumes CPU and renders the Tomcat instance unresponsive. Recovery requires a service restart.
Conditions required:
  • Tomcat configured with protocol="org.apache.coyote.http11.Http11NioProtocol" AND OpenSSL via tc-native
  • Direct TLS termination at Tomcat (not offloaded to load balancer)
Where this breaks in practice:
  • NIO+OpenSSL is not the default — most deployments use JSSE for TLS or offload TLS at a reverse proxy/load balancer
  • Enterprise deployments almost universally terminate TLS at F5, NGINX, or ALB, never at Tomcat directly
  • Even when triggered, impact is availability-only and recoverable via restart
Detection/coverage: Monitoring for Tomcat process CPU spike to 100% with no corresponding request throughput, health check failures
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo known active exploitation campaigns. Neither CVE appears in CISA KEV. No threat intel reports document weaponization in ransomware or APT activity.
Proof-of-ConceptCVE-2024-21733: Public PoC by LtmThink on GitHub — Python script sending incomplete POST requests. CVE-2021-41079: No public exploit code identified.
EPSS ScoresCVE-2024-21733: 0.1429 (96.4th percentile) — elevated exploitation probability. CVE-2021-41079: 0.0718 (94.0th percentile) — moderate.
CISA KEV StatusNot listed for either CVE.
CVSS VectorsCVE-2021-41079: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (7.5 HIGH) — network-reachable DoS, no confidentiality/integrity impact. CVE-2024-21733: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N (5.3 MEDIUM) — partial confidentiality loss only.
Affected VersionsCVE-2021-41079: 9.0.0-M1 through 9.0.43 (also 8.5.0–8.5.63, 10.0.0-M1–10.0.2). CVE-2024-21733: 9.0.0-M11 through 9.0.43 (also 8.5.7–8.5.63).
Fixed Versions9.0.44 (released 2021-03-10). Distro backports: Debian tomcat9 packages updated in respective stable repos; RHEL/Amazon Linux via ALASTOMCAT8.5-2024-017.
Exposure DataShodan reports ~378K Tomcat instances globally (March 2025 scan). Fraction running pre-9.0.44 after 5+ years estimated at <5% of the installed base. Most enterprise Tomcat sits behind reverse proxies.
Disclosure DateCVE-2021-41079: 2021-09-16 (fix committed 2021-03-10). CVE-2024-21733: 2024-01-19 (reported 2023-12-20, fix already shipped in 9.0.44 from March 2021).
CreditCVE-2021-41079: Thomas Wozenilek. CVE-2024-21733: Reported via Apache security team, HackerOne disclosure #2327341.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to MEDIUM (5.3/10)

The single most decisive factor is that the highest-severity CVE (CVE-2021-41079, CVSS 7.5) requires a non-default NIO+OpenSSL connector configuration that the vast majority of Tomcat deployments do not use, collapsing its effective reach to a small fraction of the installed base. The broadly applicable CVE-2024-21733 is already rated MEDIUM at 5.3 with impact limited to partial, probabilistic data leakage — not code execution or persistent compromise.

HIGH Vulnerability mechanics and affected versions
HIGH PoC availability and exploitation status
MEDIUM Fraction of deployments using NIO+OpenSSL

Why this verdict

  • Non-default prerequisite narrows CVE-2021-41079 to near-irrelevance. The DoS requires NIO+OpenSSL or NIO2+OpenSSL connector config AND direct TLS termination at Tomcat. Enterprise deployments overwhelmingly offload TLS at load balancers or reverse proxies, making this condition rare.
  • CVE-2024-21733 impact ceiling is partial confidentiality. The info leak is probabilistic — the attacker cannot target specific users or guarantee useful data in the leaked buffer fragments. No path to code execution, privilege escalation, or lateral movement exists from this flaw alone.
  • Role multiplier: Tomcat occupies roles ranging from dev sandbox (low-value) to production application tier hosting business-critical apps (typical) to identity-adjacent services like SSO portals or admin consoles (high-value). Even in high-value roles, neither CVE enables RCE, domain compromise, or supply-chain pivot. The DoS is recoverable; the info leak is partial. The blast radius is host-level availability or partial single-request confidentiality — not fleet-scale. No floor elevation is warranted.
  • Age and adoption of fix. The patch (9.0.44) shipped in March 2021 — over 5 years ago. Any system still vulnerable has likely been scanned and reported multiple times. The residual vulnerable population is small and shrinking.
  • No KEV, no campaigns, no weaponization. Despite public PoC for CVE-2024-21733 and a 96th-percentile EPSS, there are no documented threat campaigns, no ransomware adoption, and no KEV listing.

Why not higher?

Neither CVE enables remote code execution, privilege escalation, or any write-side impact. CVE-2021-41079 is availability-only and gated behind an uncommon configuration. CVE-2024-21733 leaks partial request data probabilistically — there is no reliable path from this leak to account takeover or lateral movement. Absent RCE or KEV listing, HIGH is not justified.

Why not lower?

CVE-2024-21733 is unauthenticated, network-reachable, requires no user interaction, and has a working public PoC with a 96th-percentile EPSS score. The leaked data *can* include credentials or tokens in POST bodies. Dismissing this as LOW would understate the real confidentiality risk for internet-facing Tomcat instances that have not patched in over five years.

05 · Compensating Control

What to do — in priority order.

  1. Deploy a reverse proxy or WAF in front of Tomcat — A reverse proxy (NGINX, HAProxy, F5) that terminates TLS eliminates CVE-2021-41079 entirely and can filter malformed POST requests that trigger CVE-2024-21733. If not already in place, deploy within the 365-day noisgate remediation window.
  2. Disable NIO+OpenSSL connector if configured — Switch server.xml connector protocol to default NIO with JSSE (Http11NioProtocol without tc-native) to eliminate CVE-2021-41079. This is a configuration change, not a code change — low risk to deploy.
  3. Upgrade to Tomcat 9.0.44 or later — The definitive fix. Given the MEDIUM verdict, target the noisgate remediation SLA of 365 days — though given these patches are 5+ years old, there is no reason to delay if a maintenance window is available.
  4. Enable custom error pages — Configure <error-page> directives in web.xml to suppress default Tomcat error responses, reducing the data exposed by CVE-2024-21733's error-message leak.
What doesn't work
  • Network segmentation alone — CVE-2024-21733 is exploitable by any client that can reach the Tomcat HTTP port, including authenticated internal users or compromised workstations. Segmentation does not help if the attacker is already on the allowed network.
  • Rate limiting — The info leak requires only two requests and is not a volume-based attack. Rate limiting will not prevent exploitation.
06 · Verification

Crowdsourced verification payload.

Run this script on the Tomcat host (or any host with curl access to the target). Invoke as: bash check_tomcat_194473.sh https://target:8443. No special privileges required — it only issues HTTP requests and parses the response.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_tomcat_194473.sh — Detect Apache Tomcat < 9.0.44 (Tenable 194473)
# Usage: bash check_tomcat_194473.sh <BASE_URL>
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

URL="${1:-}"
if [ -z "$URL" ]; then
  echo "Usage: $0 <BASE_URL>" >&2
  exit 2
fi

# Attempt to extract Tomcat version from a 404 error page
RESP=$(curl -sk -o - -w '\n%{http_code}' "${URL}/noisgate-version-check-$(date +%s)" 2>/dev/null || true)

if echo "$RESP" | grep -qiE 'Apache Tomcat/[0-9]'; then
  VERSION=$(echo "$RESP" | grep -oiE 'Apache Tomcat/[0-9]+\.[0-9]+\.[0-9]+' | head -1 | cut -d'/' -f2)
  if [ -z "$VERSION" ]; then
    echo "UNKNOWN — Could not parse Tomcat version from response."
    exit 2
  fi

  MAJOR=$(echo "$VERSION" | cut -d. -f1)
  MINOR=$(echo "$VERSION" | cut -d. -f2)
  PATCH=$(echo "$VERSION" | cut -d. -f3)

  echo "Detected: Apache Tomcat/$VERSION"

  if [ "$MAJOR" -eq 9 ] && [ "$MINOR" -eq 0 ] && [ "$PATCH" -lt 44 ]; then
    echo "VULNERABLE — Tomcat $VERSION is < 9.0.44 (affected by CVE-2021-41079, CVE-2024-21733)"
    exit 1
  elif [ "$MAJOR" -eq 9 ] && [ "$MINOR" -eq 0 ] && [ "$PATCH" -ge 44 ]; then
    echo "PATCHED — Tomcat $VERSION is >= 9.0.44"
    exit 0
  elif [ "$MAJOR" -lt 9 ]; then
    echo "VULNERABLE — Tomcat $VERSION is in an older major branch (check 8.5.x separately)"
    exit 1
  else
    echo "PATCHED — Tomcat $VERSION is a newer branch"
    exit 0
  fi
else
  # Fallback: check via manager or version endpoint
  echo "UNKNOWN — Tomcat version not disclosed in error page (version hiding or WAF in front)."
  echo "Verify manually: check CATALINA_HOME/lib/catalina.jar META-INF/MANIFEST.MF or run 'catalina.sh version'"
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
These are five-year-old vulnerabilities in Tomcat < 9.0.44. The highest-impact issue (CVE-2024-21733, info disclosure) is real but limited to partial data leakage. Under the noisgate remediation SLA for MEDIUM, you have 365 days to apply the vendor patch — there is no mitigation SLA for MEDIUM, so go straight to the remediation window. That said, Tomcat 9.0.44 has been available since March 2021; if you still have hosts running older versions, prioritize them in your next quarterly patching cycle rather than waiting the full year. Confirm your Tomcat instances are behind a TLS-terminating reverse proxy (which neutralizes CVE-2021-41079 entirely) and deploy custom error pages to reduce CVE-2024-21733 exposure in the interim.

Sources

  1. Tenable Plugin 194473
  2. Apache Tomcat 9 Security Advisories
  3. NVD — CVE-2021-41079
  4. NVD — CVE-2024-21733
  5. CVE-2024-21733 PoC (LtmThink)
  6. HackerOne Report #2327341
  7. FIRST EPSS API
  8. Recorded Future — Tomcat Exposure Analysis
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.