Version: | 1.0 |
Date: | 2016-3-29 |
Editor: | Maciej Machulak, Synergetics |
Contributors: | Eve Maler, ForgeRock |
Justin Richer, Bespoke Engineering |
This extension to UMA enhances security by providing an alternate requesting party claims endpoint that alters the claims-gathering process to avoid a session fixation attack.
This document is a draft technical specification produced by the User-Managed Access Work Group. See the Kantara Initiative Operating Procedures for more information.
Copyright © 2016 Kantara Initiative and the persons identified as the document authors. All rights reserved.
This document is subject to the Kantara IPR Policy - Option Patent & Copyright: Reciprocal Royalty Free with Opt-Out to Reasonable And Non discriminatory (RAND) (HTML version).
This extension to the User-Managed Access (UMA) protocol provides enhanced security by defining an alternate requesting party claims endpoint, called the security-enhanced claims endpoint. This endpoint alters the claims-gathering process to generate an unpredictable return URI by returning a new UMA permission ticket value, thereby avoiding an existing session fixation attack. This extension applies to UMA V1.0 [UMA10], UMA V1.0.1 [UMA101], and any version of UMA susceptible to the attack.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in [RFC2119].
Unless otherwise noted, all protocol properties and values are case sensitive. JSON [RFC7159] data structures defined by this specification MAY contain extension properties that are not defined in this specification. Any entity receiving or retrieving a JSON data structure SHOULD ignore extension properties it is unable to understand. Names of such extension properties that are unprotected from collisions are outside the scope of this specification.
Following is a summary of this extension and how its identifying URI is used.
See [UMAsession] for background information on this attack, the provided mitigation, and further discussion.
One of the methods of requesting party trust elevation defined by UMA is redirecting an end-user requesting party to the authorization server for claims-gathering. Since the return URI from this claims-gathering process is predictable, this method is susceptible to a session fixation attack. As a consequence, a malicious requesting party may be able to access a protected resource not intended for access by that party by having a legitimate user supply claims and associate them with the attacker's permission ticket.
This extension mitigates the attack by enhancing the security of the claims-gathering mechanism to return an unpredictable URI, thereby making an attacker unable to guess the return state from the victim's claims-gathering process and halting the attack. The URI is made unguessable by returning a new permission ticket value which the client then uses to interact with the authorization server from that point forward, discarding any previous ticket values in the process. This functionality is implemented through a new security-enhanced claims endpoint that replaces the requesting party claims endpoint; the rest of the claims-gathering process remains unchanged.
Any authorization server intending to use interactive claims-gathering as a means of trust elevation SHOULD implement the extension defined in this specification. Trust elevation through authentication context (requesting party authentication at the authorization endpoint) and pushed claims (claims provided to the RPT endpoint by the client) are not susceptible to this attack.
Preconditions:
Sequence:
To mitigate this attack, an UMA authorization server indicating its conformance to this extension through the identifying URI defined in Section 1.2 and the client conforming to this extension MUST do the following.
This document makes no requests of IANA.
The following people made significant contributions to the Work Group's understanding of the attack (in alphabetical order):
It is essential for an authorization server to handle only one style of claims gathering for clients. An authorization server must not allow clients to use both the requesting party claims endpoint and the security-enhanced claims endpoint to be used simultaneously, since it is impossible for the authorization server to differentiate between a legitimate request from a non-upgraded client (using a fixed permission ticket value) from a compromised client using the new protocol (and simply ignoring the new ticket value).
[UMA10] | Hardjono, T., “User-Managed Access (UMA) Profile of OAuth 2.0, Version 1.0”, April 2015, <https://docs.kantarainitiative.org/uma/rec-uma-core-v1_0.html>. |
[UMA101] | Hardjono, T., “User-Managed Access (UMA) Profile of OAuth 2.0, Version 1.0.1”, December 2015, <https://docs.kantarainitiative.org/uma/rec-uma-core-v1_0_1.html>. |
[RFC2119] | Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>. |
[RFC7159] | Bray, T., Ed., “The JavaScript Object Notation (JSON) Data Interchange Format”, RFC 7159, DOI 10.17487/RFC7159, March 2014, <http://www.rfc-editor.org/info/rfc7159>. |
Maciej Machulak
(editor)
Synergetics
EMail: maciej@synergetics.be
Eve Maler
ForgeRock
EMail: eve.maler@forgerock.com
Justin Richer
Bespoke Engineering
EMail: kantara@justin.richer.org