Bug 985814 (CVE-2016-4433) - VUL-0: CVE-2016-4433: struts: Bypassing internal security mechanisms by crafted request
Summary: VUL-0: CVE-2016-4433: struts: Bypassing internal security mechanisms by craft...
Status: RESOLVED INVALID
Alias: CVE-2016-4433
Product: SUSE Security Incidents
Classification: Novell Products
Component: Incidents (show other bugs)
Version: unspecified
Hardware: Other Other
: P5 - None : Normal
Target Milestone: ---
Assignee: Tomáš Chvátal
QA Contact: Security Team bot
URL: https://smash.suse.de/issue/170361/
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-06-21 07:47 UTC by Marcus Meissner
Modified: 2016-06-21 07:47 UTC (History)
1 user (show)

See Also:
Found By: Security Response Team
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Marcus Meissner 2016-06-21 07:47:17 UTC
https://struts.apache.org/docs/s2-039.html


Summary
Getter as action method leads to security bypass

Who should read this
	

All Struts 2 developers and users

Impact of vulnerability
	

Possible manipulation of return result and bypassing validation

Maximum security rating
	

Medium

Recommendation
	

Upgrade to Struts 2.3.29.

Affected Software
	

Struts 2.3.20 - Struts Struts 2.3.28.1

Reporter
	

Takeshi Terada websec02 dot g02 at gmail.com

CVE Identifier
	

CVE-2016-4433
Problem

It is possible to pass a crafted request which can be used to bypass internal security mechanism and manipulate return string which can leads to redirecting user to unvalidated location.
Solution

Upgrade to Apache Struts version 2.3.29.
Backward compatibility

Some backward incompatibility issues are expected when upgrading to Struts 2.3.29 - it can happen that some OGNL expressions stop working because of performing disallowed arithmetic operations and assignments.
Workaround

You can try to use more restrictive RegEx used to clean up action names as below:

<constant name="struts.allowed.action.names" value="[a-zA-Z]*" />

Please adjust the RegEx to your action naming pattern, it should be as narrowed as possible.
Comment 1 Marcus Meissner 2016-06-21 07:47:36 UTC
This only affects struts 2, we ship only struts 1