← Back to Feed CACHED · 2026-09-21 08:28:29 · CACHE_KEY tenable:323714
tenable:323714 · CWE-863 · Disclosed 2026-06-23

Apache Tomcat 9.x Multiple Low/Moderate Flaws — Default Servlet Constraint Bypass

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

A bouncer who checks your face but not your wristband color, installed at a door almost nobody uses

Tenable plugin 323714 bundles six CVEs disclosed 2026-06-23, all fixed in Apache Tomcat 9.0.119. The headliner driving the Critical/9.1 rating is CVE-2026-53434 — invalid CRL configurations silently ignored on the FFM (Foreign Function & Memory) connector, theoretically letting revoked client certificates through. The remaining five are: CVE-2026-55956 (Moderate, CVSS 6.5) — method-scoped security constraints on the default servlet are collapsed, bypassing per-HTTP-method authorization; CVE-2026-55955 (Low) — EncryptInterceptor replay in cluster mode; CVE-2026-53404 (Low) — RewriteValve ornext logic flaw; CVE-2026-55276 (Low) — effective web.xml logging omits special roles (no runtime impact); and CVE-2026-50229 (Low) — reflected XSS in the bundled examples webapp. Affected: Tomcat 9.0.0.M1 through 9.0.118 (and parallel ranges on 10.1.x, 11.0.x; 8.5.x and 7.0.x are EOL with no fix).

The Tenable plugin inherits the CVSS 9.1 from NVD's scoring of CVE-2026-53434, but Apache themselves rate every CVE in this bundle Low except one Moderate (CVE-2026-55956 at 6.5). Tenable's own VPR is 4.3 (Medium), which much better reflects reality. The 9.1 score assumes an attacker can simply walk up to a network-facing FFM connector using mutual TLS with CRL checking — but the FFM connector requires Java 22+ and the Foreign Function API, which is experimental and virtually nonexistent in production Tomcat 9 deployments. The actually-reachable risk is CVE-2026-55956: if you rely on per-method constraints on the default servlet (uncommon), an attacker bypasses them. That is a real but narrow authorization flaw, not a Critical-class vulnerability.

"Tenable's CVSS 9.1 is inflated by a near-zero-adoption FFM connector bug. Real risk is a moderate auth constraint bypass."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Identify an internet-facing Tomcat 9 instance

The attacker scans for Tomcat 9 instances using Shodan, Censys, or FOFA. Approximately 100,000 internet-facing Tomcat instances exist globally. The attacker needs a target running 9.0.0.M1–9.0.118.
Conditions required:
  • Target runs Apache Tomcat 9.0.0.M1–9.0.118
  • Instance is network-reachable
Where this breaks in practice:
  • Many production Tomcats sit behind reverse proxies or load balancers that mask the version
  • Default error pages and Server headers are frequently stripped in hardened deployments
Detection/coverage: Nessus plugin 323714, Qualys QID 87663 or equivalent, Shodan product:Tomcat queries
STEP 02

Determine which CVE is exploitable on the target

The attacker must fingerprint the target's configuration: Is the examples webapp deployed? Is the default servlet constrained with method restrictions? Is clustering enabled with EncryptInterceptor? Is the FFM connector active with mutual TLS? Each CVE has a different prerequisite.
Conditions required:
  • Knowledge of target's Tomcat configuration
  • Access to probe configuration-dependent behavior
Where this breaks in practice:
  • FFM connector requires Java 22+ — nearly zero Tomcat 9 production deployments use this
  • Examples webapp removed in all CIS/STIG-hardened installs
  • Clustering with EncryptInterceptor requires attacker on the cluster network segment
  • Method-based default servlet constraints are an uncommon configuration pattern
Detection/coverage: Configuration audit via Nessus compliance checks or manual review of server.xml and web.xml
STEP 03

Exploit CVE-2026-55956 — bypass method constraints on default servlet

If the target uses security constraints with method restrictions on the default servlet path, the attacker sends HTTP requests using a method that should be denied (e.g., PUT or DELETE to a static resource). Tomcat ignores the method filter and applies the constraint universally — or not at all depending on the collapsed logic — allowing unauthorized access.
Conditions required:
  • Target has security constraints on the default servlet with method-level restrictions
  • Default servlet is actively serving static resources that are worth targeting
