CVE-2016-0785:
Apache Struts RCE Vulnerability
8.8
CVSS Score
3.0
Basic Information
CVE ID
GHSA ID
EPSS Score
0.96714%
CWE
Published
5/14/2022
Updated
12/28/2023
KEV Status
No
Technology
Java
Technical Details
CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
org.apache.struts:struts2-core | maven | >= 2.0.0, < 2.3.20.3 | 2.3.20.3 |
org.apache.struts:struts2-core | maven | >= 2.3.24, < 2.3.24.3 | 2.3.24.3 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stems from two key issues:
- Component.findValue's unconditional OGNL evaluation when altSyntax was enabled, without verifying if the input actually contained an expression.
- ComponentUtils.isExpression's strict '%{...}' boundary check, which failed to detect expressions mixed with other text (e.g., 'foo%{bar}').
These functions together allowed attackers to inject OGNL expressions via tag attributes that would be evaluated twice - first during attribute processing, then again during rendering. The patch added ComponentUtils.containsExpression to detect partial expressions and modified findValue to use this check, preventing the double evaluation.