Re: [OAUTH-WG] AD review of draft-ietf-oauth-threatmodel-05

Phil Hunt <phil.hunt@oracle.com> Thu, 02 August 2012 18:07 UTC

Return-Path: <phil.hunt@oracle.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C6E5011E81E4 for <oauth@ietfa.amsl.com>; Thu, 2 Aug 2012 11:07:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.717
X-Spam-Level:
X-Spam-Status: No, score=-9.717 tagged_above=-999 required=5 tests=[AWL=-0.319, BAYES_00=-2.599, J_CHICKENPOX_43=0.6, J_CHICKENPOX_52=0.6, RCVD_IN_DNSWL_HI=-8, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4404j+Ai+bvC for <oauth@ietfa.amsl.com>; Thu, 2 Aug 2012 11:07:11 -0700 (PDT)
Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by ietfa.amsl.com (Postfix) with ESMTP id 0725D11E81BF for <oauth@ietf.org>; Thu, 2 Aug 2012 11:07:10 -0700 (PDT)
Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q72I6tWv021583 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Aug 2012 18:06:56 GMT
Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q72I6rqf009419 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 2 Aug 2012 18:06:53 GMT
Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q72I6q2V030673; Thu, 2 Aug 2012 13:06:52 -0500
Received: from dhcp-1578.meeting.ietf.org (/130.129.21.120) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 02 Aug 2012 11:06:52 -0700
Mime-Version: 1.0 (Apple Message framework v1278)
Content-Type: text/plain; charset="iso-8859-1"
From: Phil Hunt <phil.hunt@oracle.com>
In-Reply-To: <501AB920.1070007@cs.tcd.ie>
Date: Thu, 02 Aug 2012 11:06:49 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <38A1F1F5-3404-45A1-95AB-0D6F746FC763@oracle.com>
References: <4FC3C53E.8020704@cs.tcd.ie> <4FEB4B0C.2030700@lodderstedt.net> <4FEBA286.6020003@cs.tcd.ie> <FF22A4BE-653B-45C8-BD1F-43C5DD3A0B03@oracle.com> <501AB920.1070007@cs.tcd.ie>
To: Stephen Farrell <stephen.farrell@cs.tcd.ie>
X-Mailer: Apple Mail (2.1278)
X-Source-IP: acsinet22.oracle.com [141.146.126.238]
Cc: Derek Atkins <derek@ihtfp.com>, "oauth@ietf.org" <oauth@ietf.org>, Barry Leiba <barryleiba@computer.org>
Subject: Re: [OAUTH-WG] AD review of draft-ietf-oauth-threatmodel-05
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 02 Aug 2012 18:07:15 -0000

Stephen,

I just realized we do have a deliverable to amend for a substitution attack that came up late in the OAuth Core document. We are putting in a parallel paragraph in the Threat Model document.

Expect a new draft shortly. 

Phil

@independentid
www.independentid.com
phil.hunt@oracle.com





On 2012-08-02, at 10:30 AM, Stephen Farrell wrote:

> 
> Since I'm told this is now ready, I've put this on the August 30th
> telechat. Note there is an RFC editor note [1] calling for making
> the reference to oauth core normative.
> 
> S.
> 
> [1]
> https://datatracker.ietf.org/doc/draft-ietf-oauth-v2-threatmodel/writeup/
> 
> On 06/28/2012 04:21 AM, Phil Hunt wrote:
>> Stephen
>> 
>> One more threat has come up in the core spec that is being looked at. As Torsten is heading out on vacation I have agreed to augment if needed with any supplementary text to the threat model.
>> 
>> Will keep you informed. 
>> 
>> Phil
>> 
>> On 2012-06-27, at 17:17, Stephen Farrell <stephen.farrell@cs.tcd.ie> wrote:
>> 
>>> 
>>> Hiya,
>>> 
>>> Great. I've asked for IETF LC to start. I'll go through
>>> the changes below during that in case there's some more
>>> follow up.
>>> 
>>> Thanks,
>>> S.
>>> 
>>> On 06/27/2012 07:03 PM, Torsten Lodderstedt wrote:
>>>> Hi Stephen,
>>>> 
>>>> I just submitted a new revision of the security document incorporating
>>>> your review comments.
>>>> 
>>>> Please find answers to your comments below.
>>>> 
>>>> Thank you again for your detailed review. You helped us to significantly
>>>> improve the document's quality.
>>>> 
>>>> best regards,
>>>> Torsten.
>>>> 
>>>> Am 28.05.2012 20:34, schrieb Stephen Farrell:
>>>>> Hi all,
>>>>> 
>>>>> I've gotten the publication request for oauth-threatmodel
>>>>> so here's my AD review of -05.
>>>>> 
>>>>> Its quite a read (and a good one) but I've a bunch of
>>>>> questions. Some of these will need fixing I suspect
>>>>> but a lot are ok to fix later after IETF LC, depending
>>>>> on whether the authors want to re-spin it before then
>>>>> or not. But I'd like to at least see reactions to the
>>>>> questions before I start IETF LC.
>>>>> 
>>>>> Although there are many many nits and typos, those
>>>>> don't actually make the document unreadable so
>>>>> though I'd prefer to see 'em fixed now, I'm ok with
>>>>> that happening later if its a problem to get it
>>>>> all done now.
>>>>> 
>>>>> If you want to argue for going ahead with IETF LC
>>>>> now please do so, but I suspect that this might need
>>>>> a revised ID to fix at least a couple of the points
>>>>> raised below. If nobody does argue to go ahead now,
>>>>> I'll mark it as revised ID needed, but first let's
>>>>> see what the answers are to the questions.
>>>>> 
>>>>> Cheers,
>>>>> S.
>>>>> 
>>>>> 
>>>>> (1) s/RFC1750/RFC4086/ is needed as noted in the write-up.
>>>> done
>>>>> (2) You don't say anything about the probability of
>>>>> occurrence of the various threats. I realise that you
>>>>> can't be precise but it seems wrong to say nothing.  Would
>>>>> it be worth at least saying that that's not done here and
>>>>> that readers of this document need to do their own risk
>>>>> analysis including that aspect?
>>>> 
>>>> That's correct - I added the following paragraph to the introduction:
>>>> 
>>>> "Note: This document cannot assess the probability nor the risk
>>>> associated with a particular threat because those aspects strongly
>>>> depend on the particular application and deployment OAuth is used to
>>>> protect. Similar, impacts are given on a rather abstract level. But the
>>>> information given here may serve as a foundation for deployment-specific
>>>> threat models. Implementors may refine and detail the abstract threat
>>>> model in order to account for the specific properties of their
>>>> deployment and to come up with a risk analysis."
>>>> 
>>>>> (3) Many deployments will use TLS accelerators.  That
>>>>> means that TLS isn't fully e2e, and that opens up some
>>>>> (mainly) insider attacks or attacks that can be launched
>>>>> from within a compromised DMZ, but from outside the server
>>>>> applications. Does that need a mention somewhere? (I've
>>>>> seen systems like that deployed and a lot could go wrong
>>>>> from the inside, so I think this is a real threat.)
>>>> 
>>>> I added another paragraph to section 5.1.1:
>>>> 
>>>> "Note: this document assumes end-to-end TLS protected connections
>>>> between the respective protocol entities. Deployments deviating from
>>>> this assumption by offloading TLS in between (e.g. on the data center
>>>> edge) must refine this threat model in order to account for the
>>>> additional (mainly insider) threat this may cause."
>>>> 
>>>>> (4) Could you use just one of "client identity" or "client
>>>>> identifier" consistently? I'd much prefer the latter,
>>>>> which has also been the outcome of various discussions on
>>>>> this topic elsewhere. For example you say "revocation of
>>>>> such an identity" at the end of p13, and that's a
>>>>> potential rathole, better to say "revocation of the rights
>>>>> associated with a client identifier" or similar I think.
>>>>> And similar changes throughout.
>>>> 
>>>> Replaced client identity by client identifier in most places and
>>>> incorporated your proposed text
>>>> 
>>>>> (5) 4.4.2.2: Here you recommend native applications should
>>>>> use an embedded browser, but earlier you said that was a
>>>>> bad idea. I think you need to be consistent or else
>>>>> provide more about when its ok to embed and when its not.
>>>>> Did I misread it or does that need a change?
>>>> 
>>>> removed 3rd bullet as native apps should use code flow
>>>> 
>>>> We also removed the 1st bullet in 4.4.1.9
>>>> 
>>>>> (6) 4.4.3.1: This calls for "obfuscation" of passwords in
>>>>> logs. I think you ought be stronger there and call for
>>>>> strong encryption of passwords wherever they are stored,
>>>>> be that logs or DBs or whatever. Would'nt that be reasonable?
>>>> 
>>>> This section is about preventing accidential exposure by the client. I
>>>> think encryption is not appropriate here since the password is entered
>>>> in the clear by the user. I added the advice to encrypt credentials as
>>>> alternative means to salted hashes to 5.1.4.1.3.
>>>> 
>>>>> (7) 4.6.4: 1st countermeasure: I don't think you mean
>>>>> address here (in the sense of an IP address, which is what
>>>>> that means) but rather the domain name or FQDN or URL.  In
>>>>> any case, you need to say what is meant clearly.  (Also in
>>>>> 5.1.5.6 and elsewhere when you use the term "address".)
>>>> 
>>>> replaced address in most cases by URL and in some place by FDQN
>>>> 
>>>>> (8) 4.6.6: You say to use Cache-Control, but don't say
>>>>> how.  Is more needed really? Maybe there's a good document
>>>>> you could reference for that? (I'm not suggesting you add
>>>>> a lecture on caching btw:-)
>>>> 
>>>> Added text from core spec describing usage of Cache-Control and Pragma
>>>> response header fields
>>>> 
>>>>> (9) 5.1.1: needs a reference to RFC 5246 (and better to
>>>>> just say TLS and not say SSL, at least for me :-)
>>>> 
>>>> done
>>>>> (10) 5.1.1: needs a reference to whatever you mean by
>>>>> "VPN" since there are many types of VPN. I assume you mean
>>>>> an IPsec VPN? But even if not, saying more would be good.
>>>> 
>>>> Extended description and added reference to RFC 4301.
>>>>> (11) 5.1.2: needs a reference to RFC 5280 and/or RFC 6125
>>>>> and/or RFC 2818. Bascially, you need to say how this is
>>>>> done (by reference).
>>>> 
>>>> Added reference to RFC 2818 since it seems to be closest to the problem
>>>> 
>>>>> (12) 5.1.4.1: Isn't there some good reference you can give
>>>>> here? (Having said that, I'd have to go look myself, but
>>>>> I'd maybe start with owasp or sans.)
>>>> 
>>>> added reference to OWASP
>>>> 
>>>>> (13) 5.1.4.2.2: if p(collision) should be <=2^(-160) then
>>>>> what's the point of saying it ought be <= 2^(-128)? Also
>>>>> if sha-1 were perfect, then the 160 bits output would
>>>>> really have a collision probability of about 2^(-80) with
>>>>> many many tokens, but not 2^(-160). I think you need
>>>>> to fix something there.  Perhaps you're really saying that
>>>>> all high-entropy secrets should be >=128 bits long and
>>>>> constructed with a good (P)RNG? If so, saying so more
>>>>> clearly would be better. Not everyone will get the
>>>>> collision probability way of saying that even when its
>>>>> properly stated. (This text is also repeated, be better if
>>>>> you just said this once I think.)
>>>> 
>>>> modified text as follows
>>>> 
>>>> "When creating secrets not intended for usage by human users (e.g.
>>>> client secrets or token handles), the authorization server should
>>>> include a reasonable level of entropy in order to mitigate the risk of
>>>> guessing attacks. The token value should be >=128 bits long and
>>>> constructed from a cryptographically strong random or pseudo-random
>>>> number sequence (see [RFC4086] for best current practice) generated by
>>>> the Authorization Server."
>>>> 
>>>> removed 5.1.5.11. (redundant text) and updated references accordingly
>>>> 
>>>>> (14) 5.1.5.2: what is a "reasonable duration" - I don't
>>>>> think its ok to say that but nothing else. Can't you give
>>>>> some "reasonable" examples based on current usage?
>>>> 
>>>> added examples and explanation of factors determining reasonable
>>>> expiration time
>>>> 
>>>> "Tokens should generally expire after a reasonable duration. This
>>>> complements and strengthens other security measures (such as signatures)
>>>> and reduces the impact of all kinds of token leaks. Depending on the
>>>> risk associated with a token leakage, tokens may expire after a few
>>>> minutes (e.g. for payment transactions) or stay valid for hours (e.g.
>>>> read access to contacts).
>>>> 
>>>> The expiration time is determined by a couple of factors, including:
>>>> 
>>>> - risk associated to a token leakage
>>>> - duration of the underlying access grant,
>>>> - duration until the modification of an access grant should take effect,
>>>> and
>>>> - time required for an attacker to guess or produce valid token."
>>>> 
>>>>> (15) 5.1.5.5: needs a reference to SAML assertions with
>>>>> the current text.
>>>> 
>>>> done - also added reference to RFC4120 in section 3.1
>>>>> (16) 5.2.2.3: this describes a refresh token rotation
>>>>> scheme that I don't recall being discussed on the list, so
>>>>> this is just to check that that rotation scheme, as
>>>>> described, doesn't ring any alarms bells for the WG. If
>>>>> not, that's fine. And if it was discussed on the list and
>>>>> I've forgotten, then sorry about that:-)
>>>> 
>>>> It has been discussed, the first time with the introduction of the
>>>> option to return a new referesh token value in response to a refresh
>>>> token grant request. A more recent discussion can be found here:
>>>> http://www.ietf.org/mail-archive/web/oauth/current/msg06974.html
>>>> 
>>>>> (17) 5.2.2.5: Using IMEI's like this has privacy
>>>>> implications that I think you ought call out. A single
>>>>> sentence and a reference to something that says "be
>>>>> careful about privacy here" would be fine I'd say. (And
>>>>> you need a reference for "IMEI" and to expand the term.)
>>>> 
>>>> added note and reference to respective 3gpp spec
>>>> 
>>>>> (18) 5.2.2.6: needs a reference for X-FRAME-OPTION.
>>>>> There's a websec draft about that I think.
>>>> 
>>>> added reference to
>>>> http://tools.ietf.org/html/draft-gondrom-x-frame-options/
>>>>> (19) 5.2.3.4: what do you mean when you say "for different
>>>>> deployments of a client"? That could be one secret per
>>>>> install or one secret for all customers of a mobile
>>>>> operator and those are radically different. I think you
>>>>> need to be clear and hope you mean the former. That's
>>>>> almost cleared up in the 3rd paragraph of the section but
>>>>> I wanted to just check. Not sure "deployment" is the best
>>>>> term there really - what's wrong with "installation"?
>>>> 
>>>> nothing is wrong with "installation" :-)
>>>> 
>>>> replaced deployment by installation and partially re-phrased section
>>>> 
>>>>> (many:-) nits and typos:
>>>>> 
>>>>> 2.3.1: maybe explain "handle-based design" or give a
>>>>> reference? (Or maybe just a forward ref to 3.1?)
>>>> 
>>>> added ref to 3.1
>>>>> 2.3.3: It might be worth re-iterating that the term
>>>>> "client" in oauth is used differently, e.g.  by copying a
>>>>> bit of text from the base spec. I can see folks being
>>>>> confused by this otherwise.
>>>> 
>>>> copied a sentence from base spec and extended description
>>>> 
>>>>> 3.1: "is digitally signed" - do you mean it has data
>>>>> integrity and origin authentication?  If MACs are commonly
>>>>> used (or maybe authenticated encryption), and not
>>>>> necessarily signatures, then saying that would be better.
>>>> 
>>>> we mean data integrity and origin authentication - added some text to
>>>> explain this
>>>> 
>>>>> 3.1.2: typo: s/this mechanisms/this mechanism/
>>>>> 
>>>>> 3.1.2: maybe s/Expires_In/expires_in/ to match the case in
>>>>> the base spec? I think it'd be better not to capitalise
>>>>> this in case it finds its way into someone's code. You
>>>>> could also use "Expires In" in the title and then say that
>>>>> its "expires_in" in the protocol. Might be worth doing
>>>>> something generic to call out when you're talking about
>>>>> specific things from the protocol, e.g. use a convention
>>>>> like ``expires_in'' or "expires_in" consistently and say
>>>>> that in the intro.
>>>> 
>>>> Renamed section to "Limited access token limetime" and changed wording
>>>> to explicitely distinct between concept and protocol parameter.
>>>> 
>>>>> 3.4: typo: s/the later/the latter/
>>>>> 
>>>>> 3.4: bullet item 1 isn't really a reason for anything but
>>>>> a downside of doing this, at least as written. Maybe this
>>>>> needs to be tweaked?
>>>> 
>>>> tweaked it
>>>>> 3.6: expand CSRF on 1st use and maybe give a reference
>>>>> CSRF is expanded in 4.4.1.8 which is a good bit later,
>>>>> and also in 4.4.2.5 which could presumably be
>>>>> shortened a bit by removing the repetition.
>>>> 
>>>> expanded CSRF a bit, added forward reference to 4.4.1.8 and shortened
>>>> 4.4.2.5
>>>> 
>>>>> 3.7: typo: s/collage associated request/collate associated
>>>>> requests/
>>>>> 
>>>>> 3.7: Maybe give a pointer to the definition of "native
>>>>> application" in the base spec (Its section 9 of that.)
>>>>> 2nd last para of p13 would be a good place for that.
>>>> 
>>>> added pointer
>>>> 
>>>>> section 4: maybe s/Security Threat Model/Threat Model/
>>>>> in the section title - what other kind of threat
>>>>> model is there?
>>>> 
>>>> changed to Threat Model
>>>> 
>>>>> section 4: I wondered how we know the threat model
>>>>> is "comprehensive"? Perhaps "detailed" is better?
>>>> 
>>>> We are rather confident because we created the threat model a systematic
>>>> way and had it reviewed by a lot of security folks
>>>> 
>>>>> 4.2.1: typo: s/Users/users/g unless you mean something
>>>>> special?
>>>>> 
>>>>> 4.2.2: typo: s/a understandable/an understandable/
>>>>> 
>>>>> 4.2.2: "...based on who the client is." is unclear
>>>>> and not gramatically nice:-) "...based on the client
>>>>> identifier." would seem better.
>>>>> 
>>>>> 4.3.1: typo? s/on transit/in transit/ Or did you
>>>>> mean something else? and s/may attempts/may attempt/
>>>>> 
>>>>> 4.3.3: maybe s/Revelation/Disclosure/ to be a tad
>>>>> less biblical:-)
>>>> 
>>>> changed to "Revelation of client credentials during transmission"
>>>> 
>>>>> 4.3.3: typo? 1st countermeasure reads oddly and
>>>>> refers to a different place than other references
>>>>> to TLS - is that correct?
>>>> 
>>>> changed to standard wording
>>>> 
>>>>> 4.3.3: digest auth is nearly the same as sending
>>>>> credentials over the wire, TLS client auth based
>>>>> on certificates would be a better example, even
>>>>> if its not often done.
>>>> 
>>>> Isn't TLS client authentication always combined with TLS protected
>>>> communication? So this would merly be an additional and not alternative
>>>> mechanism.
>>>> 
>>>>> 4.3.4: 4.3.2 points to 5.1.4.1.2 but this doesn't.
>>>>> Maybe it ought to?
>>>> 
>>>> Sorry, don't understand this comment. Are you saying 5.1.4.1.2 should
>>>> point back to 4.3.2?
>>>> 
>>>>> 4.3.6: typo s/an authorization servers/an authorization
>>>>> server/
>>>>> 
>>>>> 4.3.6: 4.3.5 refers to 5.1.4.2.2 wrt entropy. Is there
>>>>> a reason to not do that here too?
>>>> 
>>>> this section discussed a potential threat on dynamic client
>>>> registration. Wen decided to remove the whole section as dynamic client
>>>> registration is subject of current charter and respective security
>>>> considerations should delt with in this context.
>>>> 
>>>>> 4.4: typo? s/tokens endpoint/token endpoint/ ?
>>>>> 
>>>>> 4.4.1.1: typo: s/by different ways/in different ways/
>>>>> 
>>>>> 4.4.1.1: typo-fix-typo? HTTP has a "Referer" header field,
>>>>> but you fixed their typo here - might be better to live
>>>>> with the bad spelling, in which case
>>>>> s/referrer/referer/g;-)
>>>> 
>>>> ok :-)
>>>> 
>>>>> 4.4.1.1: Is there no better way to reference these
>>>>> OASIS docs? More importantly, is there no better (more
>>>>> stable) reference than thomasgross.net for the
>>>>> PDF you reference? Tidying this up would be good.
>>>> 
>>>> added references to OASIS documents and stable reference to 3rd document
>>>> in proceedings of Computer Security Applications Conference
>>>> 
>>>>> 4.4.1.1 and elsewhere: a few times you say "such as
>>>>> TLS or SSL," I think it'd be better to just say TLS
>>>>> there and do it consistently everwhere. In other
>>>>> places (e.g. 4.4.1.5) you say "HTTPS" - again that'd
>>>>> be better done consistently.
>>>> 
>>>> removed SSL - would you expect us to replace HTTPS by TLS? We used HTTPS
>>>> for the more specific case of HTTP+TLS
>>>> 
>>>>> 4.4.1.1: typo: s/redeem a authorization code/redeem
>>>>> an authorizatio code/
>>>>> 
>>>>> 4.4.1.4: "counterfeit a valid client" reads oddly,
>>>>> do you mean "pretend to be a valid client"? If so,
>>>>> I think that'd be clearer.
>>>>> 
>>>>> 4.4.1.4: "and to prevent unauthorized access to
>>>>> them" - I think you might add "via the oauth
>>>>> protocol" there since the AS isn't responsible for
>>>>> all possible ways of preventing unauthorized access.
>>>>> 
>>>>> 4.4.1.4: typo: s/not neccesserily indicates/doesn't
>>>>> necessarily indicate/
>>>>> 
>>>>> 4.4.1.4: typo: s/user should be explained the purpose/
>>>>> something better/ :-)
>>>> 
>>>> tried my best:
>>>> 
>>>> "In this context, the authorization server should explain to the
>>>> end-user the purpose, scope, and duration of the authorization the
>>>> client asked for. "
>>>> 
>>>> 
>>>>> 4.4.1.4: expand/define CAPTCHA on 1st use. Give a
>>>>> reference for this too. Especially since you also
>>>>> have 5.1.4.2.5, which is maybe the best place for
>>>>> the reference.
>>>> 
>>>> Changed counter measure paragraph from:
>>>> "If the authorization server automatically authenticates the end-
>>>>     user, it may nevertheless require some user input in order to
>>>>     prevent screen scraping.  Examples are CAPTCHAs or user-specific
>>>>     secrets like PIN codes."
>>>> to:
>>>> "If the authorization server automatically authenticates the end-user,
>>>> it may nevertheless require some user input in order to prevent screen
>>>> scraping. Examples are CAPTCHAs (Completely Automated Public Turing test
>>>> to tell Computers and Humans Apart) or other multi-factor authentication
>>>> techniques such as random questions, token code generators, etc."
>>>> 
>>>> 
>>>>> 4.4.1.4: isn't a PIN code another user authentiation?
>>>>> Seems like a bad example of automatic authentication,
>>>>> since it isn't automatic if the user has to enter a
>>>>> PIN.
>>>> 
>>>> see above
>>>>> 4.4.1.6: Is Facebook a trademark? Maybe better to not
>>>>> use that if so?
>>>> 
>>>> Changed Facebook reference section to:
>>>> (e.g. as in the implementation of "Login" button to a third-party social
>>>> network site)
>>>> 
>>>> 
>>>>> 4.4.1.7: typo: s/achieve that goal/achieves that goal/
>>>>> 
>>>>> 4.4.1.7: typo: s/victims resources/victim's resources/
>>>>> 
>>>>> 4.4.1.7: typo: s/The attackers gains/The attacker gains/
>>>>> 
>>>>> 4.4.1.7: typo: s/then the target web site/rather than
>>>>> the target web site/
>>>>> 
>>>>> 4.4.1.7: "session fixation" could do with a reference
>>>>> or definition, and that might be better earlier in
>>>>> this section and not just in the countermeasures
>>>>> part.
>>>> 
>>>> changed
>>>> 
>>>> "The authorization server may also enforce the usage and validation of
>>>> pre-registered redirect URIs (see Section 5.2.3.5).  This will allow for
>>>> an early recognition of session fixation attempts."
>>>> to:
>>>> "The authorization server may also enforce the usage and validation of
>>>> pre-registered redirect URIs (see Section 5.2.3.5).  This will allow for
>>>> an early recognition of authorization code disclosure to counterfeit
>>>> clients."
>>>> 
>>>> 
>>>>> 4.4.1.7: typo: s/kind of attacks/kind of attack/
>>>>> 
>>>>> 4.4.1.8: typo: s/not follow untrusted/to not follow
>>>>> untrusted/
>>>>> 
>>>>> 4.4.1.9: maybe add a reference for "iframe"? And
>>>>> you say "iFrames" later, better to be consistent.
>>>>> 
>>>>> 4.4.1.9: 1st countermeasure - do you mean end-user
>>>>> authorization here or end-user authentication? And
>>>>> would it be better to say "system browser" or
>>>>> something rather than "external browser"? (I forget
>>>>> what phrase you used for that earlier but there
>>>>> was something bettter:-)
>>>> 
>>>> We mean "authorization"
>>>> 
>>>> We came to the conclusion that it does not matter in which browser the
>>>> page is loaded - removed 1st bullet
>>>> 
>>>>> 4.4.1.9: "javascript framebusting" really needs
>>>>> a reference
>>>> added
>>>>> 4.4.1.10: typo: s/the victims resources/the victim's
>>>>> resources/
>>>>> 
>>>>> 4.4.1.10: typo: s/or split the/or splits the/
>>>>> 
>>>>> 4.4.1.10: "corresponding form post requests" isn't
>>>>> clear to me - does that need rephrasing or is it
>>>>> just me?
>>>>> 
>>>>> 4.4.1.10: this is the first mention of cookies, which
>>>>> I found surprising, but that's all;-)
>>>>> 
>>>>> 4.4.1.10: the 2nd "ways to achieve this" bullet is
>>>>> a bit unclear - which "It" and whose browser? I
>>>>> think this could be clearer.
>>>>> 
>>>>> 4.4.1.10: typo: s/as native app/as a native application/
>>>>> 
>>>>> 4.4.1.10: what does "assume" the threat mean?
>>>>> 
>>>>> 4.4.1.10: typo: s/an user interaction/a user interaction/
>>>>> 
>>>>> 4.4.1.10: typo: s/CAPTCAs, or/CAPTCHAs/ or else get
>>>>> rid of the "or" from the last bullet
>>>>> 
>>>>> 4.4.1.10: typo: s/send out of bound/sent out of band/
>>>>> 
>>>>> 4.4.1.10: typo: s/instance message/instant message/
>>>> 
>>>> considerably re-worded this section
>>>> 
>>>>> 4.4.1.11: typo? s/directing user(s) browser/directing
>>>>> the user's browser/ ?
>>>>> 
>>>>> 4.4.1.11: I don't get the explanation here. Are you
>>>>> assuming (but not saying) that generating non-trivial
>>>>> entropy is a slow process? (e.g. /dev/random blocking?)
>>>>> Its also not clear what "pool" you mean? This probably
>>>>> needs a bit of tweaking.
>>>>> 
>>>>> 4.4.1.12: semicomplete.com may not be a sufficiently
>>>>> stable reference - can't you find a better one?
>>>> 
>>>> unfortunately not
>>>>> 4.4.1.12: typo: s/Defenses such rate limiting/Defenses
>>>>> such as rate limiting/
>>>>> 
>>>>> 4.4.1.12: typo: s/an anonymizing systems/an anonymizing
>>>>> system/
>>>>> 
>>>>> 4.4.1.12: nicest typo yet! s/annoying system/anonymizing
>>>>> system/ :-)
>>>>> 
>>>>> 4.4.1.12: typo? maybe s/iframe/iFrame/ again?
>>>>> 
>>>>> 4.4.1.12: 1st reference to "the CSRF token" here? That
>>>>> might warrant a reference of some sort? (Maybe to
>>>>> a later section?)
>>>>> 
>>>>> 4.4.1.12: Facebook again.
>>>>> 
>>>>> 4.4.1.12: Signing the code seems like a bit of a hack.  Do
>>>>> you really want to recommend this here? I suspect it'd end
>>>>> up different if you actually tried it out aiming for an
>>>>> interoperable solution. I'd suggest deleting this, or
>>>>> maybe make it less specific, e.g. saying if origin
>>>>> authentication for authorization codes could be validated
>>>>> by clients, then that'd be a countermeasure, but that
>>>>> there's no current spec for that. (And doing that might
>>>>> just move the DoS to somewhere else depending how you
>>>>> did it.)
>>>>> 
>>>>> 4.4.2: typo: s/and It cannot/and it cannot/
>>>>> 
>>>>> 4.4.2.1: Is the countermeasure here TLS? If so, better to
>>>>> say so.
>>>>> 
>>>>> 4.4.2.2: requests aren't cached are they but rather
>>>>> responses?
>>>>> 
>>>>> 4.4.2.3: typo: s/An malicious/A malicious/
>>>>> 
>>>>> 4.4.2.3: The reference back to 4.4.1.4 isn't very
>>>>> clear since a lot of the countermeasures there
>>>>> mention authentication. It'd be better to explicitly
>>>>> list things here or else if you stick with the
>>>>> backwards reference to be more explicit about whic
>>>>> exactly apply.
>>>>> 
>>>>> 4.4.2.5: Is this entirely identical to 4.4.1.8? That
>>>>> doesn't seem right. If it is, then say so explicitly.
>>>>> If not, then say what's different.
>>>>> 
>>>>> 4.4.3: 1st mention of username/password anti-pattern,
>>>>> so you could add a reference
>>>>> 
>>>>> 4.4.3: Be good to metion here that passwords are often
>>>>> used for >1 service, so this anti-pattern risks whatever
>>>>> else is accessible with that credential or an
>>>>> algorithmically derivable equivalent (e.g.
>>>>> joe@example.com/pwd  might easily allow someone to guess
>>>>> that the same pwd is used forjoe.user@example.net) and
>>>>> then another countermeasure is to educate users to
>>>>> not use the same pwd for multiple services (hard as
>>>>> that is to really do;-)
>>>>> 
>>>>> 4.4.3.4: again digest auth isn't a good example
>>>>> here, but client certs are.
>>>>> 
>>>>> 4.4.3.6: What does "Abandon on grant type..." mean?
>>>>> If you mean "don't do this" then say that more
>>>>> clearly.
>>>> 
>>>> Changed to "Consider not to use grant type "password""
>>>> 
>>>>> 4.6.2: typo: s/transport security measure/transport
>>>>> security measures/ or maybe just say TLS
>>>>> 
>>>>> 4.6.2: typo: s/nounces/nonces/
>>>>> 
>>>>> 4.6.3: 1st countermeasure: maybe s/difficult/infeasible/
>>>>> I don't see why "difficult" guessing is hard enough?
>>>>> 
>>>>> 4.6.4: typo: s/a valid access tokens/a valid access token/
>>>>> 
>>>>> 4.6.4: Do you mean the IP address in the 2nd
>>>>> countermeasure?  I'm not sure, esp. given the above.
>>>>> 
>>>>> 4.6.4: typo: s/miss the capabilities/lack the capability/
>>>>> 
>>>>> 4.6.6: reference to 2616 is broken
>>>>> 
>>>>> 4.6.6: Should you reference httpbis drafts? Just asking, I
>>>>> can see arguments for referencing just 2616 or just
>>>>> httpbis or both, given that this'll be read for hopefully
>>>>> a while after httpbis is done.
>>>>> 
>>>>> 4.6.7: referrer vs. referer again
>>>>> 
>>>>> 4.6.7: What is an appropriat logging configuration? Can
>>>>> you give a reference maybe or is it really that well
>>>>> known?
>>>>> 
>>>>> 4.6.7: Reloading the target page again? Are you really
>>>>> recommending that?
>>>>> 
>>>>> 5.1: typo: s/consideratios/considerations/
>>>>> 
>>>>> 5.1.3: I think you should note the email notifications
>>>>> can be a phishing vector so don't make your emails
>>>>> such that lookalike phish messages can easily be
>>>>> derived from them.
>>>>> 
>>>>> 5.1.3: Don't you need to say something about getting
>>>>> email notifications delivered and not treated as spam?
>>>>> Maybe you could recommend dkim here or other ways to
>>>>> get better delivery. (Not sure myself, probably best
>>>>> to ask someone who operates like this so see if there's
>>>>> stuff to be said.)
>>>>> 
>>>>> 5.1.4.1.3: typo: s/not store credential/not store
>>>>> credentials/
>>>>> 
>>>>> 5.1.4.1.4: salted hashes don't prevent offline
>>>>> dictionary attacks, they just increase the workload
>>>>> 
>>>>> 5.1.5.1.4: would it be worthwhile recommending that
>>>>> different client credentials be used in development
>>>>> or integration mode vs. when operational? I've seen
>>>>> a bunch of times when programmers were given "live"
>>>>> API keys when that could've been avoided.
>>>>> 
>>>>> 5.1.4.1.5: I don't get this. If it was only that
>>>>> easy:-) I think you need to say which private keys
>>>>> are used here and for what for this section to be
>>>>> useful.
>>>>> 
>>>>> 5.1.4.2.1: I think you could note that complex password
>>>>> policies can also increase the liklihood that users
>>>>> re-use passwords or write them down or store them
>>>>> somewhere not so good, if e.g. the entropy required
>>>>> over all the user's passwords (dozens usually) is
>>>>> too great for long-term memory.
>>>>> 
>>>>> 5.1.5.1: typo: s/Basis of/The basis of/
>>>>> 
>>>>> 5.1.5.1: typo: s/sensible service/sensitive service/
>>>>> (2nd best typo:-)
>>>>> 
>>>>> 5.1.5.3: typo: s/preciser/more precise/
>>>>> 
>>>>> 5.1.5.3: typo: s/refreshments/refreshes/
>>>>> 
>>>>> 5.1.5.4: 2nd bullet is not a threat but a goal
>>>>> 
>>>>> 5.1.5.4: typo: s/redeem a/redeem an/
>>>>> 
>>>>> 5.1.5.5: what is a "rough" server? Do you mean rogue?
>>>>> 
>>>>> 5.5.5.6: I think you need to clarify what "address"
>>>>> means here too.
>>>>> 
>>>>> 5.1.5.9: please clarify if you mean digitally signed
>>>>> (asymmetric) or also include MACing here
>>>>> 
>>>>> 5.1.5.10: typo: s/Self-contained/Self-contained tokens/
>>>>> 
>>>>> 5.1.5.10: s/privacy/confidentiality/ ?
>>>>> 
>>>>> 5.1.5.10: this (typically, I'd guess) requires sharing
>>>>> symmetric keys between server nodes, so you should
>>>>> say that as its a bunch of work.
>>>>> 
>>>>> 5.1.5.11: I don't get why you want to repeat this
>>>>> text (and its error:-) better to refer back to
>>>>> the earlier section I think.
>>>>> 
>>>>> 5.1.5.12: Another place where a SAML reference would
>>>>> be needed.
>>>>> 
>>>>> 5.1.6: 2nd bullet is not a "measure" but a goal. If
>>>>> you had something in mind, it doesn't come out from
>>>>> that text.
>>>>> 
>>>>> 5.2.2.2: You say the binding should be protected, but
>>>>> don't say how. I think you ought.
>>>>> 
>>>>> 5.2.3: typo: s/sub-sequent/subsequent/ but maybe
>>>>> better to delete the word
>>>>> 
>>>>> 5.2.3: 2nd bullet - "trustworthiness" has gotta
>>>>> be the wrong word there, what did you mean?
>>>>> 
>>>>> 5.2.3: typo: s/statics/statistics/
>>>>> 
>>>>> 5.2.3: typo: s/support achieve objectives/achieve these
>>>>> objectives/ ?
>>>>> 
>>>>> 5.2.3: typo: s/by hand of an administrator/something
>>>>> better/
>>>>> 
>>>>> 5.2.3.1: "prevents...overestimating" seems wrong, I think
>>>>> you mean it reduces the probability of mistakenly treating
>>>>> a useless authentication as a good one. (The point is
>>>>> that servers don't "overestimate," only people do that.)
>>>>> 
>>>>> 5.2.3.1: "cannot be entirely protected" seems like
>>>>> understatement - the reality is any such secret will
>>>>> leak out from anything that's any way successful. It
>>>>> only protects stuff that *nobody* cares about.
>>>>> 
>>>>> 5.2.3.1: typo: s/trust on/trust/ But I'd rephrase it
>>>>> to not use the terms "trust" nor "identity" and then
>>>>> it'd be better I think.
>>>>> 
>>>>> 5.2.3.2: typo? s/The authorization may/The authrozation
>>>>> server may/ ? Not sure what "issue a cliend id" means
>>>>> either. (Same in 5.2.3.3)
>>>>> 
>>>>> 5.2.3.4: typo: s/A authorization server/An authorization
>>>>> server/
>>>>> 
>>>>> 5.2.3.5: what are "validated properties"?
>>>>> 
>>>>> 5.2.3.5: what is the 1st bullet list on p57? there's
>>>>> no introductory text?
>>>>> 
>>>>> 5.2.3.5: the "it" in "it only works" in the last
>>>>> paragraph isn't clear - which "it" do you mean?
>>>>> 
>>>>> 5.2.3.5: saying discovery "gets involved" seems
>>>>> wrong - do you mean "is used"? And what is the
>>>>> "that" in "that's no longer feasible"?
>>>>> 
>>>>> 5.2.3.6: typo: s/be unintentionally for/unintentionally
>>>>> affect/?
>>>>> 
>>>>> 5.2.3.7: typo: s/to distribute client_secret/to
>>>>> distribute a client_secret/
>>>>> 
>>>>> 5.2.4.1: Is a "security certificate" a public key
>>>>> certificate? If so, saying that is better.
>>>>> 
>>>>> 5.2.4.1: the references to 5.7.2.x are wrong and
>>>>> look like you're missing some xref's in the xml
>>>>> maybe
>>>>> 
>>>>> 5.2.4.2: you said "address" again, so the usual
>>>>> question arises :-)
>>>>> 
>>>>> 5.2.4.3: typo: s/in all situation/in situations/
>>>>> (not sure "all" is right so suggest deleting it)
>>>>> 
>>>>> 5.2.4.4: again, be good to say how to protect
>>>>> the binding
>>>>> 
>>>>> 5.2.4.5: as for 5.2.4.4 say how binding is done
>>>>> 
>>>>> 5.3.1: typo: s/a associated/an associated/
>>>>> 
>>>>> 5.3.1: "entirely protected" is (again:-) understatement
>>>>> see above for a suggestion
>>>>> 
>>>>> 5.3.1: what does "trust on the client's identity" mean?
>>>>> Its not clear anyway
>>>>> 
>>>>> 5.3.3: typo: s/operation systems/operating systems/
>>>>> (enrire 2nd & 3rd paras could do with re-phrasing)
>>>>> 
>>>>> 5.3.4: typo: s/their level/the level/
>>>>> 
>>>>> 5.3.5: this is too terse - is it really finished? I'd
>>>>> say there's a sentence or two missing.
>>>>> 
>>>>> 5.4.2: what does it mean to "encourage resource
>>>>> servers" to do something? I guess you mean to encourage
>>>>> the people deploying those to pick resource servers
>>>>> with that capability and to turn that on.
>>>>> 
>>>>> 5.4.2: not sure if everyone will know what a
>>>>> "distinguished name" is, maybe add a reference to
>>>>> rfc 5280?
>>>>> 
>>>>> 5.4.2: token-bound secrets would be used to MAC
>>>>> the request and not to sign, be better to make that
>>>>> clear even if you still call that "signing" here
>>>>> (its not really, if we're being pedantic)
>>>>> 
>>>>> 5.4.2: typo: s/This mechanisms/This mechanism/
>>>>> 
>>>>> 5.4.2 and 5.4.3: I forget - where are the protocol
>>>>> mechanisms for this defined? Can you give a reference
>>>>> or say that its future stuff if there aren't any
>>>>> good ones?
>>>>> 
>>>>> 5.5: typo: s/capable to validate/capable of validating/
>>>>> 
>>>>> 8.1: Is the base spec really normative? I'd say you're
>>>>> fine with that as informative too.
>>>>> 
>>>>> 8.2: there are a bunch of references missing as per
>>>>> the questions above
>>>>> 
>>>>> 8.2: is there no better (more stable) reference than
>>>>> portablecontacts.net?
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>> 
>>> 
>>