{"id":"CVE-2012-0391","published":"2012-01-08T15:55:01Z","modified":"2026-06-16T23:37:12Z","title":"Apache Struts 2 Improper Input Validation Vulnerability","vendor":"Apache","product":"Struts 2","tier":"core","eol":null,"description":{"text":"The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during certain exception handling for mismatched data types of properties, which allows remote attackers to execute arbitrary Java code via a crafted parameter.","provenance":"source","from":"NVD"},"summary":{"text":"The ExceptionDelegator component of Apache Struts 2, in versions before 2.2.3.1, interprets certain parameter values as OGNL expressions during exception handling for mismatched property data types. A remote attacker can execute arbitrary Java code by sending a crafted parameter, requiring no authentication, no user interaction, and only network access to the application.","provenance":"ai","model":"claude-haiku-5-5","generatedAt":"2026-10-30T13:36:12Z"},"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.75599,"percentile":0.99518,"date":"2026-10-29","provenance":"source"},"kev":{"dateAdded":"2022-01-21","dueDate":"2022-07-21","ransomware":false,"requiredAction":"Apply updates per vendor instructions.","notes":"https://nvd.nist.gov/vuln/detail/CVE-2012-0391","provenance":"source"},"vulncheckKev":{"dateAdded":"2021-10-13","exploitedFirstSeen":"2021-10-13","ransomware":false,"evidence":[{"url":"https://www.fortiguard.com/encyclopedia/ips/30956","date":"2021-10-13"},{"url":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","date":"2022-01-21"}],"evidenceTotal":2,"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-94","name":"Improper Control of Generation of Code"},{"id":"CWE-20","name":"Improper Input Validation"}],"references":[{"url":"http://archives.neohapsis.com/archives/bugtraq/2012-01/0031.html","tags":["Broken Link","Exploit"]},{"url":"http://secunia.com/advisories/47393","tags":["Vendor Advisory"]},{"url":"http://struts.apache.org/2.x/docs/s2-008.html","tags":["Vendor Advisory"]},{"url":"http://struts.apache.org/2.x/docs/version-notes-2311.html","tags":["Vendor Advisory"]},{"url":"http://www.exploit-db.com/exploits/18329","tags":["Exploit"]},{"url":"https://issues.apache.org/jira/browse/WW-3668","tags":["Vendor Advisory"]},{"url":"https://www.sec-consult.com/files/20120104-0_Apache_Struts2_Multiple_Critical_Vulnerabilities.txt","tags":["Broken Link","Exploit"]},{"url":"http://archives.neohapsis.com/archives/bugtraq/2012-01/0031.html","tags":["Broken Link","Exploit"]},{"url":"http://secunia.com/advisories/47393","tags":["Vendor Advisory"]},{"url":"http://struts.apache.org/2.x/docs/s2-008.html","tags":["Vendor Advisory"]},{"url":"http://struts.apache.org/2.x/docs/version-notes-2311.html","tags":["Vendor Advisory"]},{"url":"http://www.exploit-db.com/exploits/18329","tags":["Exploit"]},{"url":"https://issues.apache.org/jira/browse/WW-3668","tags":["Vendor Advisory"]},{"url":"https://www.sec-consult.com/files/20120104-0_Apache_Struts2_Multiple_Critical_Vulnerabilities.txt","tags":["Broken Link","Exploit"]},{"url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2012-0391","tags":["US Government Resource"]}],"techniques":[{"id":"T1190","name":"Exploit Public-Facing Application","tactics":["initial-access"],"provenance":"ai","basis":"ai-mapping","bases":["ai-mapping"],"basisDetail":"claude-haiku-5-5: Remote crafted parameter against public-facing web application","mappingType":"exploitation_technique","evidence":[{"from":"description","quote":"allows remote attackers to execute arbitrary Java code via a crafted parameter","start":194,"end":272}],"model":"claude-haiku-5-5","confidence":"medium","confidenceNote":"AI-mapped from the description (quote-validated, not expert-reviewed)"},{"id":"T1059","name":"Command and Scripting Interpreter","tactics":["execution"],"provenance":"ai","basis":"ai-mapping","bases":["ai-mapping"],"basisDetail":"claude-haiku-5-5: OGNL expression interpretation yields arbitrary code execution","mappingType":"primary_impact","evidence":[{"from":"description","quote":"interprets parameter values as OGNL expressions during certain exception handling","start":65,"end":146}],"model":"claude-haiku-5-5","confidence":"medium","confidenceNote":"AI-mapped from the description (quote-validated, not expert-reviewed)"}],"reports":[],"affected":[{"ecosystem":"Maven","package":"org.apache.struts:struts2-core","vulnerableRanges":["<2.2.3.1"],"patched":["2.2.3.1"],"from":["GHSA-4wrr-9h5r-m92w"],"provenance":"source"},{"ecosystem":"Maven","package":"org.apache.struts.xwork:xwork-core","vulnerableRanges":["<2.2.3.1"],"patched":["2.2.3.1"],"from":["GHSA-4wrr-9h5r-m92w"],"provenance":"source"}],"advisories":[{"id":"GHSA-4wrr-9h5r-m92w","url":"https://github.com/advisories/GHSA-4wrr-9h5r-m92w","severity":"CRITICAL","ecosystem":"Maven","package":"org.apache.struts:struts2-core","vulnerableRanges":["<2.2.3.1"],"patched":["2.2.3.1"],"provenance":"source","from":"GHSA"},{"id":"GHSA-4wrr-9h5r-m92w","url":"https://github.com/advisories/GHSA-4wrr-9h5r-m92w","severity":"CRITICAL","ecosystem":"Maven","package":"org.apache.struts.xwork:xwork-core","vulnerableRanges":["<2.2.3.1"],"patched":["2.2.3.1"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2022-2464","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2022-2464","exploited":true,"exploitedSince":"2022-01-21","provenance":"source"},"exploits":[{"id":18329,"url":"https://www.exploit-db.com/exploits/18329","title":"Apache Struts 2 < 2.3.1 - Multiple Vulnerabilities","type":"webapps","platform":"multiple","date":"2012-01-06","verified":true,"provenance":"source"},{"id":18984,"url":"https://www.exploit-db.com/exploits/18984","title":"Apache Struts 2.2.1.1 - Remote Command Execution (Metasploit)","type":"remote","platform":"multiple","date":"2012-06-05","verified":true,"provenance":"source"}],"exploitSources":{"exploitdb":{"count":2,"earliest":"2012-01-06"},"metasploit":[{"name":"Apache Struts Remote Command Execution","module":"exploit/multi/http/struts_code_exec_exception_delegator","type":"exploit","disclosureDate":"2012-01-06","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/struts_code_exec_exception_delegator.rb"}],"first":{"date":"2012-01-06","source":"Exploit-DB","url":"https://www.exploit-db.com/exploits/18329"},"provenance":"source"},"exploitRefs":["http://archives.neohapsis.com/archives/bugtraq/2012-01/0031.html","http://www.exploit-db.com/exploits/18329","https://www.sec-consult.com/files/20120104-0_Apache_Struts2_Multiple_Critical_Vulnerabilities.txt"],"flow":[{"stage":"exploitation","techniques":["T1190"],"provenance":"ai"},{"stage":"primary","techniques":["T1059"],"provenance":"ai"}],"timeline":[{"date":"2012-01-06","kind":"exploit-public","label":"First public exploit: Exploit-DB (EDB-18329); later: Metasploit 2012-01-06","url":"https://www.exploit-db.com/exploits/18329","provenance":"source"},{"date":"2012-01-08","kind":"published","label":"Published (NVD)","url":"https://nvd.nist.gov/vuln/detail/CVE-2012-0391","provenance":"source"},{"date":"2021-10-13","kind":"exploited-reported","label":"Exploitation first reported (VulnCheck KEV evidence)","url":"https://www.fortiguard.com/encyclopedia/ips/30956","provenance":"source"},{"date":"2022-01-21","kind":"kev","label":"Added to CISA KEV","url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog","provenance":"source"},{"date":"2022-01-21","kind":"euvd-exploited","label":"ENISA EUVD: exploited","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2022-2464","provenance":"source"}],"speed":{"daysToPublicExploit":null,"firstExploitFrom":"Exploit-DB","daysToKev":3666},"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 1843 days ago"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":19.9,"detail":"percentile 0.9952"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":5.0,"detail":"3 NVD references tagged Exploit; 2 Exploit-DB entries; 1 Metasploit module"},{"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-class-apache-struts-cwe-20","packageHistory":[{"cve":"CVE-2008-6505","published":"2009-03-23","fixed":"2.1.3","kev":false},{"cve":"CVE-2010-1870","published":"2010-08-17","fixed":"2.2.1","kev":false},{"cve":"CVE-2011-1772","published":"2011-05-13","fixed":"2.2.3","kev":false,"link":{"from":"CVE-2011-1772","to":"CVE-2012-0391","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"Maven:org.apache.struts:struts2-core","fromFixed":"2.2.3","toFixed":"2.2.3.1","daysApart":240}]}},{"cve":"CVE-2012-0391","published":"2012-01-08","fixed":"2.2.3.1","kev":true},{"cve":"CVE-2012-0392","published":"2012-01-08","fixed":"2.2.3.1","kev":false},{"cve":"CVE-2012-0838","published":"2012-03-02","fixed":"2.2.3.1","kev":false},{"cve":"CVE-2012-0393","published":"2012-01-08","fixed":"2.3.1.1","kev":false}],"package":"Maven:org.apache.struts:struts2-core"}}