← Back to Feed CACHED · 2026-09-16 09:53:59 · CACHE_KEY tenable:182809
tenable:182809 · CWE-400 · Disclosed 2023-10-10

Apache Tomcat 9.0.0.M1 < 9.0.81 multiple vulnerabilities

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

Four bugs in a trenchcoat pretending to be MEDIUM, but one of them is a KEV-listed DDoS cannon

Tenable plugin 182809 bundles four CVEs affecting Apache Tomcat 9.0.0.M1 through 9.0.80, fixed in 9.0.81. The headliner is CVE-2023-44487 (HTTP/2 Rapid Reset), an unauthenticated denial-of-service flaw that was exploited at unprecedented scale — Google saw 398 million requests/second, Cloudflare 201 million rps, Amazon 155 million rps. The remaining three are lower-impact: CVE-2023-45648 (request smuggling via malformed trailer headers, requires a reverse proxy, CVSS 5.3), CVE-2023-42795 (information leakage from incomplete object recycling, CVSS 5.3), and CVE-2023-42794 (temp-file DoS on Windows only, Low).

Tenable's plugin-level severity of MEDIUM / CVSS 5.3 is misleading because it appears to anchor on the request-smuggling CVE rather than the most dangerous bug in the bundle. CVE-2023-44487 carries CVSS 7.5, an EPSS of 0.99999 (99.997th percentile), and was added to CISA KEV on 2023-10-10 with a federal remediation deadline of 2023-10-31. When a vulnerability has confirmed mass exploitation *and* a KEV listing, rating the bundle MEDIUM sends the wrong signal to patch prioritization workflows. The VPR score of 7.3 (High) is closer to reality, but the plugin's headline severity still reads MEDIUM in most dashboards.

"KEV-listed HTTP/2 Rapid Reset buried inside a MEDIUM bundle — upgrade this to HIGH."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Identify HTTP/2-capable Tomcat

The attacker scans for internet-facing Tomcat instances advertising HTTP/2 via ALPN negotiation. Tomcat 9.x supports HTTP/2 when configured with an Http11NioProtocol or Http11Nio2Protocol connector plus the UpgradeProtocol element. Shodan shows ~378,000 exposed Tomcat instances globally. No authentication or special knowledge is needed — the protocol handshake reveals support.
Conditions required:
  • Target Tomcat is internet-facing
  • HTTP/2 is enabled on the connector
Where this breaks in practice:
  • Many enterprise Tomcat deployments sit behind a load balancer or reverse proxy that terminates HTTP/2, meaning the proxy absorbs the attack rather than Tomcat itself
  • Internal-only Tomcat instances are not reachable
Detection/coverage: Shodan dork Server: Apache-Coyote or Server: Apache with HTTP/2 ALPN. Nessus plugin 182809 detects the version range.
STEP 02

Send Rapid Reset stream flood

The attacker opens many HTTP/2 streams and immediately sends RST_STREAM frames for each. The server allocates resources to process the request before the reset is handled, but the client pays almost nothing. This asymmetry lets a single machine generate devastating load. No exploit code is needed — off-the-shelf HTTP/2 load-testing tools (e.g., h2load, custom Go scripts) can replicate the attack trivially.
Conditions required:
  • Network path to the target on the HTTP/2 port
Where this breaks in practice:
  • CDNs and cloud WAFs with HTTP/2 flood protection (Cloudflare, AWS Shield, Akamai) absorb the attack upstream
  • Rate-limiting on the reverse proxy or load balancer can blunt impact
Detection/coverage: Spike in RST_STREAM frames visible in HTTP/2 frame-level logging. Cloudflare, AWS, and Google published detection signatures in October 2023.
STEP 03

Tomcat exhausts resources — OutOfMemoryError

Unmitigated, the rapid reset flood causes Tomcat to exhaust heap memory or thread pools, resulting in an OutOfMemoryError or connection refusal. The application becomes unavailable to legitimate users. Recovery typically requires a service restart. The impact is availability only — there is no code execution, privilege escalation, or data exfiltration from this CVE alone.
Conditions required:
  • No upstream HTTP/2 flood mitigation in place
  • Tomcat version < 9.0.81
