CVE-2017-9804

In Apache Struts 2.3.7 through 2.3.33 and 2.5 through 2.5.12, if an application allows entering a URL in a form field and built-in URLValidator is used, it is possible to prepare a special URL which will be used to overload server process when performing validation of the URL. NOTE: this vulnerability exists because of an incomplete fix for S2-047 / CVE-2017-7672.

Published: 2017-09-20 Last update: 2026-05-13 Assigner: [email protected] Source: [email protected]

Conclusion & alert: CVE-2017-9804 is rated Moderate Risk (56.2/100): CVSS High severity, with medium exploitation likelihood (EPSS 4.62%). Mandatory action: Review affected assets and schedule remediation.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2017-9804

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2026-03-17 12.07% 4.62% -7.46%
2 2026-03-13 22.45% 12.07% -10.37%
3 2026-03-04 22.45%

Full EPSS history (17 records total)

Common vulnerability scoring system (CVSS) metrics for CVE-2017-9804

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
7.5 3.0 HIGH
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:N)
Doesn’t really leak secrets in a meaningful way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:H)
Could take the service down hard or make it unusable for people who depend on it.
3.9 3.6 [email protected]
5.0 2.0 MEDIUM
AV:N/AC:L/Au:N/C:N/I:N/A:P Click to expand
Access vector (AV:N)
Can be exploited remotely over network reachability.
Access complexity (AC:L)
Exploitation conditions are straightforward and predictable.
Authentication (AU:N)
No authentication is required.
Confidentiality impact (C:N)
No confidentiality impact.
Integrity impact (I:N)
No integrity impact.
Availability impact (A:P)
Partial availability impact.
10.0 2.9 [email protected]

Weakness enumeration for CVE-2017-9804

GitHub Security Advisory for CVE-2017-9804

GHSA-x5x7-3v85-wpc4 · Severity: high · Ecosystem: maven — Apache Struts allows entering a custom URL in a form field if built-in URLValidator is used

OS Trackers for CVE-2017-9804

vendor priority summary link
redhat medium https://access.redhat.com/security/cve/CVE-2017-9804
ubuntu medium CVE-2017-9804 medium priority: Ubuntu including 1 source packages (libstruts1.2-java), 8 status rows across 8 suites (artful, bionic, cosmic, disco, trusty, upstream, xenial, zesty): DNE 7, needed 1. https://ubuntu.com/security/CVE-2017-9804

Affected software / configurations for CVE-2017-9804

