Bug 1489478 (CVE-2017-12611)

Summary: CVE-2017-12611 struts: RCE attack when using an unintentional expression in Freemarker tag instead of string literals
Product: [Other] Security Response Reporter: Adam Mariš <amaris>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED NOTABUG QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: aileenc, bkearney, chazlett, dbhole, felias, ggainey, gvarsami, hchiorea, jcoleman, jolee, jshepherd, kconner, ldimaggi, loleary, meissner, mmraka, nwallace, pavelp, puntogil, rwagner, spinder, taw, tcunning, theute, thomas, tkirby, tlestach, vhalbert
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: struts 2.3.34, struts 2.5.12 Doc Type: If docs needed, set a value
Doc Text:
It was found that Freemarker in Struts would permit using read-only properties in value assignment of tag expressions. An attacker could use this to execute arbitrary code.
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-11-30 20:52:00 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1489481    

Description Adam Mariš 2017-09-07 14:20:19 UTC
When using expression literals or forcing expression in Freemarker tags (see example below) and using request values, it can lead to RCE attack.

<@s.hidden name="redirectUri" value=redirectUri />
<@s.hidden name="redirectUri" value="${redirectUri}" />

In both cases a writable property is used in the value attribute and in both cases this is threatened as an expression by Freemarker.

Affected versions: Struts 2.0.1 - Struts 2.3.33, Struts 2.5 - Struts 2.5.10

External References:

https://struts.apache.org/docs/s2-053.html

Comment 3 Chess Hazlett 2019-09-17 19:57:32 UTC
Statement:

A previous statement by Red Hat related to this CVE, prior to August 2019, said that Apache Struts 2 is not included in any Red Hat products. This earlier statement was incorrect. While Struts 2 is not actively compiled, shipped, used, or enabled in any Red Hat provided final products, and does not cause any vulnerability in the product, struts2-core jars have been included in some products' source code packages. The inclusion was part of an import of the Google Guice repository, which includes struts2-core. Customers that build artefacts from our source code could be at risk. Red Hat will remove these artefacts from source code in future releases.

The products that included the Struts 2 artefacts in their source jars:
Fuse Service Works 6.0.0
Single Sign On 7.3.0+

If you have used the source package from one of these products to build artefacts on your system, you should do the following to remove potentially affected jars:
1. Run 'find . -name struts2*.jar' under the source location
2. Remove any files found
This will not affect the product, as the jar is included with the source of google-guice, but no functionality requiring struts2 is implemented.