← Back to Feed CACHED · 2026-09-17 07:06:57 · CACHE_KEY tenable:211503
tenable:211503 · CWE-391 · Disclosed 2024-11-18

Apache Tomcat 9.0.92 < 9.0.96 multiple vulnerabilities

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

A 9.8 alarm bell wired to a door that almost nobody has installed

This Tenable plugin (211503) bundles two CVEs affecting Apache Tomcat 9.0.92 through 9.0.95, fixed in 9.0.96. CVE-2024-52316 (CVSS 9.8) is an authentication bypass that fires only when Tomcat is configured with a *custom* Jakarta Authentication (JASPIC) ServerAuthContext component that throws an exception during authentication *without* explicitly setting an HTTP failure status — Apache's own advisory notes no known components behave this way. CVE-2024-52317 (CVSS 6.5) is an HTTP/2 request/response object-recycling bug that can leak one user's request or response data to another user, a genuine information-disclosure concern wherever HTTP/2 is enabled on affected versions.

The vendor CVSS 9.8 is technically defensible *if* you assume the JASPIC precondition is met, but it wildly overstates real-world risk. Tenable's own VPR score — 4.9, medium — tells you what the vendor's own risk model actually thinks after adjusting for exploitability. The JASPIC prerequisite is so exotic that it functions as a near-perfect filter: the population of Tomcat deployments running custom ServerAuthContext implementations that also mishandle exceptions is vanishingly small. The HTTP/2 mixup is more broadly reachable but its impact ceiling is session/data leakage, not RCE or full auth bypass. Taken together, this plugin deserves a MEDIUM in any fleet that hasn't hand-rolled JASPIC plumbing.

"CVSS 9.8 demands custom JASPIC nobody uses; real risk is the HTTP/2 mixup at 6.5"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Identify Tomcat instance on affected version

Attacker fingerprints a Tomcat server running 9.0.92–9.0.95 via HTTP headers, error pages, or /docs default app. Version disclosure is common on unhardened instances. Shodan/FOFA queries surface Tomcat version strings routinely.
Conditions required:
  • Target runs Tomcat 9.0.92–9.0.95
  • Tomcat is network-reachable (internal or internet-facing)
Where this breaks in practice:
  • Version range is narrow — only four minor releases spanning ~3 months of builds
  • Many enterprises proxy Tomcat behind a reverse proxy that strips version headers
Detection/coverage: Tenable plugin 211503 (credentialed or remote). Qualys QID for same CVE range.
STEP 02

(CVE-2024-52316) Trigger exception in custom JASPIC ServerAuthContext

Attacker sends a crafted authentication request designed to cause the custom ServerAuthContext to throw an exception. If the custom component does not explicitly set an HTTP status code indicating failure before throwing, Tomcat treats the authentication as successful. The attacker lands an authenticated session without valid credentials.
Conditions required:
  • Tomcat must be configured with Jakarta Authentication (JASPIC)
  • A custom ServerAuthContext must be deployed
  • The custom component must throw exceptions without setting HTTP failure status
Where this breaks in practice:
  • No known Jakarta Authentication components behave this way per Apache's own advisory
  • JASPIC adoption in Tomcat is extremely niche — most deployments use Realm-based auth, Spring Security, or container-managed FORM/BASIC auth
  • Even custom JASPIC implementations that do exist typically set failure status codes as part of normal error handling
Detection/coverage: No public scanner signature specifically validates JASPIC configuration presence. Manual audit of jaspic-providers.xml or application code required.
STEP 03

(CVE-2024-52317) Exploit HTTP/2 object recycling for data leakage

On a Tomcat instance serving HTTP/2 traffic, incorrect recycling of request/response objects causes one user's request or response data to be served to a different user. This is a race-condition-class bug — the attacker doesn't need credentials, but they don't fully control *which* user's data they receive. Exploitation is probabilistic, not deterministic.
Conditions required:
  • HTTP/2 must be enabled on the Tomcat connector
  • Multiple concurrent users must be active on the same connector
  • Target runs 9.0.92–9.0.95
Where this breaks in practice:
  • Many Tomcat deployments terminate TLS/HTTP2 at the load balancer or reverse proxy, so Tomcat itself speaks HTTP/1.1 only
  • Exploitation is non-deterministic — attacker cannot target a specific victim's session
  • Impact ceiling is information disclosure, not code execution