Vendor Product Version Raw CPE
apache struts 2.3.7 cpe:2.3:a:apache:struts:2.3.7:*:*:*:*:*:*:*
apache struts 2.3.8 cpe:2.3:a:apache:struts:2.3.8:*:*:*:*:*:*:*
apache struts 2.3.9 cpe:2.3:a:apache:struts:2.3.9:*:*:*:*:*:*:*
apache struts 2.3.10 cpe:2.3:a:apache:struts:2.3.10:*:*:*:*:*:*:*
apache struts 2.3.11 cpe:2.3:a:apache:struts:2.3.11:*:*:*:*:*:*:*
apache struts 2.3.12 cpe:2.3:a:apache:struts:2.3.12:*:*:*:*:*:*:*
apache struts 2.3.13 cpe:2.3:a:apache:struts:2.3.13:*:*:*:*:*:*:*
apache struts 2.3.14 cpe:2.3:a:apache:struts:2.3.14:*:*:*:*:*:*:*
apache struts 2.3.14.1 cpe:2.3:a:apache:struts:2.3.14.1:*:*:*:*:*:*:*
apache struts 2.3.14.2 cpe:2.3:a:apache:struts:2.3.14.2:*:*:*:*:*:*:*
apache struts 2.3.14.3 cpe:2.3:a:apache:struts:2.3.14.3:*:*:*:*:*:*:*
apache struts 2.3.15 cpe:2.3:a:apache:struts:2.3.15:*:*:*:*:*:*:*
apache struts 2.3.15.1 cpe:2.3:a:apache:struts:2.3.15.1:*:*:*:*:*:*:*
apache struts 2.3.15.2 cpe:2.3:a:apache:struts:2.3.15.2:*:*:*:*:*:*:*
apache struts 2.3.15.3 cpe:2.3:a:apache:struts:2.3.15.3:*:*:*:*:*:*:*
apache struts 2.3.16 cpe:2.3:a:apache:struts:2.3.16:*:*:*:*:*:*:*
apache struts 2.3.16.1 cpe:2.3:a:apache:struts:2.3.16.1:*:*:*:*:*:*:*
apache struts 2.3.16.2 cpe:2.3:a:apache:struts:2.3.16.2:*:*:*:*:*:*:*
apache struts 2.3.16.3 cpe:2.3:a:apache:struts:2.3.16.3:*:*:*:*:*:*:*
apache struts 2.3.17 cpe:2.3:a:apache:struts:2.3.17:*:*:*:*:*:*:*
apache struts 2.3.19 cpe:2.3:a:apache:struts:2.3.19:*:*:*:*:*:*:*
apache struts 2.3.20 cpe:2.3:a:apache:struts:2.3.20:*:*:*:*:*:*:*
apache struts 2.3.20.1 cpe:2.3:a:apache:struts:2.3.20.1:*:*:*:*:*:*:*
apache struts 2.3.20.2 cpe:2.3:a:apache:struts:2.3.20.2:*:*:*:*:*:*:*
apache struts 2.3.21 cpe:2.3:a:apache:struts:2.3.21:*:*:*:*:*:*:*
apache struts 2.3.22 cpe:2.3:a:apache:struts:2.3.22:*:*:*:*:*:*:*
apache struts 2.3.23 cpe:2.3:a:apache:struts:2.3.23:*:*:*:*:*:*:*
apache struts 2.3.24.2 cpe:2.3:a:apache:struts:2.3.24.2:*:*:*:*:*:*:*
apache struts 2.3.24.3 cpe:2.3:a:apache:struts:2.3.24.3:*:*:*:*:*:*:*
apache struts 2.3.25 cpe:2.3:a:apache:struts:2.3.25:*:*:*:*:*:*:*
apache struts 2.3.26 cpe:2.3:a:apache:struts:2.3.26:*:*:*:*:*:*:*
apache struts 2.3.27 cpe:2.3:a:apache:struts:2.3.27:*:*:*:*:*:*:*
apache struts 2.3.28 cpe:2.3:a:apache:struts:2.3.28:*:*:*:*:*:*:*
apache struts 2.3.28.1 cpe:2.3:a:apache:struts:2.3.28.1:*:*:*:*:*:*:*
apache struts 2.3.29 cpe:2.3:a:apache:struts:2.3.29:*:*:*:*:*:*:*
apache struts 2.3.30 cpe:2.3:a:apache:struts:2.3.30:*:*:*:*:*:*:*
apache struts 2.3.31 cpe:2.3:a:apache:struts:2.3.31:*:*:*:*:*:*:*
apache struts 2.3.32 cpe:2.3:a:apache:struts:2.3.32:*:*:*:*:*:*:*
apache struts 2.3.33 cpe:2.3:a:apache:struts:2.3.33:*:*:*:*:*:*:*
apache struts 2.5 cpe:2.3:a:apache:struts:2.5:*:*:*:*:*:*:*
apache struts 2.5 cpe:2.3:a:apache:struts:2.5:beta1:*:*:*:*:*:*
apache struts 2.5 cpe:2.3:a:apache:struts:2.5:beta2:*:*:*:*:*:*
apache struts 2.5 cpe:2.3:a:apache:struts:2.5:beta3:*:*:*:*:*:*
apache struts 2.5.1 cpe:2.3:a:apache:struts:2.5.1:*:*:*:*:*:*:*
apache struts 2.5.2 cpe:2.3:a:apache:struts:2.5.2:*:*:*:*:*:*:*
apache struts 2.5.3 cpe:2.3:a:apache:struts:2.5.3:*:*:*:*:*:*:*
apache struts 2.5.4 cpe:2.3:a:apache:struts:2.5.4:*:*:*:*:*:*:*
apache struts 2.5.5 cpe:2.3:a:apache:struts:2.5.5:*:*:*:*:*:*:*
apache struts 2.5.6 cpe:2.3:a:apache:struts:2.5.6:*:*:*:*:*:*:*
apache struts 2.5.7 cpe:2.3:a:apache:struts:2.5.7:*:*:*:*:*:*:*
apache struts 2.5.8 cpe:2.3:a:apache:struts:2.5.8:*:*:*:*:*:*:*
apache struts 2.5.9 cpe:2.3:a:apache:struts:2.5.9:*:*:*:*:*:*:*
apache struts 2.5.10 cpe:2.3:a:apache:struts:2.5.10:*:*:*:*:*:*:*
apache struts 2.5.10.1 cpe:2.3:a:apache:struts:2.5.10.1:*:*:*:*:*:*:*
apache struts 2.5.12 cpe:2.3:a:apache:struts:2.5.12:*:*:*:*:*:*:*

References for CVE-2017-9804

cvelogic Threat Intelligence