Does this mean the RS effectively relies on the user agent to enforce the 
sender constraint (via CORS policy)?

> Am 23.11.2018 um 14:54 schrieb Neil Madden <neil.mad...@forgerock.com>:
> 
> Thanks for doing this Daniel, I think the proposed text is good.
> 
> — Neil
> 
>> On 22 Nov 2018, at 14:42, Daniel Fett <danielf+oa...@yes.com> wrote:
>> 
>> Hi all,
>> 
>> I would like to discuss a text proposal for the security BCP.
>> 
>> Background:
>> 
>> Yesterday, Neil pointed out the following problem with binding access tokens 
>> using mTLS or token binding in SPAs:
>> 
>> "I am talking about scripts from places like ad servers that are usually 
>> included via an iframe to enforce the SOP and sandbox them from other 
>> scripts. If they get access to an access token - e.g. via document.referrer 
>> or a redirect or some other leak, then they still act within the same TLS 
>> context as the legitimate client."
>> 
>> The problem is that a browser's TLS stack will attach the proof of 
>> possession no matter which origin started a request.
>> 
>> (This seems like a real downside of token binding - why does it not have the 
>> "same site" option that cookies nowadays have?)
>> 
>> I prepared the following addition to the security BCP and would like to hear 
>> your opinions:
>> 
>> "It is important to note that constraining the sender of a token to a web 
>> browser (using a TLS-based method) does not constrain the origin of the 
>> script that uses the token (lack of origin binding). In other words, if 
>> access tokens are used in a browser (as in a single-page application, SPA) 
>> and the access tokens are sender-constrained using a TLS-based method, it 
>> must be ensured that origins other than the origin of the SPA cannot misuse 
>> the TLS-based sender authentication.
>> 
>> The problem can be illustrated using an SPA on origin A that uses an access 
>> token AT that is bound to the TLS connection between the browser and the 
>> resource server R. If AT leaks to an attacker E, and there is, for example, 
>> an iframe from E's origin loaded in the web browser, that iframe can send a 
>> request to origin R using the access token AT. This request will contain the 
>> proof-of-posession of the (mTLS or token binding) key. The resource server R 
>> therefore cannot distinguish if a request containing a valid access token 
>> originates from origin A or origin E.
>> 
>> If the resource server only accepts the access token in an Authorization 
>> header, then Cross-Origin Resource Sharing (CORS) will protect against this 
>> attack by default. If the resource server accepts the access tokens in other 
>> ways (e.g., as a URL parameter), or if the CORS policy of the resource 
>> server permits requests by origin E, then the TLS-based token binding only 
>> provides protection if the browser is offline."
>> 
>> 
>> The "summary" above this text reads as follows:
>> 
>> "If access tokens are sender-constrained to a web browser, the resource 
>> server MUST ensure that the access token can only be used by the origin to 
>> which the access token was issued (origin binding). One solution for the 
>> resource server to accomplish this is to only accept the access token in an 
>> Authorization header (as described in RFC 6750) and to ensure that the 
>> active CORS policy prevents third parties from sending Authorization 
>> headers. See <xref target="pop_tokens"/> for details."
>> 
>> What do you think?
>> 
>> -Daniel
>> 
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to