I will point out for clarification that this would be like IdP discovery in 
openID 2 that everyone did.  I think IdP not doing RP discovery in openID 2 is 
a weak argument.
There may be other evidence that RP will not do discovery, but if that is the 
case why are we doing a OAuth discovery spec?  
Many people see your spec as discovery as well just in a different way.

I think both ways can work, but doing both leaves too many options. 

John B.


> On Jan 21, 2016, at 9:38 PM, Nat Sakimura <sakim...@gmail.com> wrote:
> 
> Still doing the analysis. We spent 1.5 hours today with John, George, nov and 
> me on the OpenID Connect WG call on this issue. John explained the 
> mitigation, but none of us was convinced that it works. 
> 
> Then, after the call, I and nov went on with various scenarios. The interim 
> conclusion is that: 
> client_id response parameter does not help. There are legitimate cases that 
> client_id duplicates out there and we cannot ban that.  
> iss response parameter does not help unless the discovery is performed and 
> the value of iss is checked against the value of OAuth issuer inside the 
> document. (<- Discovery becomes mandatory. From our experience on RP 
> discovery step in OpenID 2.0, chance of this being done properly seems to be 
> rather slim.) 
> sending the state to the token endpoint helps in the case code was stollen, 
> but code should not be stolen to start with. 
> Cheers, 
> 
> Nat
> 
> 
> 2016年1月22日(金) 7:59 John Bradley <ve7...@ve7jtb.com 
> <mailto:ve7...@ve7jtb.com>>:
> There have been a lot of discussions. I think Hannes posted some minutes of 
> the F2F meeting we had with the security researchers.
> 
> The problem can’t be mitigated without some action on the client side.  It 
> boils down to the client making a request to AS1 (From it’s perspective) and 
> getting back a response from AS 2 (that it thinks is AS1)
> 
> This can be done if AS1 is a good AS but has it’s logs compromised so that an 
> attacker can read them. Hans Zandbelt built a proof of concept for the 
> attack. 
> 
> In some cases the attacker gets the code and the credential to use it at the 
> good AS token endpoint and in others it just gets the code and can replay 
> that at the client to extract information from the API through the client by 
> binding the api access to a new account.
> 
> PKCE unfortunately mitigates a different attack, where the client is 
> impersonated and trys to replay a intercepted code.  It however assumes the 
> token endpoint is good, and is no help in the case of a compromised token 
> endpoint.
> 
> The client in these attacks is vulnerable because it relies on some local 
> state, or the value of the state parameter to know who the response is coming 
> from.  This allows a authorization request that is intercepted to be used to 
> create a new request in that browser to a different AS, or trick the client 
> into using a Authorization endpoint for a different authorization server.
> 
> One problem is that OAuth doesn’t really have a unified concept of what a AS 
> is.  Traditionally it is a Authorization endpoint URI, token end point URI 
> and resource server URI that some one gives the client in some documentation. 
>   
> 
> As ling as a client only talks to one AS then there is no problem.   However 
> once a client is configured to talk to more than one AS, we have problems if 
> one of those AS lies about it’s endpoints, or is compromised and used to 
> attack another AS.   As a design goal you don’t want the overall  security to 
> be limited by the weakest system.
> 
> One approach as Nat promotes is to have the authorization endpoint return the 
> next hop, token endpoint for code or RS URI for token. The token endpoint 
> must also return the RS URI or the client must push the RS URI to the token 
> endpoint or the attacker just replaces the RS URI in the config and captures 
> the token that way. 
> 
> The other way is to provide a name for each AS as part of registration and 
> the client not allow duplicate registrations with the same name.  When the 
> response comes back the client checks the name against the one it made the 
> request to.  If the name dereferences to a discovery document then the client 
> can check that name at registration or runtime to validate the net hops.
> 
> I think the two approaches mitigate the attack in similar ways.  Nat’s is 
> more REST friendly and returns the next hop as a parameter of header.  
> 
> The one Mike and I wrote up based on the meeting in Germany provides 
> identifiers (iss and client_id) that can be checked for validity in the 
> simple case and be dereferenced via .well-known to get the information Nat’s 
> proposal is providing.
> 
> Perhaps the main difference is Nat is using the token endpoint as the 
> identifier for the AS and Mike’s is using location for a discovery document 
> as the identifier.
> 
> I don’t recall the reasons using the token endpoint as the identifier was 
> rejected at the meeting.  Perhaps others can post the reasons.
> 
> We need to close on this quickly, otherwise if we are indecisive fixes will 
> not go into products for another year or so until this is a RFC.
> 
> That is my main concern.
> 
> John B.
> 
> 
> 
> 
> 
>> On Jan 21, 2016, at 11:50 AM, Josh Mandel <jman...@gmail.com 
>> <mailto:jman...@gmail.com>> wrote:
>> 
>> Thanks Nat - that's helpful. If both mitigations *can* work effectively, 
>> then I would like to see this group consider the decision between them 
>> carefully (if that hasn't happened yet). Again, don't hesitate to let me 
>> know if this is the wrong place/time for such discussion.
>> 
>> At a high level, I would rather ask server developers to do some "coding", 
>> for two reasons:
>> 
>> 1. Most OAuth servers talk to many, many clients. So consolidating the 
>> security critical work in one place (server) is a net savings of work 
>> (rather than asking each client to implement these checks.
>> 
>> 2. OAuth server developers are typically more sophisticated than client 
>> developers, and therefore more likely to understand the implications and 
>> more likely to get these critical details correct. Asking each client 
>> developer to do something right is likely to result in heterogenius 
>> implementation and persistent security holes. But if the server does the 
>> heavy lifting, and clients just have to pass along an extra parameter, this 
>> is more likely to see consistent implementation (for example, clients will 
>> fail to work if misconfigured, which will prompt developers to fix them).
>> 
>> On Jan 21, 2016 09:40, "Nat Sakimura" <sakim...@gmail.com 
>> <mailto:sakim...@gmail.com>> wrote:
>> Hi Josh, 
>> 
>> It is similar but slightly different IMHO. 
>> 
>> Section 4.6.4 of the RFC6819 is the access token phishing by a counterfeit 
>> resource server. 
>> The mix-up attack described here is the code phishing by a counterfeit token 
>> endpoint. 
>> 
>> In my view, both can be mitigated by the server returning the next step: 
>> i.e., authorization endpoint returning the legitimate token endpoint uri, 
>> and token endpoint returning legitimate resource endpoint uris. This 
>> involves no discovery endpoint, which is good. 
>> 
>> Your way also works. It is just the reverse of my proposal. The difference 
>> being that my proposal does not need any coding on the server but just 
>> configuration, and it can return more metadata if needed. 
>> 
>> Cheers, 
>> 
>> Nat
>> 
>> 2016年1月21日(木) 23:04 Josh Mandel <jman...@gmail.com 
>> <mailto:jman...@gmail.com>>:
>> Apologies if this is the wrong forum for my comment (and please direct me to 
>> the appropriate place in that case), but I have two questions about the 
>> propose mitigation (and the thinking behind it) that I think the write-up 
>> could address:
>> 
>> 1. Could the writeup clarify whether/how the primary "mixup" threat differs 
>> from what RFC6819 identifies as in section 4.6.4?
>> 
>> 2. Has the workgroup considered a mitigation that puts more responsibility 
>> on the authorization server, and less on the client? For example, if would 
>> be helpful for the writeup to clarify why having the client send an 
>> "audience field" (in the terminology of RFC6819) to the authorization 
>> endpoint would not mitigate the threat. (In that scenario, the authorization 
>> server can recognize that the audience does not correspond to a resource 
>> server it knows, rather than asking clients to make this check). I assume 
>> this approach has been considered and rejected as an incomplete mitigation, 
>> but I don't have visibility into where/how that discussion went.
>> 
>> Thanks,
>> 
>> Josh 
>> Hi all,
>> 
>> this is the call for adoption of OAuth 2.0 Mix-Up Mitigation, see
>> https://tools.ietf.org/html/draft-jones-oauth-mix-up-mitigation-00 
>> <https://tools.ietf.org/html/draft-jones-oauth-mix-up-mitigation-00>
>> 
>> Please let us know by Feb 9th whether you accept / object to the
>> adoption of this document as a starting point for work in the OAuth
>> working group.
>> 
>> Note: This call is related to the announcement made on the list earlier
>> this month, see
>> http://www.ietf.org/mail-archive/web/oauth/current/msg15336.html 
>> <http://www.ietf.org/mail-archive/web/oauth/current/msg15336.html>. More
>> time for analysis is provided due to the complexity of the topic.
>> 
>> Ciao
>> Hannes & Derek
>> 
>> 
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>> https://www.ietf.org/mailman/listinfo/oauth 
>> <https://www.ietf.org/mailman/listinfo/oauth>
>> 
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>> https://www.ietf.org/mailman/listinfo/oauth 
>> <https://www.ietf.org/mailman/listinfo/oauth>
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>> https://www.ietf.org/mailman/listinfo/oauth 
>> <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