Where this breaks in practice:
  • Impact is denial of service, not compromise — no lateral movement follows
  • Tomcat auto-restarts in many orchestrated environments (Kubernetes, systemd)
Detection/coverage: Application monitoring (APM) and JVM heap alerts will fire. HTTP 503 rates spike.
STEP 04

(Opportunistic) Request smuggling via CVE-2023-45648

Separately, if Tomcat sits behind a reverse proxy that forwards HTTP trailer headers, an attacker can craft a malformed trailer that causes Tomcat to interpret one request as two. The smuggled request can poison another user's session or bypass front-end access controls. This requires a specific deployment topology (reverse proxy + Tomcat) and is harder to weaponize at scale.
Conditions required:
  • Tomcat is behind a reverse proxy that passes trailer headers
  • HTTP/1.1 with chunked transfer encoding is in use
Where this breaks in practice:
  • Many proxies strip or ignore trailer headers entirely
  • Exploitation requires careful request alignment — not a point-and-shoot attack
  • Impact depends on what the smuggled request targets in the application
Detection/coverage: WAF rules for HTTP request smuggling (e.g., ModSecurity CRS rules 921110-921160). Nessus plugin 182809 flags the version.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationConfirmed at massive scale. CVE-2023-44487 was exploited as a zero-day from August–October 2023 against Google, Cloudflare, and AWS infrastructure. Google recorded 398M rps, the largest DDoS attack ever observed at the time.
CISA KEVListed 2023-10-10, federal remediation deadline 2023-10-31. CISA advisory.
EPSS (CVE-2023-44487)0.99999 probability (99.997th percentile) — effectively certain exploitation activity within 30 days.
EPSS (other CVEs)CVE-2023-45648 and CVE-2023-42795 have substantially lower EPSS scores; CVE-2023-42794 is negligible.
Proof-of-ConceptTrivially reproducible with h2load or custom HTTP/2 clients. For CVE-2023-45648, 8 public PoC repos on GitHub demonstrate trailer-header smuggling.
CVSS VectorsCVE-2023-44487: CVSS 7.5 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H — CVE-2023-45648: CVSS 5.3 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Affected VersionsApache Tomcat 9.0.0.M1 through 9.0.80 (also affects 8.5.0–8.5.93, 10.1.0-M1–10.1.13, 11.0.0-M1–11.0.0-M11)
Fixed Versions9.0.81, 8.5.94, 10.1.14, 11.0.0-M12. Distro backports: RHEL/CentOS via tomcat package updates, Debian/Ubuntu via tomcat9 security updates, Amazon Linux via ALAS advisories.
Exposure DataShodan reports ~378,000 internet-facing Tomcat instances globally, concentrated in China, Brazil, Morocco, and the US.
ReporterCVE-2023-44487 discovered collaboratively by Google, Cloudflare, and AWS. Tomcat-specific CVEs reported to the Apache Tomcat security team.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to HIGH (7.5/10)

The single most decisive factor is the active KEV listing for CVE-2023-44487 with confirmed mass exploitation at record-breaking scale, bundled inside a plugin that Tenable labels MEDIUM. While the impact ceiling is availability-only (DoS, no RCE), the unauthenticated-remote attack vector, trivial weaponization, and enormous exposed population make MEDIUM an inadequate signal for any organization running internet-facing Tomcat.

HIGH CVE-2023-44487 severity and exploitation status
HIGH Affected version ranges and fix availability
MEDIUM CVE-2023-45648 real-world exploitability (topology-dependent)
LOW CVE-2023-42794 relevance (Windows-only, niche trigger)

