← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
tenable:83764 · CWE-284 · Disclosed 2015-05-14

Apache Tomcat 7

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a bad lock on the staff-only door, not an open front gate

Plugin tenable:83764 maps to CVE-2014-7810, an Apache Tomcat Expression Language flaw fixed for the 7.x branch in 7.0.59 because 7.0.58 contained the fix but was never released. The bug lets a malicious web application abuse EL evaluation inside a privileged code path and bypass Tomcat's Java SecurityManager protections. For the vulnerable upstream line, Apache lists 7.0.0 through 7.0.57 as affected; the Nessus plugin flags < 7.0.59 for released-build hygiene.

paragraph 2: Vendor severity is technically defensible in a vacuum but too generous for most enterprise fleets. This is not an unauthenticated remote exploit against a normal Tomcat deployment; it generally matters only when you run untrusted third-party apps and enable SecurityManager isolation, which is a narrow shared-hosting or multi-tenant pattern. Tenable also says the plugin is version-only and did not verify exploitability on-host, which pushes this down hard in real patch queues.

"This is a version-only hit for a niche post-deployment bypass, not a front-door internet RCE"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Gain app-deployment foothold with Tomcat Manager or CI/CD tooling

The attacker first needs a way to place or update a malicious web application on the Tomcat instance. In practice that means valid deploy rights through Tomcat Manager, compromised CI/CD credentials, a supply-chain hit on a WAR, or another prior compromise that already lets them publish application code. This is not the vulnerability doing initial access; it's the attacker arriving with the keys to the app shelf already in hand.
Conditions required:
  • Ability to deploy or modify a web application on the target Tomcat
  • Tomcat accepts code/content from a less-trusted tenant, partner, or already-compromised pipeline
Where this breaks in practice:
  • Most enterprises deploy only first-party apps to Tomcat
  • Deployment paths are usually authenticated and restricted to admins or build systems
  • This prerequisite already implies a serious prior compromise or trusted-tenant model
Detection/coverage: Nessus plugin 83764 does not test this step; it only checks the Tomcat version.
STEP 02

Land on a host running Java SecurityManager

The bypass only matters if Tomcat is using the Java SecurityManager to sandbox webapps. Without that control boundary, there is nothing meaningful for CVE-2014-7810 to bypass. Apache's own advisory explicitly says the issue only affects installations that run web applications from untrusted sources.
Conditions required:
  • Tomcat launched with -security or equivalent SecurityManager enablement
  • The deployment model relies on SecurityManager isolation between apps/tenants
Where this breaks in practice:
  • SecurityManager-backed isolation was never the dominant enterprise Tomcat pattern
  • Many orgs run trusted in-house apps and never enable this mode
  • Modern Java ecosystems have moved away from relying on SecurityManager
Detection/coverage: Runtime confirmation requires process/config review; network scanners generally cannot verify SecurityManager use remotely.
STEP 03

Trigger privileged EL evaluation with a malicious app

Using a crafted application path, the attacker causes Expression Language evaluation to run with incorrect privileges, bypassing the intended sandbox boundary. The practical impact is privilege expansion inside the Tomcat hosting model, such as reading or writing data belonging to other webapps or disrupting co-hosted applications.
Conditions required:
  • A malicious app is deployed and executed
  • The app can reach the vulnerable EL evaluation path
Where this breaks in practice:
  • Impact is bounded by the Tomcat process and hosting model, not a universal host takeover primitive
  • This is mainly a cross-app isolation failure in shared or untrusted hosting setups
Detection/coverage: No reliable unauthenticated wire signature. You need app-deployment logging, Manager audit trails, and host telemetry around unexpected webapp changes.
STEP 04

Pivot to cross-app impact, not instant internet-scale compromise

If all earlier conditions are satisfied, the attacker can violate the sandbox and tamper with or access resources beyond the malicious app's intended boundary. That matters in multi-tenant or delegated-hosting environments, but for a normal enterprise Tomcat running one or a few trusted internal apps, the blast radius is usually narrow and the prerequisite chain is already worse than the CVE itself.
Conditions required:
  • Multiple apps or tenant boundaries exist on the same Tomcat instance
  • Those boundaries materially depend on SecurityManager enforcement
Where this breaks in practice:
  • Single-purpose Tomcat nodes have little additional isolation to bypass
  • If the attacker can already ship code to the server, your bigger problem is the deploy path compromise
Detection/coverage: Look for anomalous WAR/JSP deployments, unexpected Manager actions, and application files changing outside normal release windows.
03 · Intelligence Metadata

The supporting signals.

