Overview
Apache Struts2 2.3.16.1 and earlier contain a vulnerability where the ClassLoader allows access to class properties via request parameters
Description
Apache Struts2 2.3.16.1 and earlier contain a vulnerability where the ClassLoader allows access to class properties via request parameters. This vulnerability was previously attempted to be addressed in S2-020 ClassLoader manipulation via request parameters. Unfortunately, the correction wasn't sufficient. Struts2 provides a mapping between Web parameters and Java methods. So an attacker could invoke a specific method on a remote Java server by specifying it in a URL. All Java objects have a getClass() method, which returns the object's Class (this object represents classes). Every Class has a ClassLoader, which is the class that loaded the initial class; an attacker could access the ClassLoader using the Class.getClassLoader() method. |
Impact
An unauthenticated attacker could manipulate the ClassLoader into disclosing private Class information or possibly load a malicious class file. |
Solution
Update |
The vendor has stated the following workaround: |
Vendor Information
CVSS Metrics
Group | Score | Vector |
---|---|---|
Base | 7.5 | AV:N/AC:L/Au:N/C:P/I:P/A:P |
Temporal | 6.5 | E:H/RL:OF/RC:C |
Environmental | 6.9 | CDP:L/TD:H/CR:ND/IR:ND/AR:ND |
References
Acknowledgements
This vulnerability was publicly reported by Apache Struts2.
This document was written by Michael Orlando and David Svoboda.
Other Information
CVE IDs: | CVE-2014-0094 |
Date Public: | 2014-04-24 |
Date First Published: | 2014-04-25 |
Date Last Updated: | 2014-07-24 21:53 UTC |
Document Revision: | 14 |