CVE-2016-3081: Apache Struts Command Injection Vulnerability
Apache Struts 2.3.20 through 2.3.28 lets a remote attacker run code on the server through the `method:` prefix, when Dynamic Method Invocation is enabled. Apache's fixed releases are 2.3.20.3, 2.3.24.3 and 2.3.28.1. CISA added it to the KEV catalog on 2026-10-08, and public exploit code exists.
Published Apr 26, 2016 · Updated Oct 9, 2026 · Analysis Oct 25, 2026
What an attacker can do
Struts 2 can map a request parameter with a method: prefix to the action method to call. With Dynamic Method Invocation (DMI) on, the value after the prefix is evaluated as an expression, so an attacker can send a crafted expression in a normal HTTP request and run arbitrary code with the privileges of the application server. No login and no user interaction are needed. The CVSS vector rates complexity as high, mostly because the target must have DMI enabled.
The NVD text gives the affected ranges as 2.3.19 to 2.3.20.2, 2.3.21 to 2.3.24.1 and 2.3.25 to 2.3.28. Apache's bulletin S2-032 lists 2.3.20 through 2.3.28, excluding 2.3.20.3 and 2.3.24.3. Treat the broader range as in scope.
A successful attack gives the attacker the same access as the Java process: application data, database credentials in its configuration, and a foothold in the network behind the web tier. A public exploit is listed with the references, and the vulnerability appears in the CISA catalog of known exploited vulnerabilities. Applications that were built years ago and never updated are the typical victims.
Who is affected
Apache Struts 2.3.20 through 2.3.28 (the NVD range starts at 2.3.19), except 2.3.20.3 and 2.3.24.3, and only when Dynamic Method Invocation is enabled. Find the Struts version in the application's libraries:
find / -name 'struts2-core*.jar' 2>/dev/nullThe jar name carries the version. DMI is controlled by the struts.enable.DynamicMethodInvocation constant in struts.xml or struts.properties. Look for it being set to true.
How to fix it
Upgrade to Struts 2.3.20.3, 2.3.24.3 or 2.3.28.1, the releases named in Apache's bulletin, which states no backward compatibility issues are expected. Rebuild and redeploy the application.
Workarounds from the bulletin: disable Dynamic Method Invocation, or write your own ActionMapper based on the source code of the recommended versions.
CISA's required action for KEV: apply mitigations per vendor instructions, follow BOD 26-04 guidance and its forensics triage requirements, or stop using the product if mitigations are unavailable. The due date was 2026-10-11 and binds US federal agencies. Because code execution is possible, check hosts that ran vulnerable versions for compromise before assuming a patch is enough.
CISA required action: Apply mitigations in accordance with vendor instructions, ensuring compliance with CISA’s BOD 26-04 Prioritizing Security Updates Based on Risk (see URL in Notes) guidance and CISA’s “Forensics Triage Requirements” (see URL in Notes). Follow applicable BOD 26-04 guidance for cloud services or discontinue use of the product if mitigations are unavailable. Stakeholders are responsible for evaluating each asset's internet exposure and ensuring adherence to BOD 26-04 patching guidelines.
How to tell if you were hit
Search web server and application access logs for requests whose URL or parameters contain method: followed by OGNL-style text such as %23 or #_memberAccess, @java.lang.Runtime, or ProcessBuilder. Look on the host for unexpected child processes of the Java application server (shells, curl, wget), new files in the web root or temp directories, and outbound connections from the server to unfamiliar hosts. Treat a hit as a possible full compromise of the server.
Original advisory
From the National Vulnerability Database. This product uses the NVD API but is not endorsed or certified by the NVD.
Apache Struts 2.3.19 to 2.3.20.2, 2.3.21 to 2.3.24.1, and 2.3.25 to 2.3.28, when Dynamic Method Invocation is enabled, allow remote attackers to execute arbitrary code via method: prefix, related to chained expressions.
Questions
- Is CVE-2016-3081 exploited in the wild?
Yes. CISA added it to its Known Exploited Vulnerabilities catalog on 2026-10-08, and a public exploit is listed in the references.
- Am I safe if Dynamic Method Invocation is disabled?
Apache lists disabling DMI as a workaround for this flaw. Upgrading to 2.3.20.3, 2.3.24.3 or 2.3.28.1 is the actual fix.
- Which Struts versions are fixed?
2.3.20.3, 2.3.24.3 and 2.3.28.1 on their respective branches. Later 2.3 or 2.5 releases are outside the affected ranges listed by Apache.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology
More Apache vulnerabilities
All Apache entriesCVE-2026-34486
Apache Tomcat Missing Encryption of Sensitive Data Vulnerability
high7.5ExploitedApr 9, 2026CVE-2026-34197
Apache ActiveMQ Improper Input Validation Vulnerability
high8.8ExploitedApr 7, 2026CVE-2024-45195
Apache OFBiz Forced Browsing Vulnerability
high7.5ExploitedSep 4, 2024CVE-2024-38856
Apache OFBiz Incorrect Authorization Vulnerability
critical9.8ExploitedAug 5, 2024CVE-2024-38475
Apache HTTP Server Improper Escaping of Output Vulnerability
critical9.1ExploitedJul 1, 2024CVE-2024-32113
Apache OFBiz Path Traversal Vulnerability
critical9.8ExploitedMay 8, 2024