Primary issueCVE-2014-7810 — Apache Tomcat EL SecurityManager bypass via privileged expression evaluation
In-the-wild statusNo current KEV listing and I found no authoritative active-exploitation reporting tied to this CVE; Tenable also marks no known exploits available
Proof-of-concept availabilityNo mainstream public PoC surfaced in quick GitHub/Exploit-DB-style discovery, and Tenable explicitly says Exploit Ease: No known exploits are available
EPSSPublic mirrors currently show a non-zero but noisy EPSS signal for this old CVE; treat that as weak evidence because the real gating factor is the deployment model, not internet reachability
KEV statusNot listed in CISA's Known Exploited Vulnerabilities catalog as of the catalog source used here
CVSS interpretationVendor/NVD-style base scoring says network, low complexity, no auth, but that framing hides the decisive real-world prerequisite: the attacker typically needs a way to deploy a malicious webapp first
Affected versionsApache Tomcat 7.0.0–7.0.57 are the upstream affected 7.x builds; Nessus uses < 7.0.59 because 7.0.58 was not released
Fixed versionsUpstream fix is delivered in released build 7.0.59 for Tomcat 7.x. Distro backports exist, including Debian tomcat7 7.0.28-4+deb7u3 / 7.0.56-3+deb8u1 and Ubuntu libtomcat7-java 7.0.56-2ubuntu0.1 for affected packages
Scanning / exposure realityThis flaw is not remotely fingerprintable by behavior; Tenable's plugin is version-only. Internet-wide product counts for Tomcat are therefore a poor proxy for exploitability of this specific CVE
Disclosure / creditApache publicly disclosed it on 2015-05-14 and credits the Apache Tomcat security team
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (2.1/10)

The decisive downgrading factor is that this bug usually requires an attacker to already have application deployment capability plus a Tomcat setup that actually uses SecurityManager for sandboxing. That combination is rare in enterprise fleets and turns the CVE into a post-deployment isolation failure, not a broadly exploitable front-door service bug.

HIGH Version-to-CVE mapping for `tenable:83764` to **CVE-2014-7810**
HIGH Assessment that most enterprise Tomcat deployments are not meaningfully exposed unless they host untrusted apps under `SecurityManager`
MEDIUM Public exploitability signal beyond vendor statements, because old-CVE telemetry mirrors disagree

Why this verdict

  • Requires a prior foothold: the attacker typically needs a way to deploy or alter a webapp first, which implies compromised admin, CI/CD, or tenant access before this CVE matters
  • Narrow exposure pattern: impact depends on Tomcat actually using SecurityManager sandboxing for less-trusted apps, which is a minority enterprise pattern
  • Version-only detection: Nessus did not validate exploitability on-host; it flagged a version range, so population-level noise is expected
  • No KEV / no solid exploitation evidence: no CISA KEV listing and no strong public proof of broad exploitation keep this out of urgent patch lanes
  • Blast radius is contextual: the bug is mainly about bypassing app isolation on the same Tomcat instance, not clean unauthenticated server-wide code execution

Why not higher?

Because the headline CVSS framing masks a major prerequisite chain. If an attacker must already be able to publish a malicious app and the server must also rely on SecurityManager isolation, this is not a fleet-wide internet-exposed emergency for a normal enterprise. The reachable population is much smaller than the version count suggests.

Why not lower?

I am not putting this at IGNORE because some organizations really do run shared or delegated Tomcat estates, legacy hosting models, or third-party WAR deployments where SecurityManager was part of the safety boundary. In those environments this is a real isolation failure, just not one that deserves front-of-line treatment across a general enterprise fleet.

05 · Compensating Control

What to do — in priority order.

  1. Audit who can deploy WARs — Confirm whether any tenant, partner, developer, or automation path can deploy or modify applications on affected Tomcat nodes. If deploy rights are tightly controlled, the practical risk collapses; for a LOW verdict there is no SLA (treat as backlog hygiene), but this review is the fastest way to prove the finding is low-noise.
  2. Check whether SecurityManager is actually enabled — Review service definitions, startup scripts, and running process arguments for -security or -Djava.security.manager. If it is not enabled, the CVE's core bypass condition is absent; for a LOW verdict there is no SLA (treat as backlog hygiene).
  3. Lock down Tomcat Manager and CI/CD deploy paths — Restrict Manager access, rotate old deployment credentials, and validate that only approved pipelines can publish apps. This matters more than the CVE itself because the exploit path starts with a code-deployment foothold; for a LOW verdict there is no SLA (treat as backlog hygiene).
  4. Prefer distro backports where applicable — If the host uses vendor-packaged tomcat7 rather than upstream tarballs, verify the distro-fixed package version instead of chasing upstream 7.0.59 literally. For a LOW verdict there is no SLA (treat as backlog hygiene), but this avoids false-positive churn.
What doesn't work
  • A WAF does not solve this well; the vulnerability is about privileged EL evaluation inside a maliciously deployed app, not a clean front-door HTTP payload you can reliably signature.
  • Hiding the Tomcat version banner reduces scanner visibility but does nothing about the underlying deploy-path and sandbox conditions.
  • Network segmentation alone is weak compensation if the attacker already has Manager access or a compromised build pipeline, which is the more realistic prerequisite.
06 · Verification

Crowdsourced verification payload.