Where this breaks in practice:
  • Most applications use their own servlets or frameworks (Spring, Struts) rather than the Tomcat default servlet for access-controlled content
  • The impact is limited to static file access or modification — no code execution
Detection/coverage: WAF rules monitoring for unusual HTTP methods (PUT/DELETE) against static resource paths
STEP 04

Exploit CVE-2026-53434 — bypass CRL on FFM connector (theoretical)

If the target uses the FFM connector with mutual TLS and CRL-based revocation, the attacker presents a revoked client certificate. Because invalid CRL configurations are silently ignored, the revoked certificate is accepted and the attacker authenticates to the protected resource.
Conditions required:
  • Target uses FFM connector (requires Java 22+ Foreign Function API)
  • Mutual TLS with CRL checking is configured
  • The CRL configuration is invalid (misconfigured path, malformed file, etc.)
  • Attacker possesses a revoked but otherwise valid client certificate
Where this breaks in practice:
  • FFM connector adoption in Tomcat 9 is effectively zero — it targets Java 22+ which most Tomcat 9 shops do not run
  • Requires a *specific misconfiguration* (invalid CRL) combined with mTLS — multiple simultaneous conditions
  • If CRL is correctly configured, the bug does not trigger
Detection/coverage: Certificate transparency logs, mutual TLS audit logging, OpenSSL s_client verification tests
STEP 05

Post-exploitation — limited impact

Successful exploitation of CVE-2026-55956 yields unauthorized access to static resources served by the default servlet, or bypass of method restrictions. CVE-2026-53434 yields authenticated session with a revoked cert. Neither CVE provides code execution, privilege escalation, or lateral movement capability. The attacker is confined to the application tier.
Conditions required:
  • Successful exploitation of one of the preceding steps
Where this breaks in practice:
  • No path to RCE, SYSTEM/root, or domain compromise
  • Application-layer access control (Spring Security, container-managed auth) may independently block access
  • Network segmentation limits lateral movement from the Tomcat tier
Detection/coverage: Application access logs, anomalous session creation alerts, SIEM correlation for unexpected authenticated sessions
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo evidence. None of the six CVEs are listed in CISA KEV. No campaigns, ransomware, or APT activity attributed.
Proof-of-conceptNone public. No PoC repos found on GitHub for any of the six CVEs. No Nuclei templates, Metasploit modules, or ExploitDB entries.
EPSS scoresCVE-2026-55956: 0.19% (8th percentile). CVE-2026-53434: 0.17% (≈7th percentile). All six CVEs below 1% — exploitation probability is minimal.
CISA KEV statusNot listed. None of the six CVEs appear in the KEV catalog as of 2026-09-21.
CVSS vectorsCVE-2026-55956: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N6.5. CVE-2026-53434: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N9.1 (NVD; Apache rates Low).
Vendor severityApache Foundation rates 5 of 6 as Low, 1 as Moderate (CVE-2026-55956). Tenable VPR: 4.3 (Medium). The plugin-level CVSS 9.1 is inherited from NVD's inflated scoring of CVE-2026-53434.
Affected versionsTomcat 9.0.0.M1–9.0.118 (all six CVEs). CVE-2026-53434 narrower: 9.0.83–9.0.118. CVE-2026-55955 narrower: 9.0.13–9.0.118. EOL branches 8.5.x and 7.0.x also affected, no fix.
Fixed versions9.0.119 (Tomcat 9). Also 10.1.56 (Tomcat 10.1) and 11.0.23 (Tomcat 11). Red Hat, SUSE, Amazon Linux backports pending or in progress.
Internet exposureShodan reports ~100,000 internet-facing Tomcat instances globally. FFM connector subset: effectively zero observable. Examples webapp subset: small but nonzero.
Disclosure date2026-06-23 (all six CVEs disclosed simultaneously). Fix released same day in 9.0.119.
04 · The Call

Final Verdict
= UNCHANGED to MEDIUM (5.5/10)

