basicsecurity.net
Proof, not just disclosure.
Threats / Apache / CVE-2017-9805
CVE-2017-9805 · EUVD no mirror located · GCVE no mirror located Verified 2026-06-22

Apache Struts vulnerability

Apache Struts REST Plugin deserializes untrusted XML without type filtering, enabling remote code execution through malicious payloads.

Verdict

Today item — known-exploited.

An unauthenticated attacker can execute arbitrary code on systems running vulnerable Struts REST Plugin versions by sending crafted XML to endpoints that use XStreamHandler for deserialization.

CISA KEV Yes · 2021-11-033EPSS 0.99461 (verify live)4Exploit Weaponized · public PoC5
01

Is it exploitable?

— the evidence, ranked above the score
Exploit available
Fully weaponized — public exploit code is cataloged for this vulnerability.We link the existence of the exploit; we do not host or redistribute payloads.
Reported exploitation
627 independent public reports of in-the-wild exploitation are cataloged.Distinct reporting sources (vendor, incident response, government); open them for the underlying claims.
Exploited in the wild
Listed in the CISA Known Exploited Vulnerabilities catalog (added 2021-11-03).
CISA KEV ↗Confirmed
Probability (EPSS)
EPSS 0.99461 — modeled likelihood of exploitation activity.EPSS is a daily-changing model output — open the source for today's value.
Severity / affected
Affected: Apache, Struts. Confirm exact fixed builds in the vendor advisory.
NVD ↗Reported
Weakness (CWE)
Mapped to CWE-502 Deserialization of Untrusted Data — weakness family: Injection.CWE assignment from the public NVD record; the weakness class drives how the flaw is exploited.
NVD ↗Reported
02

Who’s exploiting it?

— attribution turns risk into urgency
Attribution not established

No confirmed (advisory-backed) threat-actor attribution is established for this record. Absence of a named actor is not absence of compromise — see Coverage & confidence.

03

Why it matters

— the attack path, told twice: adversary, then board
1

Front door — unauthenticated access narrative 1

Attacker
I craft a malicious XML payload exploiting XStream deserialization gadgets.
Business
Attacker gains ability to execute arbitrary code with application privileges.
2

Keys to the kingdom — privilege/identity takeover narrative 2

Attacker
I send the payload to a REST endpoint that uses XStreamHandler without authentication.
Business
Vulnerable application processes the request and deserializes hostile objects.
3

Lateral reach — past segmentation narrative 3

Attacker
I trigger remote code execution through unsafe object instantiation during deserialization.
Business
Attacker achieves full system compromise, data theft, or lateral movement.
04

What to do

— defensible action
  • Remediate per the vendor advisory — confirm the fixed build for your version and verify exposure.1
Say it to the boardA vulnerability with this evidence profile is a defensible budget line, not a backlog ticket — fund the change against the proof above.
05

Coverage & confidence

— what we know, and what we don’t

Established (cited)

  • KEV listing (CISA)
  • EPSS probability (FIRST)
  • Weaponized exploit available (VulnCheck)
  • 627 reported-exploitation source(s)
  • CWE weakness mapping (NVD)
  • Public exploit availability
  • Catalogued by apache (CNA)
  • Coverage gaps — stated, not hidden

  • No EUVD / GCVE mirror in feed — single-authority dependency for the identifier.
  • EPSS & exposure are time-varying; verify live at the source.
  • Threat-actor attribution not established from feed data — absence of a name is not absence of compromise.
  • No finder/reporter credit recorded in the public CVE entry — the work behind this find is unattributed.
  • Disclosure & credit2
    Catalogued by apacheCNA
    Credited with finding itNo finder named in the public CVE record — the work behind this find is unattributed.