Why this verdict

  • KEV-listed with mass exploitation: CVE-2023-44487 was added to CISA KEV on 2023-10-10 after confirmed zero-day exploitation at scales exceeding 398M rps. An EPSS of 0.99999 confirms this is not theoretical.
  • Unauthenticated remote, zero friction: The HTTP/2 Rapid Reset attack requires no credentials, no special positioning, and no exploit development. Off-the-shelf tools replicate it. Any internet-facing Tomcat with HTTP/2 enabled is in the blast radius.
  • Large exposed population: ~378,000 Tomcat instances are internet-facing per Shodan, and HTTP/2 support is a common configuration in Tomcat 9.x deployments.
  • Role multiplier: Tomcat is a *typical-role* application server in most deployments (line-of-business apps, API tiers). It is not canonically a high-value-role component (not an IdP, DC, or hypervisor). However, Tomcat frequently hosts authentication endpoints, API gateways, and customer-facing portals where availability loss has direct revenue and SLA impact. The blast radius is service-level (one application), not fleet-level. This keeps the floor at HIGH rather than CRITICAL.
  • Plugin CVSS anchored on wrong CVE: Tenable's plugin-level CVSS 5.3 reflects CVE-2023-45648 (request smuggling), not the most dangerous CVE in the bundle. The VPR of 7.3 partially corrects this, but the dashboard severity label remains MEDIUM.

Why not higher?

