Re: [OAUTH-WG] OAuth Security Topics -- Recommend authorization code instead of implicit

John Bradley <ve7jtb@ve7jtb.com> Mon, 03 December 2018 11:59 UTC

Return-Path: <ve7jtb@ve7jtb.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 76207130E77 for <oauth@ietfa.amsl.com>; Mon, 3 Dec 2018 03:59:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.359
X-Spam-Level:
X-Spam-Status: No, score=-3.359 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-1.459, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ve7jtb-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 99-cOCihQLTt for <oauth@ietfa.amsl.com>; Mon, 3 Dec 2018 03:59:26 -0800 (PST)
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EB86312D7F8 for <oauth@ietf.org>; Mon, 3 Dec 2018 03:59:25 -0800 (PST)
Received: by mail-wr1-x435.google.com with SMTP id 96so11887082wrb.2 for <oauth@ietf.org>; Mon, 03 Dec 2018 03:59:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ve7jtb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=QL5SBSwZ5UC1bmtjFmZ+OzXlDX88nrGr1bV28+jwQxM=; b=LKmGwTKy6xzql6XDpomv0ZYlsIHFnOcM1iGvfPfp0Dxe/TqsNvyDZnVKWaJcFJF9us vBR4IlsdKdaXyZutrPw8uIERF4GXPEhMlMdYoL71oG+r2/aRgIhBwKSvDGrX1U5wDk3v sB7M1Nmd8HQC+huwQB/6XcTmPolQ18aIpbPCpKsKM7HfHuHgh43np9HpvOVHJzFqkQVu H8Bl9zriThpeMQb5H7nHm+j1S3sCwq7DbqRlcfhQusOo4o1Bx3mwhGVkStHIxsuSIPuZ HbU4EOUD6NjT0ZaCc2d5XygcaP5nbaPEmRnK933LBPkw4YOqgaZx1RccLdr+YWmrlZFQ vTnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=QL5SBSwZ5UC1bmtjFmZ+OzXlDX88nrGr1bV28+jwQxM=; b=G3C0CMVwdkpVGl1h0k7RQff/nR1WBx1kOOL/GsKVy7x/t/grmCC85Z41F39tG6ugr7 zYxqGy1pthcDeBS/Uwf1K53ynPyrtT9ljzXFDwChmvRjV0Zvlt6VxVT0QfBE2APs0V+F dQFffqziDApqwInJCLy30F7/ZJ46htzN9phNtKUYlk83s8vBGGzAuk4K/WubtZAN9cah 8fTynpF4p9qgIxg0bC/62i4ir0UDvVCPGReKrmBB1sIFS9UeDWP9fGVpG+u7lJuSYZ/l It1GSDo/hbUll7wEqQ/0r4042RffA47pTnlAyPpbGdHp7IGk50rWvMcR8qgf3+WCqbu5 MHIw==
X-Gm-Message-State: AA+aEWbGXvYlJdl2a6ujbq9JA8fvc70VIzDrSR+qdUYdPyqcCv9siF1l iPUY/ePMdeIly7shnOlcKEO0Y34okh3B0nfgb8UpsQ==
X-Google-Smtp-Source: AFSGD/UXxRfC2A8Tq0jseT8dvzE9chiF/Z3dKhD4JsjIDXPiLuwZMeK+edXuI8UL45kshqG33EcN2WKthm/OajzthYk=
X-Received: by 2002:a5d:4e0b:: with SMTP id p11mr15176080wrt.227.1543838363728; Mon, 03 Dec 2018 03:59:23 -0800 (PST)
MIME-Version: 1.0
References: <VI1PR0801MB211266BA6F6E06FFB3081425FAD80@VI1PR0801MB2112.eurprd08.prod.outlook.com> <CAD9ie-v3onmKc498cg_-a0AD58ZV=aZANtz=UV+Q0f=9N3nSzQ@mail.gmail.com> <OSBPR01MB2869E83F37046C7FCD4463DDF9D10@OSBPR01MB2869.jpnprd01.prod.outlook.com> <9FF3F589-0423-4CBC-B323-481F771D097C@lodderstedt.net> <OSBPR01MB28690F77DFFB2A85BDB83FBAF9D10@OSBPR01MB2869.jpnprd01.prod.outlook.com> <D6C66E6A-687B-4997-B830-980BE25994C2@lodderstedt.net> <CAANoGhL9aD75AV9QQRdeGE1=4ynjTnULNVr0PXXvt20ipsb4Rw@mail.gmail.com> <FE51CE20-7A49-4A13-A180-6A7C481F3965@lodderstedt.net> <CAGBSGjrzeeR5QQ=nA=gTj0q7sRvRVc0DDacbxB+ED87ymHSOuA@mail.gmail.com> <VI1PR0801MB21120AA6CC9437E237F481A2FAAC0@VI1PR0801MB2112.eurprd08.prod.outlook.com> <EA38C666-2325-430A-91B0-C02AAC65FCC8@lodderstedt.net> <CAO_FVe7j_79sPrRSFXvQJax3vDjT_0=ZaWHW9aan9rJnLUftkA@mail.gmail.com> <CAO7Ng+vsQ2i4=V0nq+ymO6aNCvurb02+Zt7HHwp4=FnWCO4pUQ@mail.gmail.com>
In-Reply-To: <CAO7Ng+vsQ2i4=V0nq+ymO6aNCvurb02+Zt7HHwp4=FnWCO4pUQ@mail.gmail.com>
From: John Bradley <ve7jtb@ve7jtb.com>
Date: Mon, 03 Dec 2018 12:59:14 +0100
Message-ID: <CAANoGhLx42Noqw4WN-THXbGYvS3t1Z2_EmPs+z641-cNovFNvw@mail.gmail.com>
To: Dominick Baier <dbaier@leastprivilege.com>
Cc: Vittorio Bertocci <vittorio.bertocci=40auth0.com@dmarc.ietf.org>, Torsten Lodderstedt <torsten@lodderstedt.net>, Daniel Fett <fett@danielfett.de>, IETF oauth WG <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000042cf43057c1ce1f5"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/NzK-OxUYB3akO3yE0Q9O2G4zw7Q>
Subject: Re: [OAUTH-WG] OAuth Security Topics -- Recommend authorization code instead of implicit
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 03 Dec 2018 11:59:32 -0000