Detection/coverage: Tenable plugin 211503. Runtime detection would require correlating HTTP/2 stream anomalies in access logs — unlikely without custom tooling.
STEP 04

Leverage leaked session or auth bypass for lateral movement

If CVE-2024-52316 succeeds (extremely unlikely prerequisite), the attacker has authenticated access to whatever the Tomcat application exposes — admin panels, APIs, data. If CVE-2024-52317 succeeds, the attacker has fragments of another user's session which may include tokens, PII, or API keys. Either path feeds further lateral movement or data exfiltration depending on the application's role.
Conditions required:
  • Prior step must succeed
  • Application behind Tomcat must expose high-value data or admin functionality
Where this breaks in practice:
  • CVE-2024-52316 path is gated by an almost-nonexistent prerequisite
  • CVE-2024-52317 path yields partial, non-deterministic data leakage
  • Application-layer controls (RBAC, CSRF tokens, short-lived JWTs) limit blast radius of leaked fragments
Detection/coverage: Application-level anomaly detection, WAF session-integrity checks, SIEM correlation of unusual session reuse patterns.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo confirmed exploitation. Neither CVE is in the CISA KEV catalog. No credible reports of active campaigns targeting these specific flaws.
Proof of ConceptCVE-2024-52316: TAM-K592/CVE-2024-52316 on GitHub — demonstrates the auth bypass but requires you to build and deploy a custom vulnerable JASPIC provider first. Not a point-and-shoot exploit. CVE-2024-52317: No public PoC.
EPSSCVE-2024-52316: ~1.3%–6.3% (varies by source/update date). CVE-2024-52317: low, not prominently scored. Both well below the 10% threshold that typically signals imminent exploitation.
CISA KEVNot listed for either CVE as of September 2026.
CVSS VectorsCVE-2024-52316: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8) — note AC:L is debatable given the custom-JASPIC prerequisite. CVE-2024-52317: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N (6.5).
Tenable VPR4.9 (Medium, 57th percentile) — Tenable's own risk-adjusted score is dramatically lower than the CVSS 9.8, reflecting the impractical prerequisites.
Affected VersionsCVE-2024-52316: Tomcat 9.0.0.M1–9.0.95, 10.1.0.M1–10.1.30, 11.0.0.M1–11.0.0.M26 (plus EOL 8.5.x). CVE-2024-52317: Tomcat 9.0.92–9.0.95, 10.1.27–10.1.30, 11.0.0.M23–11.0.0.M26.
Fixed Versions9.0.96, 10.1.31, 11.0.0. Distro backports: check RHEL, Ubuntu, Amazon Linux advisories for backported fixes.
Exposure DataApache Tomcat is massively deployed — Shodan shows hundreds of thousands of internet-facing instances across all versions. However, the *vulnerable configuration* (custom JASPIC) is effectively unmeasurable because it requires application-level inspection, not banner grabbing.
Disclosure & CreditDisclosed 2024-11-18 via Apache Tomcat security mailing list. CVE-2024-52316 reported to Apache; CVE-2024-52317 identified during internal code review.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.0/10)

The single most decisive factor is the near-zero real-world prevalence of the prerequisite configuration: CVE-2024-52316's 9.8 score requires a custom JASPIC ServerAuthContext that mishandles exceptions — a configuration Apache itself says no known component exhibits. Stripping that phantom attack surface leaves CVE-2024-52317's HTTP/2 data-leakage bug (CVSS 6.5) as the only broadly reachable flaw, which caps impact at information disclosure rather than code execution or full authentication bypass.

HIGH Prerequisite rarity for CVE-2024-52316 (custom JASPIC is extremely uncommon)
MEDIUM CVE-2024-52317 HTTP/2 exploitability in real proxy architectures
LOW Precise fraction of Tomcat fleet still on 9.0.92–9.0.95

