Hi Daniel,

Thank you for pointing to your dissertation which has the following title : An Expressive Formal Model of the Web Infrastructure.

Since it is 240 pages long (or thick), I have not read everything but some sentences brought my attention.

I have experienced formal models in the past and everything depends upon the hypothesis that are made upfront.

On page 28:

   1.1.1. The Web Infrastructure Model

   (...)
   Altogether, the model is the *most comprehensive and detailed model
   for the web infrastructure to date* [i.e. in year 2018].
   (...)

On page 40, there is the following sentence:

   *A browser is thought to be used by one honest user*, who is modeled
   as part of the browser.


With such an hypothesis, it is impossible to consider a collusion attack between clients, hence the Model omits to consider such a case. When using a formal approach, it is generally not possible to make sure that all attacks have been considered, but when considering specific attacks, it is possible to demonstrate that they can be countered (or not).

Many models are considering "adversaries". This originates from the "Alice, Bob and Carol model" where both Alice and Bob were honest and where Carol was the attacker. In the case of the "Alice and Bob Collusion attack", Alice and Bob are good friends. The target of the attack is a RS. The RS is not an adversary : it does nothing bad. Alice and Bob are adversaries towards Carol (the RS).
This can bee seen as the revenge of "Alice and Bob" against Carol.  :-)

On page 29, the text states:

   Model of OAuth 2.0

   Using our generic web model, we build a formal model of OAuth,
   closely following the OAuth 2.0 standard [RFC6749].

On page 72, Figure 3.1 there is a diagram flow that is rather different from the diagram flow that is present in RFC 6749 Figure 1. In Figure 3.1,  an entity combines the roles of the AS and the RS whereas in Figure 1 : Abstract Protocol Flow (Page 7), these two roles are under the control of two separate entities. This means that the formal Model of OAuth is NOT closely following the OAuth 2.0
standard [RFC 6749].

On page 29, the text continues with:

   Our model includes clients and AS/RS that (simultaneously) support
   all four modes of operation available in OAuth and
   *can be dynamically corrupted by the adversary*.

With the ABC attack, clients are not /dynamically corrupted by an adversary/, since Alice and Bob voluntarily cooperate to achieve a common goal: to cheat a RS. As a consequence, the dissertation does not consider collaborative clients or collusion between clients.

The same problem appeared with the ABC4Trust EU project (Attribute-based Credentials for Trust) which has now ended. *U-Prove* from Microsoft and *Identity Mixer* from IBM were used as a demonstrating technology of the principles. However during the project, no one ever considered the case of the Alice and Bob collusion attack. So all experts involved in this project believed that these two technologies were secure, whereas they were not, even when smart cards were being used.

You wrote :

   " A commonly accepted security property for OAuth would be:

      An attacker should not be able to obtain access to or use a
   protected resource protected by an uncompromised AS
      if that resource is only used by an honest user with an
   uncompromised client and user agent."

This sentence has nothing to do with a "security property". This term is defined in ISO/IEC TS 19249:2017, 3.1:

   *security property*
   *property* of a system or application *that is crucial to achieve
   the security objectives defined for the system or application*

On the contrary, it is *c**rucial to prevent collaborative users to cheat a RS using an uncompromised AS*.

You also wrote:

   Being resistant to collusion attacks is not a commonly
   accepted/expected security property.

Being resistant to collusion attacks is indeed a security property.

Considering only honest users is an hypothesis that does not correspond to the real world. Currently, when reading the current document even through the lines, it is impossible to guess that the ABC attack may ever exist.

Now, the question is : Is OAuth 2.0 able to meet such a property ? I read again my previous emails and the answer is ... *YES*.

I considered two cases:

   a) When the JWT contains one or more attributes that uniquely allow
   to identify the collaborative user, then the other client
   will be in a position to impersonate the collaborative user. There
   is no advantage for Alice because she will simply be able to
   impersonate Bob and she will not take any advantage of the
   attributes from Bob for herself.

   b) When the JWT does not contain a sufficient number of attributes
   that would allow to identify the user,
   the collaborative user can transmit it to anybody else, without the
   risk to be detected by the RS.  E.g. it
   only contains the age of the user and a membership to a large group
   of people. This case can only be countered
   using secure elements with specific properties.

When the token contains one or more attributes that uniquely allow to identify the collaborative user (e.g. a "sub" claim), then Alice can only impersonate the collaborative user and such a case can easily be obtained using TeamViewer.

     * Unfortunately using the "sub" claim is not "privacy friendly",
       since collaborative RSs will be able to link the accounts
       of their respective users.  Nevertheless, this a good news for
       Vittorio, since the "sub" claim is REQUIRED in the
       "Profile for OAuth 2.0 Access Tokens". This means that, *when
       this profile is being used, OAuth 2.0 is resistant **to
       the ABC attack*.

     * Using a different claim that would only contain an identifier
       that is unique to the RS (such as a pseudo) would be
       more appropriate (as FIDO does), but I am not aware of a claim
       that has been defined which would have such a semantics.