Why this verdict

  • Inflated CVSS driver: The plugin's 9.1 Critical rating is inherited from CVE-2026-53434 (FFM CRL bypass). The FFM connector requires Java 22+ Foreign Function API — a feature with near-zero adoption in Tomcat 9 production. Apache themselves rate this CVE Low. Removing this inflated score leaves CVE-2026-55956 at 6.5 as the true ceiling.
  • Narrow prerequisite chains: CVE-2026-55956 requires method-level security constraints specifically on the default servlet — an uncommon pattern. Most Java apps use framework-level auth (Spring Security) or custom servlets, not the default servlet for access-controlled content. CVE-2026-55955 requires cluster-mode EncryptInterceptor *and* attacker presence on the cluster network. CVE-2026-50229 requires the examples webapp, which CIS/STIG guidance removes.
  • No exploitation signal: Zero CISA KEV entries, zero known campaigns, EPSS < 0.2% for all CVEs, no public PoC. Tenable's own VPR (4.3/Medium) already reflects this low exploitability reality.
  • No code execution path: None of the six CVEs enable RCE, privilege escalation, or lateral movement. The worst realistic outcome is unauthorized read/write of static files served by the default servlet (CVE-2026-55956) or session with a revoked client cert (CVE-2026-53434, theoretical only).
  • Role multiplier: Tomcat occupies the *application tier* role — line-of-business Java app server. It is not a domain controller, hypervisor, identity provider, PAM, backup system, or network edge appliance. Even in production web-facing deployments, these specific CVEs do not enable domain takeover, fleet compromise, or supply-chain pivot. The blast radius is confined to the individual application's static resources or mTLS session scope. No high-value-role floor override applies.

Why not higher?

Upgrading to HIGH would require either active exploitation evidence, a weaponized PoC, or a realistic path to fleet-scale/domain-scale impact. None exist here. The CVEs are configuration-dependent with narrow prerequisite chains, EPSS is bottom-decile, and the worst outcome is application-tier authorization bypass — not RCE or privilege escalation. The CVSS 9.1 is an artifact of NVD scoring a near-zero-adoption connector bug without accounting for real-world deployment prevalence.

Why not lower?

CVE-2026-55956 is a real authorization bypass that is network-reachable without authentication (AV:N/AC:L/PR:N). If an organization *does* rely on method-based default servlet constraints for access control — even if uncommon — the bypass is straightforward. Tomcat's massive installed base (~100K internet-facing instances) means even a small percentage of vulnerable configurations represents thousands of hosts. Dismissing this as LOW would underweight the no-auth network vector.

05 · Compensating Control

What to do — in priority order.

  1. Remove the examples webapp immediately — Delete $CATALINA_HOME/webapps/examples/ to eliminate CVE-2026-50229 (XSS). This is standard CIS Benchmark guidance and should already be done. Takes <1 minute per host, scriptable fleet-wide. No SLA pressure — this is hygiene.
  2. Audit default servlet security constraints — Review all web.xml files for <security-constraint> elements targeting the default servlet path. If method-based restrictions exist (e.g., <http-method>PUT</http-method>), understand that these are not enforced as written until 9.0.119. Consider moving access control to a WAF or application framework (Spring Security) as the primary enforcement point. Per the noisgate MEDIUM remediation SLA, patch to 9.0.119 within 365 days.
  3. Verify FFM connector is not in use — Check server.xml for any <Connector> using the FFM protocol handler (org.apache.coyote.http11.Http11Nio2Protocol with FFM bindings or tomcat-coyote-ffm dependency). If FFM is not configured — which is the case for >99% of Tomcat 9 deployments — CVE-2026-53434 does not apply. Document the finding.
  4. Validate cluster EncryptInterceptor configuration — If Tomcat clustering is enabled with <Interceptor className="org.apache.catalina.tribes.group.interceptors.EncryptInterceptor"/>, ensure the cluster network is isolated to a dedicated VLAN or network segment. CVE-2026-55955 requires attacker presence on the cluster network to replay encrypted messages.
  5. Upgrade to Tomcat 9.0.119+ within the remediation window — Apply the vendor patch as your remediation action. Per the noisgate MEDIUM remediation SLA, complete the upgrade within 365 days. No mitigation SLA applies — go straight to the remediation window. Prioritize instances with default servlet constraints or cluster configurations.
