{"id":"CVE-2020-17530","published":"2020-12-11T02:15:10Z","modified":"2026-06-17T02:59:05Z","title":"Apache Struts Remote Code Execution Vulnerability","vendor":"Apache","product":"Struts","tier":"core","eol":null,"description":{"text":"Forced OGNL evaluation, when evaluated on raw user input in tag attributes, may lead to remote code execution. Affected software : Apache Struts 2.0.0 - Struts 2.5.25.","provenance":"source","from":"NVD"},"summary":{"text":"Apache Struts, a Java web application framework, contains a flaw where forced OGNL evaluation of raw user input in tag attributes can occur, in the Struts 2 series from 2.0.0 through 2.5.25. An attacker who can send requests to an affected application without authentication or user interaction may be able to achieve remote code execution, provided the application evaluates unsanitised input in those tag attributes.","provenance":"ai","model":"claude-haiku-5-5","generatedAt":"2026-10-30T13:36:02Z"},"cvss":{"score":9.8,"severity":"CRITICAL","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","provenance":"source","from":"NVD"},"epss":{"score":0.96251,"percentile":0.99878,"date":"2026-10-29","provenance":"source"},"kev":{"dateAdded":"2021-11-03","dueDate":"2022-05-03","ransomware":false,"requiredAction":"Apply updates per vendor instructions.","notes":"https://nvd.nist.gov/vuln/detail/CVE-2020-17530","provenance":"source"},"vulncheckKev":{"dateAdded":"2021-04-12","exploitedFirstSeen":"2021-04-12","ransomware":false,"evidence":[{"url":"https://unit42.paloaltonetworks.com/network-attack-trends-winter-2020/","date":"2021-04-12"},{"url":"https://blog.qualys.com/vulnerabilities-threat-research/2021/09/21/apache-struts-2-double-ognl-evaluation-vulnerability-cve-2020-17530","date":"2021-09-21"},{"url":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","date":"2021-11-03"},{"url":"https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2023/11/09055246/Modern-Asian-APT-groups-TTPs_report_eng.pdf","date":"2023-11-09"}],"evidenceTotal":4,"provenance":"source"},"exploited":true,"otx":{"pulseCount":50,"pulses":[{"name":"Actively_Exploited_Kev | Oct 29, 2026","url":"https://otx.alienvault.com/pulse/6ae20c1db17e7057ae7d9ad1","created":"2026-10-28"},{"name":"Actively_Exploited_Kev | Oct 28, 2026","url":"https://otx.alienvault.com/pulse/6ae0ba7e0e2a97ff7b218819","created":"2026-10-27"},{"name":"Actively_Exploited_Kev | Oct 27, 2026","url":"https://otx.alienvault.com/pulse/6adf68b85c3e852f3c111d18","created":"2026-10-26"},{"name":"Actively_Exploited_Kev | Oct 24, 2026","url":"https://otx.alienvault.com/pulse/6adb740e397c3ad4799aa4cd","created":"2026-10-23"},{"name":"Actively_Exploited_Kev | Oct 23, 2026","url":"https://otx.alienvault.com/pulse/6ada236fcfba2dfa730ea482","created":"2026-10-22"},{"name":"Actively_Exploited_Kev | Oct 22, 2026","url":"https://otx.alienvault.com/pulse/6ad8d33a077cbb5cab524d80","created":"2026-10-21"},{"name":"Actively_Exploited_Kev | Oct 21, 2026","url":"https://otx.alienvault.com/pulse/6ad78130c4d1ac2be83a8b6d","created":"2026-10-20"},{"name":"Actively_Exploited_Kev | Oct 20, 2026","url":"https://otx.alienvault.com/pulse/6ad62f63c24a405a3423cc13","created":"2026-10-19"},{"name":"Actively_Exploited_Kev | Oct 19, 2026","url":"https://otx.alienvault.com/pulse/6ad4dda174e5797d0bd238b7","created":"2026-10-18"},{"name":"Actively_Exploited_Kev | Oct 18, 2026","url":"https://otx.alienvault.com/pulse/6ad38c22e1848f8189d1c121","created":"2026-10-17"}],"provenance":"machine"},"cwes":[{"id":"CWE-917","name":"Improper Neutralization of Special Elements used in an Expression Language Statement"}],"references":[{"url":"http://jvn.jp/en/jp/JVN43969166/index.html","tags":["Third Party Advisory"]},{"url":"http://packetstormsecurity.com/files/160721/Apache-Struts-2-Forced-Multi-OGNL-Evaluation.html","tags":["Third Party Advisory","VDB Entry"]},{"url":"http://www.openwall.com/lists/oss-security/2022/04/12/6","tags":["Mailing List","Third Party Advisory"]},{"url":"https://cwiki.apache.org/confluence/display/WW/S2-061","tags":["Vendor Advisory"]},{"url":"https://security.netapp.com/advisory/ntap-20210115-0005/","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com//security-alerts/cpujul2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpuApr2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpuapr2022.html","tags":["Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpujan2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpujan2022.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpuoct2021.html","tags":["Patch","Third Party Advisory"]},{"url":"http://jvn.jp/en/jp/JVN43969166/index.html","tags":["Third Party Advisory"]},{"url":"http://packetstormsecurity.com/files/160721/Apache-Struts-2-Forced-Multi-OGNL-Evaluation.html","tags":["Third Party Advisory","VDB Entry"]},{"url":"http://www.openwall.com/lists/oss-security/2022/04/12/6","tags":["Mailing List","Third Party Advisory"]},{"url":"https://cwiki.apache.org/confluence/display/WW/S2-061","tags":["Vendor Advisory"]},{"url":"https://security.netapp.com/advisory/ntap-20210115-0005/","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com//security-alerts/cpujul2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpuApr2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpuapr2022.html","tags":["Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpujan2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpujan2022.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.oracle.com/security-alerts/cpuoct2021.html","tags":["Patch","Third Party Advisory"]},{"url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2020-17530","tags":["US Government Resource"]}],"techniques":[{"id":"T1190","name":"Exploit Public-Facing Application","tactics":["initial-access"],"provenance":"source","basis":"ctid-kev","bases":["ctid-kev"],"basisDetail":"CTID Mappings Explorer KEV 07/28/2025 (ATT&CK 16.1); capability: Code Execution","mappingType":"exploitation_technique","evidence":[],"comment":"CVE-2020-17530 is a remote code execution vulnerability in Apache Struts versions 2.0.0 - 2.5.25 allows an attacker to execute arbitrary code via forced Object Graph Navigational Language (OGNL) evaluation on raw user input in tag attributes.","confidence":"medium","confidenceNote":"CTID KEV capability group \"code execution\" is generic"},{"id":"T1059","name":"Command and Scripting Interpreter","tactics":["execution"],"provenance":"source","basis":"ctid-kev","bases":["ctid-kev"],"basisDetail":"CTID Mappings Explorer KEV 07/28/2025 (ATT&CK 16.1); capability: Code Execution","mappingType":"primary_impact","evidence":[],"comment":"CVE-2020-17530 is a remote code execution vulnerability in Apache Struts versions 2.0.0 - 2.5.25 allows an attacker to execute code via forced Object Graph Navigational Language (OGNL). ","confidence":"medium","confidenceNote":"CTID KEV capability group \"code execution\" is generic"}],"reports":[],"affected":[{"ecosystem":"Maven","package":"org.apache.struts:struts2-core","vulnerableRanges":[">=2.0.0, <2.5.26"],"patched":["2.5.26"],"from":["GHSA-jc35-q369-45pv"],"provenance":"source"}],"advisories":[{"id":"GHSA-jc35-q369-45pv","url":"https://github.com/advisories/GHSA-jc35-q369-45pv","severity":"CRITICAL","ecosystem":"Maven","package":"org.apache.struts:struts2-core","vulnerableRanges":[">=2.0.0, <2.5.26"],"patched":["2.5.26"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2022-1073","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2022-1073","exploited":true,"exploitedSince":"2021-11-03","provenance":"source"},"exploits":[],"exploitSources":{"pocGithub":{"count":10,"skipped":2,"earliest":"2020-12-09","earliestUrl":"https://github.com/secpool2000/CVE-2020-17530","repos":[{"name":"ka1n4t/CVE-2020-17530","url":"https://github.com/ka1n4t/CVE-2020-17530","stars":64,"created":"2020-12-09"},{"name":"wuzuowei/CVE-2020-17530","url":"https://github.com/wuzuowei/CVE-2020-17530","stars":45,"created":"2020-12-10"},{"name":"Al1ex/CVE-2020-17530","url":"https://github.com/Al1ex/CVE-2020-17530","stars":29,"created":"2020-12-13"},{"name":"fengziHK/CVE-2020-17530-strust2-061","url":"https://github.com/fengziHK/CVE-2020-17530-strust2-061","stars":7,"created":"2020-12-14"},{"name":"uzzzval/CVE-2020-17530","url":"https://github.com/uzzzval/CVE-2020-17530","stars":5,"created":"2021-01-07"}]},"metasploit":[{"name":"Apache Struts 2 Forced Multi OGNL Evaluation","module":"exploit/multi/http/struts2_multi_eval_ognl","type":"exploit","disclosureDate":"2020-09-14","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/struts2_multi_eval_ognl.rb"}],"nuclei":[{"id":"CVE-2020-17530","name":"Apache Struts 2.0.0-2.5.25 - Remote Code Execution","severity":"critical","path":"http/cves/2020/CVE-2020-17530.yaml","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2020/CVE-2020-17530.yaml"}],"first":{"date":"2020-09-14","source":"Metasploit","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/struts2_multi_eval_ognl.rb"},"provenance":"source"},"exploitRefs":["http://packetstormsecurity.com/files/160721/Apache-Struts-2-Forced-Multi-OGNL-Evaluation.html"],"flow":[{"stage":"exploitation","techniques":["T1190"],"provenance":"source"},{"stage":"primary","techniques":["T1059"],"provenance":"source"}],"timeline":[{"date":"2020-09-14","kind":"exploit-public","label":"First public exploit: Metasploit; later: PoC-in-GitHub 2020-12-09","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/struts2_multi_eval_ognl.rb","provenance":"source"},{"date":"2020-12-11","kind":"published","label":"Published (NVD)","url":"https://nvd.nist.gov/vuln/detail/CVE-2020-17530","provenance":"source"},{"date":"2021-04-12","kind":"exploited-reported","label":"Exploitation first reported (VulnCheck KEV evidence)","url":"https://unit42.paloaltonetworks.com/network-attack-trends-winter-2020/","provenance":"source"},{"date":"2021-11-03","kind":"kev","label":"Added to CISA KEV","url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog","provenance":"source"},{"date":"2021-11-03","kind":"euvd-exploited","label":"ENISA EUVD: exploited","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2022-1073","provenance":"source"}],"speed":{"daysToPublicExploit":null,"firstExploitFrom":"Metasploit","daysToKev":327},"priority":{"score":69.8,"factors":[{"name":"In a KEV catalog","points":35.0,"detail":"listed in CISA KEV and VulnCheck KEV"},{"name":"Recent KEV listing","points":0.0,"detail":"added 2027 days ago"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":19.98,"detail":"percentile 0.9988"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":5.0,"detail":"1 NVD exploit link; 10 PoC-in-GitHub repos; 1 Metasploit module; 1 nuclei template"},{"name":"Mentioned in OTX pulses","points":3.0,"detail":"50 pulses"},{"name":"CVSS severity","points":6.86,"detail":"base score 9.8"},{"name":"End-of-life product","points":0.0,"detail":"supported or unknown"}]},"lineage":{"familyId":"fam-apache-struts-cve-2020-17530","children":[{"from":"CVE-2020-17530","to":"CVE-2021-31805","relation":"incomplete-fix","confidence":"high","kind":"lineage","evidence":[{"kind":"text","provenance":"source","relation":"incomplete-fix","quote":"The fix issued for CVE-2020-17530 was incomplete.","from":"CVE.org","in":"CVE-2021-31805"},{"kind":"version-step","provenance":"source","package":"Maven:org.apache.struts:struts2-core","fromFixed":"2.5.26","toFixed":"2.5.30","daysApart":487},{"kind":"similar","provenance":"machine","score":0.71,"basis":"same product + CWE + description similarity"}]}],"packageHistory":[{"cve":"CVE-2012-1592","published":"2019-12-05","fixed":"2.5.22","kev":false},{"cve":"CVE-2019-0230","published":"2020-09-14","fixed":"2.5.22","kev":false},{"cve":"CVE-2019-0233","published":"2020-09-14","fixed":"2.5.22","kev":false,"link":{"from":"CVE-2019-0233","to":"CVE-2020-17530","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"Maven:org.apache.struts:struts2-core","fromFixed":"2.5.22","toFixed":"2.5.26","daysApart":88}]}},{"cve":"CVE-2020-17530","published":"2020-12-11","fixed":"2.5.26","kev":true},{"cve":"CVE-2021-31805","published":"2022-04-12","fixed":"2.5.30","kev":false},{"cve":"CVE-2025-68493","published":"2026-01-11","fixed":"6.1.1","kev":false},{"cve":"CVE-2023-34149","published":"2023-06-14","fixed":"6.1.2.1","kev":false}],"package":"Maven:org.apache.struts:struts2-core"}}