The "_Updated _OAuth 2.0 Attacker Model" is supposed to have been "updated to account for the potentially _dynamic relationships involving multiple parties_. As explained above, this is not the case for clients since multiple clients have not been considered. This is also not the case for RSs since multiple RSs have not been considered.

Anyway, in order to correctly explain the cases, there needs to be a discussion in this document both about the ABC attack _and_ the content of the token. There should also be a discussion about multiple RSs where an RS attempts to forward a received token to another RS. Even if the countermeasure is obvious, it should be mentioned in this document.

To summarize my findings about the dissertation, it is not able to address these cases since it only consider attackers that can either be :

 * "Web attackers (who can listen to and send messages from their own
   addresses only)" or
 * "Network attackers (who may listen to and spoof all addresses and
   therefore are the most powerful attackers)".

Denis

Hi Denis,

Am 07.05.20 um 14:46 schrieb Denis:
(...)

A new definition for the term client should be adopted for this document.  However, you are right, the two wordings shall remain.

I cannot follow any of this, sorry.


3) The "_Updated _OAuth 2.0 Attacker Model" is supposed to have been "updated to account for the potentially _dynamic relationships involving multiple parties_". However, it still misses to address the case of _dynamic relationships between clients_, which include scenarios of _collaborative clients_.

That is not correct. Web attackers (A1) can participate in the protocol as one or more users (resource owners) or clients. Of course, these can collaborate between each other.

Section 3 states:

*OAuth MUST ensure that* the authorization of the resource owner (RO)  (with a user agent) at the authorization server (AS) and    the subsequent usage of the access token at the resource server (RS) *is protected _at least_ against the following attackers*:

  *  (A1) *Web Attackers *(...)

If a collaboration / collusion between clients were covered under this case, then it would mean that *OAUTH MUST provide a protection for it*,
whereas this is technically impossible.

You are confusing the attacker model with the security goals (aka security properties).

A commonly accepted security property for OAuth would be:

"An attacker should not be able to obtain access to or use a protected resource protected by an uncompromised AS if that resource is only used by an honest user with an uncompromised client and user agent."

(roughly equivalent to the one in https://elib.uni-stuttgart.de/bitstream/11682/10214/1/%27An%20Expressive%20Formal%20Model%20of%20the%20Web%20Infrastructure.pdf)

Being resistant to collusion attacks is not a commonly accepted/expected security property.

So: Yes, attackers are free to collude, and that is part of the model. No, that is not a problem, as they are not breaking anything anyone would expect.

-Daniel


Since AOuth is unable to protect against a collusion attack between clients, the collusion attack cannot belong to this section, in particular under (A1).

Section 3 is confusing the threat model with the resistance of OAuth to these threats.

At this time, an RFC reader may not catch the fact that a collusion attack between clients may ever exist and thus may not grasp the fact that this kind of attack cannot be countered by OAuth, even when following the Best Practices.

The "Updated OAuth 2.0 Attacker Model" does not take into "account for the potentially _dynamic relationships involving multiple parties_". as it is advertised, in particular the case of _dynamic relationships between clients_ which include the case of _collaborative clients_.

The text currently does not  incorporate words like "collusion", "colluding", whereas it should. The text should clearly indicate that a protection against a collusion between clients is currently not possible using OAuth.

Such a collaboration between clients is possible and should be considered in the "updated model".

This is considered in the model.

See my comments above. While promised by the text, the case of collaborative clients is not considered in the model.

which are human beings, it cannot be assumed that all the human beings in the world will necessary be honest. Whether or not Auth 2.0 is able or not
to counter such an attack is another issue.

This as well.

As said above, the model should only express the threats (or the possible attacks) and another section should indicate which threats cannot countered.

In another section, it should be mentioned that OAuth 2.0 is unable to counter such an attack.

The problem is not that this type of collusion attack is not possible under the model. The problem is it is not commonly expected that OAuth protects against this type of attack.

RFC readers who have not followed or participated to this thread will not necessarily know that OAuth does not protect against this type of attack.

The purpose of this document is to inform the reader about _all_ known types of attacks, whether they can be defeated or not by OAuth 2.0.

Denis

-Daniel

Stating that such an attack is "out of the scope" of OAuth 2.0 would not be an appropriate statement.

It should not be forgotten, that the purpose of this document is to inform the reader about _all_ the relevant security issues.

Denis

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Web Authorization Protocol WG of the IETF.

         Title           : OAuth 2.0 Security Best Current Practice
         Authors         : Torsten Lodderstedt
                           John Bradley
                           Andrey Labunets
                           Daniel Fett
        Filename        : draft-ietf-oauth-security-topics-15.txt
        Pages           : 46
        Date            : 2020-04-05

Abstract:
    This document describes best current security practice for OAuth 2.0.
    It updates and extends the OAuth 2.0 Security Threat Model to
    incorporate practical experiences gathered since OAuth 2.0 was
    published and covers new threats relevant due to the broader
    application of OAuth 2.0.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-oauth-security-topics/

There are also htmlized versions available at:
https://tools.ietf.org/html/draft-ietf-oauth-security-topics-15
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-15

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-oauth-security-topics-15


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


_______________________________________________
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



_______________________________________________
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



_______________________________________________
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

Reply via email to