Run this on the target Tomcat host as a user that can read the Tomcat install tree and inspect running processes; root is best, but read access plus ps visibility is usually enough. Invoke it as bash verify_cve_2014_7810.sh /opt/tomcat and it will output VULNERABLE, PATCHED, or UNKNOWN based on Tomcat 7.x version and whether SecurityManager appears enabled.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# verify_cve_2014_7810.sh
# Checks Apache Tomcat 7.x for CVE-2014-7810 exposure conditions.
# Exit codes:
#   0 = PATCHED / not affected
#   1 = VULNERABLE
#   2 = UNKNOWN / insufficient evidence

set -u

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

if [[ ! -d "$TOMCAT_HOME" ]]; then
  echo "UNKNOWN: path not found: $TOMCAT_HOME"
  exit 2
fi

version=""

# Method 1: bin/version.sh if present
if [[ -x "$TOMCAT_HOME/bin/version.sh" ]]; then
  version=$("$TOMCAT_HOME/bin/version.sh" 2>/dev/null | awk -F': ' '/Server number/ {print $2; exit}')
fi

# Method 2: RELEASE-NOTES fallback
if [[ -z "$version" && -f "$TOMCAT_HOME/RELEASE-NOTES" ]]; then
  version=$(grep -Eo 'Apache Tomcat Version [0-9]+\.[0-9]+\.[0-9]+' "$TOMCAT_HOME/RELEASE-NOTES" 2>/dev/null | head -n1 | awk '{print $4}')
fi

# Method 3: catalina.jar + ServerInfo fallback (requires java)
if [[ -z "$version" && -f "$TOMCAT_HOME/lib/catalina.jar" && -n "$(command -v java 2>/dev/null)" ]]; then
  version=$(java -cp "$TOMCAT_HOME/lib/catalina.jar" org.apache.catalina.util.ServerInfo 2>/dev/null | awk -F'/| ' '/Server version/ {for (i=1;i<=NF;i++) if ($i ~ /^[0-9]+\.[0-9]+\.[0-9]+$/) {print $i; exit}}')
fi

if [[ -z "$version" ]]; then
  echo "UNKNOWN: could not determine Tomcat version"
  exit 2
fi

major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)
patch=$(echo "$version" | cut -d. -f3)

if [[ "$major" != "7" ]]; then
  echo "PATCHED: Tomcat version $version is not in the Tomcat 7.x line checked by this script"
  exit 0
fi

# Only Apache Tomcat 7.0.0 through 7.0.57 are vulnerable upstream.
# Nessus flags < 7.0.59 because 7.0.58 was not released.
if [[ "$minor" -ne 0 ]]; then
  echo "UNKNOWN: unexpected Tomcat 7.x version format: $version"
  exit 2
fi

if (( patch >= 59 )); then
  echo "PATCHED: Tomcat $version is at or above 7.0.59"
  exit 0
fi

if (( patch == 58 )); then
  echo "UNKNOWN: 7.0.58 was not a released upstream build; validate packaging/backport provenance"
  exit 2
fi

# For 7.0.0 - 7.0.57, check whether SecurityManager appears enabled.
sm_enabled=0

# Process inspection
if ps -ef 2>/dev/null | grep -v grep | grep -E "[o]rg\.apache\.catalina\.startup\.Bootstrap|[t]omcat" | grep -Eq '(^| )-security( |$)|-Djava\.security\.manager'; then
  sm_enabled=1
fi

# Config/script inspection
if grep -RqsE '(^|[[:space:]])-security([[:space:]]|$)|-Djava\.security\.manager' \
  "$TOMCAT_HOME/bin" "$TOMCAT_HOME/conf" 2>/dev/null; then
  sm_enabled=1
fi

if (( sm_enabled == 1 )); then
  echo "VULNERABLE: Tomcat $version is in the affected range and SecurityManager appears enabled"
  exit 1
fi

echo "UNKNOWN: Tomcat $version is in the affected version range, but SecurityManager was not confirmed; review service wrappers, systemd units, and startup environment manually"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, do not let this plugin jump the queue just because it says Tomcat and the vendor score says Medium. First, validate whether any affected hosts actually accept untrusted app deployments and whether SecurityManager is enabled; if not, document the rationale and push this into normal lifecycle cleanup. For a LOW verdict there is no noisgate mitigation SLA and noisgate remediation SLA is no SLA (treat as backlog hygiene), so plan remediation during routine Tomcat modernization rather than as an urgent patch event. If you *do* find a shared-hosting or delegated-WAR deployment pattern, reclassify those specific hosts upward and patch them on an exception basis.

Sources

  1. Tenable Nessus Plugin 83764
  2. Apache Tomcat 7.x security page
  3. NVD CVE-2014-7810
  4. Bugtraq disclosure for CVE-2014-7810
  5. CISA Known Exploited Vulnerabilities catalog
  6. Debian Security Tracker CVE-2014-7810
  7. Ubuntu CVE page
  8. OpenCVE entry for CVE-2014-7810
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.