Bug 1013036 (CVE-2013-4316)

Summary: CVE-2013-4316 struts: dynamic method executions is enabled by default
Product: [Other] Security Response Reporter: Vincent Danen <vdanen>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: aneelica, dbhole, djorm, jkurik, mmraka, puntogil, weli
Target Milestone: ---Keywords: Reopened, Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: struts 2.3.15.2 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-30 04:53:43 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: 1013038    

Description Vincent Danen 2013-09-27 16:20:49 UTC
Dynamic Method Invocation is a mechanism known to impose possible security vulnerabilities, but until now it was enabled by default with warning that users should switch it off if possible.

In Struts 2.3.15.2 the Dynamic Method Invocation is to false by default. Another option is to set struts.enable.DynamicMethodInvocation to false in struts.xml

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>

Upstream bug report: https://issues.apache.org/jira/browse/WW-4201


External References:

http://struts.apache.org/release/2.3.x/docs/s2-019.html

Comment 1 gil cattaneo 2013-09-27 16:51:27 UTC
actual Struts version in fedora is 1.3.10
the problem is present only in Struts 2.0.0 and Struts 2.3.15.1
regards

Comment 2 Vincent Danen 2013-09-27 22:56:08 UTC
Please don't close bugs that are not assigned to you.

Yes, upstream indicates 2.0.0+ but that is only because 1.x is no longer supported (so they never indicate whether it is affected).  Did you see the patch that corrects this issue and verify that it doesn't apply to 1.x?  Or do you have something more concrete than just upstream's "affected versions" value to substantiate this claim?

Comment 3 gil cattaneo 2013-09-28 09:05:33 UTC
hi
from http://struts.apache.org/release/2.3.x/docs/s2-019.html
"In Struts 2.3.15.2 the Dynamic Method Invocation is to false by default. Another option is to set struts.enable.DynamicMethodInvocation to false in struts.xml
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>"
1.x series is required by springframework and the file struts.xml is unavailable for 1.x
regards

Comment 4 gil cattaneo 2013-09-28 12:03:12 UTC
structs2 breaks compatibility also with the following package
velocity-tools (springframework BR/R)
i will not update structs2, until depend on tomcat6 apis, or SpringFramework and Velocity tools do not require more

Comment 7 David Jorm 2013-09-30 06:54:59 UTC
External References:

https://issues.apache.org/jira/browse/WW-4201

Upstream Patch:

http://svn.apache.org/viewvc?view=revision&revision=r1524296

Comment 8 Chess Hazlett 2019-09-17 20:30:41 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.