Why this verdict

  • Phantom prerequisite: CVE-2024-52316 requires a custom JASPIC ServerAuthContext that throws exceptions without setting failure status. Apache's advisory states no known component behaves this way. The CVSS 9.8 scores a scenario that effectively does not exist in production.
  • Tenable's own VPR agrees: Tenable rates this plugin at VPR 4.9 (Medium) — a 5-point drop from the CVSS base. When the vendor's own risk model disagrees with the CVSS this strongly, the CVSS is measuring theoretical ceiling, not operational risk.
  • Narrow version window: CVE-2024-52317 only affects 9.0.92–9.0.95, a span of four minor releases over ~3 months. Enterprises on LTS or slightly older tracks (9.0.x < 9.0.92) are not affected by the HTTP/2 bug at all.
  • HTTP/2 termination architecture: Many enterprise Tomcat deployments terminate HTTP/2 at the load balancer or reverse proxy (NGINX, HAProxy, F5), meaning Tomcat's own HTTP/2 connector is never exercised — further reducing the CVE-2024-52317 population.
  • Role multiplier: Tomcat serves as an application server across roles from dev sandboxes to production API tiers. In high-value roles (e.g., hosting an identity service or admin console), the HTTP/2 data-leakage bug could expose tokens or PII, but the blast radius is *per-session fragment leakage*, not domain takeover or fleet compromise. The JASPIC auth-bypass chain does not succeed in any role without the custom component. No high-value-role outcome reaches the domain/fleet/supply-chain threshold, so no verdict floor override applies.
  • No exploitation signal: Not in CISA KEV, no confirmed campaigns, EPSS under 7%, PoC requires self-deployed vulnerable JASPIC provider. The threat-intel signal is quiet.

Why not higher?

Upgrading to HIGH would require either active exploitation evidence, a broadly reachable attack path leading to code execution, or a high-value-role blast radius reaching domain/fleet scale. None of these conditions are met. The auth-bypass path is gated by a prerequisite that doesn't exist in known deployments, and the HTTP/2 mixup caps at partial information disclosure. Tenable's own VPR of 4.9 corroborates that MEDIUM is already generous.

Why not lower?

CVE-2024-52317's HTTP/2 request/response mixup is a real bug that can leak user data without authentication on affected versions. It's not purely theoretical — any Tomcat instance serving HTTP/2 directly on 9.0.92–9.0.95 with concurrent users is vulnerable. Information disclosure between users is a meaningful confidentiality impact that keeps this above LOW. Additionally, the PoC availability for CVE-2024-52316, while requiring self-built prerequisites, means the mechanism is documented and understood.

05 · Compensating Control

What to do — in priority order.

  1. Audit for JASPIC configuration — Run grep -r 'jaspic\|ServerAuthContext\|AuthConfigProvider' $CATALINA_BASE/conf/ $CATALINA_BASE/webapps/ across your fleet. If zero hits (expected for >99% of deployments), CVE-2024-52316 is not exploitable in your environment. Document this finding and deprioritize that CVE. No mitigation SLA applies for MEDIUM — go straight to the 365-day remediation window.
  2. Terminate HTTP/2 at the reverse proxy — If Tomcat connectors are configured with protocol="org.apache.coyote.http2.Http2Protocol" or h2 upgrade support, consider terminating HTTP/2 at your load balancer (NGINX, HAProxy, F5) and speaking HTTP/1.1 to Tomcat backends. This eliminates the CVE-2024-52317 attack surface entirely without patching. Implement within your standard change window.
  3. Upgrade to Tomcat 9.0.96+ — The definitive fix. Version 9.0.96 was released October 2024. As a MEDIUM finding, the noisgate remediation SLA gives you 365 days. Plan this in your next quarterly patch cycle.
  4. Restrict Tomcat management interfaces — Ensure /manager, /host-manager, and any admin endpoints are not exposed to untrusted networks. This limits the blast radius of any auth bypass, even a theoretical one.
What doesn't work
  • WAF rules for auth bypass — CVE-2024-52316 is triggered by the *server-side JASPIC exception handling*, not by a malicious request payload. No WAF signature can block a server misconfiguration from being exploitable.
  • Disabling HTTP/2 at the TLS level only — If Tomcat's connector itself supports HTTP/2 cleartext (h2c) and clients connect directly, TLS-level ALPN changes won't help. You must disable HTTP/2 on the Tomcat connector or ensure no direct client access.
06 · Verification

Crowdsourced verification payload.

Run this script on each Tomcat host as any user with read access to $CATALINA_HOME and $CATALINA_BASE. Example: bash check_tomcat_211503.sh /opt/tomcat. It checks the installed version and JASPIC configuration presence.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_tomcat_211503.sh — Verify exposure to Tenable 211503 (CVE-2024-52316 + CVE-2024-52317)
# Usage: bash check_tomcat_211503.sh /path/to/tomcat
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

