[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVE-2011-2731: Spring Security privilege escalation when using RunAsManager



CVE-2011-2731: Spring Security privilege escalation when using RunAsManager

Severity: Moderate

Versions Affected:
2.0.0 to 2.0.6
3.0.0 to 3.0.5
Earlier versions may also be affected

Description:
Spring Security provides a mechanism (RunAsManager) to allow particular 
operations to run with a different set of privileges than the predefined user. 
The implementation contains a race condition whereby the escalated privileges 
could also be used in a different invocation in another thread.

Example:
If the RunAsManager returns an Authentication object for the current 
invocation, the security interceptor will temporarily store this in the 
security context for the duration of the invocation. This authentication object 
would be shared with other concurrently executing threads, leading to a 
possible escalation of privileges in those threads.

Mitigation:
If you are not using a RunAsManager implementation, then you are not affected 
by this issue.
All users may mitigate this issue by upgrading to 3.0.6
Users of 2.0.x may upgrade to 2.0.7

Fix:
This issue was fixed by ensuring that the a new thread-local security context 
is created during run-as replacement and the temporary authentication token 
copied to it.

Credit:
The issue was discovered by Rob Winch.

History:
2011-09-09: Original advisory

References:
[1] http://www.springsource.com/security/cve-2011-2731