Summary
Access permission override causing a Denial of Service when performing a file uploadWho should read this | All Struts 2 developers and users |
---|---|
Impact of vulnerability | Denial of Service |
Maximum security rating | Moderate |
Recommendation | Upgrade to Struts 2.5.22 or greater If this is not possible, add |
Affected Software | Struts 2.0.0 - Struts 2.5.20 |
Reporters | Takeshi Terada of Mitsui Bussan Secure Directions, Inc. |
CVE Identifier | CVE-2019-0233 |
Problem
When a file upload is performed to an Action that exposes the file with a getter, an attacker may manipulate the request such that the working copy of the uploaded file is set to read-only. As a result, subsequent actions on the file will fail with an error. It might also be possible to set the Servlet container's temp directory to read only, such that subsequent upload actions will fail.
In Struts prior to 2.5.22, stack-accessible values (e.g. Action properties) of type java.io.File
and java.nio.File
as well as other classes from these standard library packages are not properly protected by the framework to deny access to potentially harmful underlying properties.
Solution
Upgrade to Struts 2.5.22 which excludes classes from java.io
and java.nio
from property evaluation by default.
Backward compatibility
No issues expected when upgrading to Struts 2.5.22
Workaround
While it is highly recommended to upgrade to Struts 2.5.22, if you are not able to do this you can mitigate the issue by adding java.io.
and java.nio.
to the value attribute of the struts.excludedPackageNames
constant in struts-default.xml
.
Read more about the internal Struts security mechanism.