CVE-2016-4438 Arbitrary code execution in Apache Struts 2
Remote attackers can execute arbitrary code via crafted expressions in the Apache Struts REST plugin, requiring immediate upgrades.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2016-4438?
CVE-2016-4438 is a critical code injection vulnerability in Apache Struts, published on 4 Jul 2016. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
The REST plugin in Apache Struts 2 2.3.19 through 2.3.28.1 allows remote attackers to execute arbitrary code via a crafted expression.
Weakness: CWE-20
Which versions are affected by CVE-2016-4438?
4 open source packages ship an affected version, including org.apache.struts:struts2-core and org.apache.struts:struts2-rest-plugin. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
org.apache.struts:struts2-core Maven | From 2.3.19 | 2.3.29 |
org.apache.struts:struts2-core Maven | From 2.3.19 | 2.3.29 |
org.apache.struts:struts2-rest-plugin Maven | From 2.3.19 | 2.3.29 |
org.apache.struts:struts2-rest-plugin Maven | From 2.3.19 | 2.3.29 |
Products include Apache Struts.
How do I fix CVE-2016-4438?
Upgrade org.apache.struts:struts2-core to 2.3.29 or later.
Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.
Is CVE-2016-4438 being exploited?
There is no known exploitation of CVE-2016-4438 in the wild and no public exploit code.
Public exploit code: 2 proofs of concept on GitHub.
Other vulnerabilities in Apache Struts
Sources
Also known as GHSA-4prj-vw9j-v6pr.