What doesn't work
  • WAF virtual patching for CVE-2026-55956 — The bug is in Tomcat's internal constraint matching logic, not in the HTTP request content. A WAF cannot distinguish between a legitimate PUT and one exploiting the collapsed method filter because the request is syntactically identical.
  • Upgrading Java to fix CVE-2026-53434 — The bug is in Tomcat's CRL handling code, not in the JDK. Upgrading Java does not fix the FFM connector's failure to abort on invalid CRLs; only Tomcat 9.0.119 fixes it.
  • TLS termination at the load balancer — While this prevents direct client certificate presentation to Tomcat, it does not address CVE-2026-55956 (default servlet bypass) or CVE-2026-53404 (RewriteValve logic), which operate at the HTTP/application layer behind any TLS terminator.
06 · Verification

Crowdsourced verification payload.

Run this script on each Tomcat host as any user with read access to the Tomcat installation directory. Invoke with: bash check_tomcat_323714.sh /opt/tomcat (pass CATALINA_HOME as the first argument). No root required.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_tomcat_323714.sh — Tenable plugin 323714 verification
# Checks Apache Tomcat 9.x version against the fix threshold (9.0.119)
# Usage: bash check_tomcat_323714.sh /path/to/catalina_home
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

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

if [[ -z "$CATALINA_HOME" ]]; then
  echo "UNKNOWN — CATALINA_HOME not provided. Usage: $0 /path/to/tomcat"
  exit 2
fi

# Try version.sh first
if [[ -x "$CATALINA_HOME/bin/version.sh" ]]; then
  VERSION_OUTPUT=$("$CATALINA_HOME/bin/version.sh" 2>/dev/null || true)
  VERSION=$(echo "$VERSION_OUTPUT" | grep -oP 'Server number:\s*\K[0-9]+\.[0-9]+\.[0-9]+' | head -1)
fi

# Fallback: read from catalina.jar MANIFEST
if [[ -z "${VERSION:-}" && -f "$CATALINA_HOME/lib/catalina.jar" ]]; then
  VERSION=$(unzip -p "$CATALINA_HOME/lib/catalina.jar" META-INF/MANIFEST.MF 2>/dev/null \
    | grep -oP 'Implementation-Version:\s*\K[0-9]+\.[0-9]+\.[0-9]+' | head -1)
fi

if [[ -z "${VERSION:-}" ]]; then
  echo "UNKNOWN — Could not determine Tomcat version from $CATALINA_HOME"
  exit 2
fi

echo "Detected Tomcat version: $VERSION"

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

# Only applies to Tomcat 9.x
if [[ "$MAJOR" -ne 9 ]]; then
  echo "UNKNOWN — This check targets Tomcat 9.x only (found $MAJOR.x)"
  exit 2
fi

# Fixed in 9.0.119
if [[ "$MINOR" -eq 0 && "$PATCH" -ge 119 ]]; then
  echo "PATCHED — Tomcat $VERSION >= 9.0.119 (plugin 323714 does not apply)"
  exit 0
elif [[ "$MINOR" -gt 0 ]]; then
  echo "PATCHED — Tomcat $VERSION > 9.0.x (plugin 323714 does not apply)"
  exit 0
else
  echo "VULNERABLE — Tomcat $VERSION < 9.0.119 (affected by plugin 323714)"
  # Additional context checks
  if [[ -d "$CATALINA_HOME/webapps/examples" ]]; then
    echo "  WARNING: examples webapp present (CVE-2026-50229 XSS risk)"
  fi
  if grep -qr 'EncryptInterceptor' "$CATALINA_HOME/conf/" 2>/dev/null; then
    echo "  WARNING: EncryptInterceptor configured (CVE-2026-55955 replay risk)"
  fi
  if grep -qr 'tomcat-coyote-ffm\|org.apache.tomcat.util.net.openssl.panama' "$CATALINA_HOME/conf/" "$CATALINA_HOME/lib/" 2>/dev/null; then
    echo "  WARNING: FFM connector artifacts detected (CVE-2026-53434 CRL risk)"
  fi
  exit 1
fi
07 · Sources

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.