CATALINA_HOME="${1:-${CATALINA_HOME:-}}"

if [[ -z "$CATALINA_HOME" ]]; then
  echo "UNKNOWN — provide CATALINA_HOME as argument or env var"
  exit 2
fi

# Extract version
VERSION_FILE="$CATALINA_HOME/lib/catalina.jar"
if [[ ! -f "$VERSION_FILE" ]]; then
  echo "UNKNOWN — cannot find $VERSION_FILE"
  exit 2
fi

VERSION=$(unzip -p "$VERSION_FILE" org/apache/catalina/util/ServerInfo.properties 2>/dev/null \
  | grep 'server.number' | cut -d= -f2 | tr -d '[:space:]')

if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN — could not parse Tomcat version"
  exit 2
fi

echo "Detected Tomcat version: $VERSION"

# Parse major.minor.patch
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"

# Check if in vulnerable range: 9.0.92 <= version <= 9.0.95
VULN_VERSION=false
if [[ "$MAJOR" -eq 9 && "$MINOR" -eq 0 && "$PATCH" -ge 92 && "$PATCH" -le 95 ]]; then
  VULN_VERSION=true
fi

if [[ "$VULN_VERSION" == false ]]; then
  echo "PATCHED — version $VERSION is outside the affected range (9.0.92–9.0.95)"
  exit 0
fi

# Check for JASPIC configuration (CVE-2024-52316 relevance)
CATALINA_BASE="${CATALINA_BASE:-$CATALINA_HOME}"
JASPIC_CONF="$CATALINA_BASE/conf/jaspic-providers.xml"
JASPIC_FOUND=false

if [[ -f "$JASPIC_CONF" ]] && grep -qi 'AuthConfigProvider\|ServerAuthContext' "$JASPIC_CONF" 2>/dev/null; then
  JASPIC_FOUND=true
fi

# Check for HTTP/2 connector (CVE-2024-52317 relevance)
SERVER_XML="$CATALINA_BASE/conf/server.xml"
H2_FOUND=false
if [[ -f "$SERVER_XML" ]] && grep -qiE 'Http2Protocol|h2c|upgradeProtocol.*HTTP2' "$SERVER_XML" 2>/dev/null; then
  H2_FOUND=true
fi

echo "JASPIC custom config detected: $JASPIC_FOUND"
echo "HTTP/2 connector detected: $H2_FOUND"

if [[ "$JASPIC_FOUND" == true ]]; then
  echo "VULNERABLE — version $VERSION is affected AND custom JASPIC configuration found (CVE-2024-52316 + CVE-2024-52317)"
  exit 1
elif [[ "$H2_FOUND" == true ]]; then
  echo "VULNERABLE — version $VERSION is affected AND HTTP/2 connector enabled (CVE-2024-52317)"
  exit 1
else
  echo "VULNERABLE — version $VERSION is in affected range, but neither JASPIC nor HTTP/2 connectors detected. Effective risk is minimal. Upgrade recommended."
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This plugin's CVSS 9.8 headline is driven by CVE-2024-52316, an auth bypass that requires a custom JASPIC configuration nobody is known to use. The real exposure for most fleets is CVE-2024-52317's HTTP/2 data leakage at CVSS 6.5, and even that requires Tomcat to serve HTTP/2 directly rather than behind a proxy. At a noisgate-reassessed MEDIUM, there is no mitigation SLA — go straight to the 365-day noisgate remediation SLA and schedule the upgrade to Tomcat 9.0.96+ in your next quarterly patch cycle. Before that, run the verification script to confirm whether any instances actually have JASPIC or HTTP/2 connectors configured; if neither is present, this finding is effectively informational for your environment. If you *do* find JASPIC custom auth or direct HTTP/2 exposure, escalate those specific hosts to your next change window.

Sources

  1. Tenable Plugin 211503
  2. Apache Tomcat 9 Security Advisories
  3. CVE-2024-52316 – Tarlogic Analysis
  4. CVE-2024-52316 – GitHub Advisory GHSA-xcpr-7mr4-h4xq
  5. CVE-2024-52316 PoC – TAM-K592
  6. CVE-2024-52317 – oss-security Disclosure
  7. CVE-2024-52317 – Red Hat Bugzilla
  8. HKCERT Advisory – Apache Tomcat Multiple Vulnerabilities
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.