I agree that the hair on fire messaging is over stated.

This is still a document in development and not yet a BCP.   No new
vunerable have been found, but attackers are evolving.

These are security best practices for new implimentations.   Not a
recommendation to rip things out.    As applications are updated they need
to consider the BCP recommendations.

We do need to be careful about how our discussions are interpreted.

There are also worse things people could do than implicit if we scare them
back to proprietary solutions.

John B.

On Mon, Dec 3, 2018, 12:50 PM Dominick Baier <dbaier@leastprivilege.com
wrote:

> I agree with Vittorio -
>
> While we all agree that implicit is outdated and we can do better (and it
> is indeed good that this discussion has finally started for real) - the
> communication around the (preliminary) results of the BCP was unfortunate
> and not very responsible - quoting:
>
> “Simply put, the implicit grant’s security is broken beyond repair. It is
> vulnerable to access token leakage, meaning an attacker can exfiltrate
> valid access tokens and use it to his own benefit. This might for example
> result in the attacker accessing the legit user’s health record or
> initiating a payment, from her bank account."
>
> This indeed, as Vittorio pointed out, sounds like a new vulnerability has
> been found. This spreads FUD ;)
>
> Also - simply saying “implicit is evil - switch to code” means for most
> people also using refresh token - so we are treating access tokens in the
> URL with refresh tokens in session storage (over simplified - but you get
> the idea).
>
> Again we all agree that implicit can be improved - but there are some
> issues to be sorted first to make this a smooth transition.
>
> My 2c
>
> ———
> Dominick
>
> On 3. December 2018 at 11:59:44, Vittorio Bertocci (
> vittorio.bertocci=40auth0.com@dmarc.ietf.org
> <vittorio.bertocci=40auth0..com@dmarc.ietf.org>) wrote:
>
> Hi all,
> Sorry for stepping a bit back from the level of detail the discussion
> already reached. I do have some specific comments on the document, but
> before bringing those up I wanted to raise a general problem I am
> experiencing with this initiative..
>
> I have a number of customers that are reacting to the news with distress.
> The language used in some of the communications associated with this
> initiative made them feel like some new vulnerability was discovered,
> calling for immediate action.
> The fact is that as far as I can tell, no new, previously unknown fact
> informed this decision: no new vulnerability, nor any new technology that
> wasn’t available before (the sender constrain is still not actionable for
> most customers). The risks of the implicit flow aren’t bigger now than they
> were in October.
> That doesn’t mean that we cannot improve guidance, of course- and now is
> as good as any other moment to do so: but at the same time, I think we need
> to be cognizant of the *immense* investment in existence today in form of
> SDKs and applications built on those SDKs that are predicated on implicit
> flow, with our blessing: until very recently the official position was
> “implicit is bad but it’s the best we have noawadays”.
> To me, being cognizant of that means that we should help people to
> formulate action proportionate to the risk. And if until yesterday we were
> ok with them using implicit, we cannot realistically expect anyone to start
> changing all of their apps today, but that’s the message many customers are
> getting.
> TL;DR, I think the community would be well served by clarifying in the
> security document that there is no new risk and their existing codebase
> didn’t suddenly become less secure and in *urgent* need to update.
> To attempt a metaphor. We discovered a new drug against headache with
> milder side effects than the one we were prescribing them until now, but
> that doesn’t mean that they should throw away all the stash they have of
> the older drug. The old drug will keep working as it worked until now. Once
> they run out of their stash, they should get the new one; or if the old
> side effects were particularly bad for them, perhaps they should consider
> switching today. But this isn’t a recall.
>
> And if in fact this group thinks it should be a recall and get everyone
> off the old one right now, I think we’ll need to make a much stronger case
> than we have done so far.
>
> Thoughts?
>
> Thanks
> V.
>
>
> On Sat, Dec 1, 2018 at 04:01 Torsten Lodderstedt <torsten@lodderstedt.net>
> wrote:
>
>> Hi Hannes,
>>
>> > Am 01.12.2018 um 10:06 schrieb Hannes Tschofenig <
>> Hannes.Tschofenig@arm.com>:
>> >
>> > I agree with Aaron here and I think Section 3.8.1.2 of
>> draft-ietf-oauth-security-topics-10  already does a pretty good job.
>>
>> my proposal is to add the following definition (based on 3.8.1.2) to a
>> new „Terminology" section or to section 2.1.2:
>>
>> A sender constrained access token scopes the applicability of an access
>> token to a certain sender.  This sender is
>> obliged to demonstrate knowledge of a certain secret as prerequisite for
>> the acceptance of that token at the recipient (e.g. a resource server).
>>
>> >
>> > I was, however, wondering about the subtle implication of the
>> requirement for sender constrained tokens. My understanding of the token
>> binding discussion, which is one of the ways to provide sender-constrained
>> tokens, is that we don’t have good faith in seeing deployment anytime soon.
>> Hence, we are essentially (reading in between the lines of Section 3.8.1.2)
>> saying that you cannot use implicit grant in a practical setup for the
>> web*..
>>
>> The text shall convey that implicit must not be used at all. The main
>> reason being it is unprotected against token injection and additionally
>> also cannot sender constrain tokens.
>>
>> The second part of the statement relates to other response types and
>> conditionally opens the MUST NOT in case they are protected against
>> injection (which is true for the listed response types) and can issue
>> sender constrained tokens (which does not work today but might work in the
>> future).
>>
>> kind regards,
>> Torsten.
>>
>> >
>> > Am I misunderstanding it?
>>
>> >
>> > Ciao
>> > Hannes
>> >
>> > PS: The IoT case is likely different.
>> >
>> > From: OAuth <oauth-bounces@ietf.org> On Behalf Of Aaron Parecki
>> > Sent: Saturday, December 1, 2018 3:18 AM
>> > To: Torsten Lodderstedt <torsten@lodderstedt.net>
>> > Cc: Daniel Fett <fett@danielfett.de>; IETF oauth WG <oauth@ietf.org>
>> > Subject: Re: [OAUTH-WG] OAuth Security Topics -- Recommend
>> authorization code instead of implicit
>> >
>> > +1
>> >
>> > I would also like to ensure there is a clear definition of "sender
>> constrained" tokens in this BCP.
>> >
>> > Aaron
>> >
>> >
>> > On Thu, Nov 29, 2018 at 10:06 AM Torsten Lodderstedt <
>> torsten@lodderstedt.net> wrote:
>> > Hi all,
>> >
>> > based on your feedback on the list and off list, Daniel and I polished
>> the text. That’s our proposal:
>> >
>> > —
>> > In order to avoid these issues, clients MUST NOT use the implicit
>> > grant (response type "token") or any other response type issuing access
>> > tokens in the authorization response, such as "token id_token" and
>> "code token id_token“,
>> > unless the issued access tokens are sender-constrained and access token
>> injection in
>> > the authorization response is prevented.
>> > —
>> >
>> > Explantation:
>> > - we wanted to have the right balance between a generic definition of
>> the response types we do not recommend/allow to be used and a
>> concrete/actionable list of the affected response types.
>> > - we changed from SHOULD NOT to MUST NOT as suggested by Nat and
>> supported by William
>> >
>> > We look forward to seeing your feedback.
>> >
>> > kind regards,
>> > Torsten.
>> >
>> > > Am 29.11.2018 um 15:15 schrieb John Bradley <ve7jtb@ve7jtb.com>:
>> > >
>> > > I am ok with that.
>> > >
>> > > On Wed, Nov 28, 2018, 8:03 PM Torsten Lodderstedt <
>> torsten@lodderstedt.net wrote:
>> > >
>> > > > Am 28.11.2018 um 23:50 schrieb n-sakimura <n-sakimura@nri.co.jp>:
>> > > >
>> > > > That works.
>> > >
>> > > Good!
>> > >
>> > > I just realized this text has an issue with „token“ (only). It would
>> allow „token“ to be used if the token would sender constrained. This
>> completely ignores the fact implicit also shall be abandoned because of its
>> vulnerability for access token injection.
>> > >
>> > > I therefore propose a modified text:
>> > >
>> > >    In order to avoid these issues, Clients SHOULD NOT use the implicit
>> > >    grant. Furthermore, clients SHOULD only use other response types
>> causing the authorization server to
>> > >    issue an access token in the authorization response, if the
>> particular response type detects access token
>> > >    injection and the issued access tokens are sender-constrained.
>> > >
>> > > Or we just state:
>> > >
>> > >   In order to avoid these issues, Clients SHOULD NOT use the response
>> type „token". The response types
>> > > „token id_token“ and „code token id_token“ SOULD NOT be used, if the
>> issued access tokens are not
>> > > sender-constrained.
>> > >
>> > > >
>> > > > In fact, I would further go and say MUST NOT but that probably is
>> too much for a security consideration.
>> > > >
>> > >
>> > > Mike suggested to go with a SHOULD NOT to get the message out but
>> give implementors time to move/change.
>> > >
>> > > > Best,
>> > > >
>> > > > Nat
>> > > >
>> > > > Nat Sakimura / n-sakimura@nri.co.jp / +81-90-6013-6276
>> > > >
>> > > >
>> このメールには、本来の宛先の方のみに限定された機密情報が含まれている場合がございます。お心あたりのない場合は、誠に申し訳ございませんが、送信者までお知らせ頂き、また受信されたメールは削除してくださいますようお願い申し上げます。
>> > > >
>> > > > PLEASE READ :This e-mail is confidential and intended for the named
>> recipient only.
>> > > > If you are not an intended recipient, please notify the sender and
>> delete this e-mail.
>> > > >
>> > > > 差出人: Torsten Lodderstedt <torsten@lodderstedt.net>
>> > > > 送信日時: 水曜日, 11月 28, 2018 11:38 午後
>> > > > 宛先: n-sakimura
>> > > > Cc: Dick Hardt; Hannes Tschofenig; oauth@ietf.org
>> > > > 件名: Re: [OAUTH-WG] OAuth Security Topics -- Recommend authorization
>> code instead of implicit
>> > > >
>> > > > Hi Nat,
>> > > >
>> > > >> Am 28.11.2018 um 21:10 schrieb n-sakimura <n-sakimura@nri.co.jp>:
>> > > >>
>> > > >> I would support
>> > > >>
>> > > >> 1) clearly defining Implicit as the flow that returns access token
>> from the authorization endpoint ( some people confuses implicit as the flow
>> that returns ID Token in the front channel)
>> > > >
>> > > > That’s the current text:
>> > > >
>> > > > In order to avoid these issues, Clients SHOULD NOT use the implicit
>> > > >    grant or any other response type causing the authorization
>> server to
>> > > >    issue an access token in the authorization response.
>> > > >
>> > > > What would you like to modify?
>> > > >
>> > > >>
>> > > >> 2) Banning the returning of the access token that are not sender
>> constrained from the authorization endpoint
>> > > >
>> > > > In order to avoid these issues, Clients SHOULD NOT use the implicit
>> > > >    grant or any other response type causing the authorization
>> server to
>> > > >    issue an access token in the authorization response, if this
>> access tokens is not sender-constraint.
>> > > >
>> > > > What about this?
>> > > >
>> > > > kind regards,
>> > > > Torsten.
>> > > >
>> > > >>
>> > > >> Best,
>> > > >>
>> > > >> Nat
>> > > >>
>> > > >>
>> > > >> Outlook for iOS を入手
>> > > >>
>> > > >> 差出人: OAuth <oauth-bounces@ietf.org> (Dick Hardt <
>> dick.hardt@gmail.com> の代理)
>> > > >> 送信日時: 水曜日, 11月 28, 2018 8:58 午後
>> > > >> 宛先: Hannes Tschofenig
>> > > >> Cc: oauth@ietf.org
>> > > >> 件名: Re: [OAUTH-WG] OAuth Security Topics -- Recommend
>> authorization code instead of implicit
>> > > >>
>> > > >> +1
>> > > >>
>> > > >> While there are various mechanisms to alleviate some of the issues
>> of implicit, I don't think we can recommend specifics, and there may be
>> future ones in the future. I think we all agree that implicit without any
>> mitigation is problematic.
>> > > >>
>> > > >> How about we recommend against using implicit alone?
>> > > >>
>> > > >>
>> > > >> On Mon, Nov 19, 2018 at 2:34 AM Hannes Tschofenig <
>> Hannes.Tschofenig@arm.com> wrote:
>> > > >> Hi all,
>> > > >>
>> > > >> The authors of the OAuth Security Topics draft came to the
>> conclusion that it is not possible to adequately secure the implicit flow
>> against token injection since potential solutions like token binding or
>> JARM are in an early stage of adoption. For this reason, and since CORS
>> allows browser-based apps to send requests to the token endpoint, Torsten
>> suggested to use the authorization code instead of the implicit grant in
>> call cases in his presentation (see
>> https://datatracker.ietf.org/meeting/103/materials/slides-103-oauth-sessb-draft-ietf-oauth-security-topics-01
>> ).
>> > > >>
>> > > >> A hum in the room at IETF#103 concluded strong support for his
>> recommendations. We would like to confirm the discussion on the list..
>> > > >>
>> > > >> Please provide a response by December 3rd.
>> > > >>
>> > > >> Ciao
>> > > >>
>> > > >> Hannes & Rifaat
>> > > >>
>> > > >>
>> > > >>
>> > > >> IMPORTANT NOTICE: The contents of this email and any attachments
>> are confidential and may also be privileged. If you are not the intended
>> recipient, please notify the sender immediately and do not disclose the
>> contents to any other person, use it for any purpose, or store or copy the
>> information in any medium. Thank you.
>> > > >> _______________________________________________
>> > > >> 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
>> > --
>> > ----
>> > Aaron Parecki
>> > aaronparecki.com
>> > @aaronpk
>> >
>> > IMPORTANT NOTICE: The contents of this email and any attachments are
>> confidential and may also be privileged. If you are not the intended
>> recipient, please notify the sender immediately and do not disclose the
>> contents to any other person, use it for any purpose, or store or copy the
>> information in any medium. Thank you.
>>
>> _______________________________________________
>> 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
>