The impact ceiling of the dominant CVE (CVE-2023-44487) is denial of service only — no code execution, no data exfiltration, no lateral movement. Tomcat is not a canonically high-value-role component (it's not a DC, hypervisor, or IdP), so even successful exploitation doesn't yield fleet-scale compromise. Many production deployments sit behind CDNs or cloud WAFs that absorb HTTP/2 floods upstream, significantly narrowing the reachable population.

Why not lower?

A KEV-listed vulnerability with EPSS 0.99999 and confirmed mass exploitation at record-breaking scale cannot be rated MEDIUM regardless of impact type. Availability loss on customer-facing Tomcat instances has direct business impact, and the attack is unauthenticated-remote with zero friction. The request-smuggling CVE (CVE-2023-45648) adds integrity risk in reverse-proxy topologies, compounding the case against a downgrade.

05 · Compensating Control

What to do — in priority order.

  1. Deploy HTTP/2 flood protection at the edge — Enable HTTP/2 Rapid Reset mitigation on your CDN, cloud WAF, or load balancer (Cloudflare, AWS Shield, Akamai, F5 all shipped signatures in October 2023). This is the single highest-ROI control — it stops CVE-2023-44487 before traffic reaches Tomcat. Deploy within 30 days per noisgate mitigation SLA for HIGH.
  2. Disable HTTP/2 if not required — If your Tomcat connectors don't need HTTP/2, remove the <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> element from server.xml. This eliminates the attack surface for CVE-2023-44487 entirely. Deploy within 30 days.
  3. Configure connection and stream limits — Set maxConcurrentStreams to a conservative value (e.g., 100) on the HTTP/2 upgrade protocol in server.xml. This limits the amplification factor of rapid reset attacks. Also set maxConnections and maxThreads appropriately for your capacity.
  4. Strip or validate trailer headers at the reverse proxy — Configure your reverse proxy (nginx, HAProxy, Apache httpd) to strip HTTP trailer headers before forwarding to Tomcat. This mitigates CVE-2023-45648 request smuggling. Most proxies support this via configuration.
  5. Patch to Tomcat 9.0.81+ — The definitive fix. Upgrade to 9.0.81 or later (current latest 9.0.x recommended). This resolves all four CVEs. Target within the noisgate remediation SLA of 180 days for HIGH, but given KEV status, accelerate to weeks not months.
What doesn't work
  • Network-level rate limiting (IP-based): HTTP/2 Rapid Reset can be devastating from a single IP because the protocol multiplexes thousands of streams over one TCP connection. IP-based rate limiting won't help — you need HTTP/2-aware stream-level rate limiting.
  • Traditional WAF signature rules: Generic WAF rules don't inspect HTTP/2 frame-level behavior. You need a WAF that specifically understands HTTP/2 stream resets. Check with your vendor for explicit CVE-2023-44487 mitigation.
  • Application-layer firewalls without HTTP/2 decoding: If your WAF or IDS only inspects HTTP/1.1, it will not see the rapid reset attack happening on an HTTP/2 connection.
06 · Verification

Crowdsourced verification payload.

Run this on each Tomcat host as a user with read access to the Tomcat installation directory. Example: bash check_tomcat_182809.sh /opt/tomcat or bash check_tomcat_182809.sh /usr/share/tomcat9. No root required — only needs to read lib/catalina.jar or RELEASE-NOTES.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_tomcat_182809.sh — Checks if Apache Tomcat is vulnerable to
# CVE-2023-44487, CVE-2023-45648, CVE-2023-42795, CVE-2023-42794
# Fixed in: 9.0.81 (9.x branch)
# Usage: bash check_tomcat_182809.sh /path/to/tomcat
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

CATALINA_HOME="${1:-}"
if [[ -z "$CATALINA_HOME" ]]; then
  echo "Usage: $0 /path/to/tomcat"
  exit 2
fi

# Try to get version from catalina.jar manifest
VERSION=""
JAR="$CATALINA_HOME/lib/catalina.jar"
if [[ -f "$JAR" ]]; then
  VERSION=$(unzip -p "$JAR" META-INF/MANIFEST.MF 2>/dev/null | grep 'Implementation-Version' | head -1 | cut -d' ' -f2 | tr -d '\r')
fi

# Fallback: RELEASE-NOTES
if [[ -z "$VERSION" && -f "$CATALINA_HOME/RELEASE-NOTES" ]]; then
  VERSION=$(grep -oP 'Apache Tomcat Version \K[0-9]+\.[0-9]+\.[0-9]+' "$CATALINA_HOME/RELEASE-NOTES" | head -1)
fi

# Fallback: version.sh
if [[ -z "$VERSION" && -x "$CATALINA_HOME/bin/version.sh" ]]; then
  VERSION=$("$CATALINA_HOME/bin/version.sh" 2>/dev/null | grep 'Server number' | grep -oP '[0-9]+\.[0-9]+\.[0-9]+')
fi

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

echo "Detected Tomcat version: $VERSION"

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

# Only checking 9.x branch (plugin scope)
if [[ "$MAJOR" -ne 9 ]]; then
  echo "UNKNOWN — this check targets Tomcat 9.x, detected $MAJOR.x"
  exit 2
fi

# Vulnerable: 9.0.0 through 9.0.80
# Fixed: 9.0.81+
if [[ "$MINOR" -eq 0 && "$PATCH" -lt 81 ]]; then
  echo "VULNERABLE — Tomcat $VERSION is affected (fixed in 9.0.81)"
  exit 1
else
  echo "PATCHED — Tomcat $VERSION is >= 9.0.81"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This plugin is under-rated. Tenable labels it MEDIUM, but it contains a KEV-listed, mass-exploited DoS vulnerability (CVE-2023-44487) with an EPSS of 0.99999. Because of the KEV listing and confirmed active exploitation, override the noisgate mitigation SLA and apply compensating controls immediately — deploy HTTP/2 flood protection at your edge or disable HTTP/2 on Tomcat connectors within days, not weeks. For the definitive fix, upgrade all Tomcat 9.x instances to 9.0.81 or later within the noisgate remediation SLA of 180 days for HIGH, though given the KEV status you should target weeks. If you have internet-facing Tomcat with HTTP/2 enabled and no upstream CDN/WAF protection, treat this as an emergency. Internal-only instances behind HTTP/2-aware load balancers are lower urgency but should still be patched within the 180-day window.

Sources

  1. Tenable Plugin 182809
  2. CISA Advisory — HTTP/2 Rapid Reset (CVE-2023-44487)
  3. Apache Tomcat 9 Security Advisories
  4. NVD — CVE-2023-44487
  5. NVD — CVE-2023-42795
  6. NVD — CVE-2023-42794
  7. Qualys — HTTP/2 Rapid Reset Analysis
  8. Rapid7 — CVE-2023-44487
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.