Bug 967656 (CVE-2013-1966, CVE-2013-2115)

Summary: CVE-2013-1966 struts2: remote command execution due to flaw in the includeParams attribute of URL and Anchor tags
Product: [Other] Security Response Reporter: Vincent Danen <vdanen>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED NOTABUG QA Contact:
Severity: urgent Docs Contact:
Priority: urgent    
Version: unspecifiedCC: aneelica, chazlett, dbhole, mjc, weli
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Struts 2.3.14.2 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-05-28 01:57:39 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 967657    

Description Vincent Danen 2013-05-27 20:11:51 UTC
As per the upstream report:

Both the s:url and s:a tag provide an includeParams attribute.

The main scope of that attribute is to understand whether includes http request parameter or not.

The allowed values of includeParams are:

1. none - include no parameters in the URL (default)
2. get - include only GET parameters in the URL
3. all - include both GET and POST parameters in the URL

A request that included a specially crafted request parameter could be used to inject arbitrary OGNL code into the stack, afterward used as request parameter of an URL or A tag , which will cause a further evaluation.

The second evaluation happens when the URL/A tag tries to resolve every parameters present in the original request.
This lets malicious users put arbitrary OGNL statements into any request parameter (not necessarily managed by the code) and have it evaluated as an OGNL expression to enable method execution and execute arbitrary methods, bypassing Struts and OGNL library protections.


This flaw is reported to affect Struts 2.0.0 through to Struts 2.3.14.  It is corrected in 2.3.14.1.

External References:

https://cwiki.apache.org/confluence/display/WW/S2-013

Comment 1 Vincent Danen 2013-05-27 20:15:27 UTC
Note that Struts 2.3.14.2 was released due to an incomplete/incorrect fix for CVE-2013-1966 in version 2.3.14.1.  A new CVE was assigned for this incomplete fix (CVE-2013-2115) but would only affect version 2.3.14.1 or any other supplied version of Struts with the incorrect patch.

This issue is fully corrected in 2.3.14.2 as per:

https://cwiki.apache.org/confluence/display/WW/S2-014

Comment 3 Mark J. Cox 2013-11-28 08:47:59 UTC
had this affected Red Hat products it would have done so with impact=critical.

Comment 5 Chess Hazlett 2019-09-17 20:36:04 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.