Re: [OAUTH-WG] [jose] preventing confusion of one kind of JWT for another in JWT BCP

Nathaniel McCallum <npmccallum@redhat.com> Thu, 27 July 2017 21:40 UTC

Return-Path: <nmccallu@redhat.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 1D356131E7B for <oauth@ietfa.amsl.com>; Thu, 27 Jul 2017 14:40:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.699
X-Spam-Level:
X-Spam-Status: No, score=-4.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HK_RANDOM_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.8, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 tUcpbyiEHAsp for <oauth@ietfa.amsl.com>; Thu, 27 Jul 2017 14:40:39 -0700 (PDT)
Received: from mail-io0-f182.google.com (mail-io0-f182.google.com [209.85.223.182]) (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 B4D18131E83 for <oauth@ietf.org>; Thu, 27 Jul 2017 14:40:34 -0700 (PDT)
Received: by mail-io0-f182.google.com with SMTP id l7so84454649iof.1 for <oauth@ietf.org>; Thu, 27 Jul 2017 14:40:34 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=bTj0GreIjY2Z6CAFJXyQ4sMJxFw7xj2vJ6jiSeYE8pA=; b=Sics3Qd5aJKuLl0yFOAvSxSiN1uEpQ4avzmJbfYmvTDL5CboOIwn0VPg7HSDthLlTI OcG5UUEVzbH4NJ3aXoOZyVetuLRMFS2Bvw5IG4qOE8GODPT1QMSCAjwjqTyTmAulszwJ NCopk0wReG7K+TE7bg1mfXC1vIw1zqP123r9adCWWRG8eQ97xfNHdFrL2ZYAXjhq6FKf 9JXgXPJrYdkFJ12BZhnUaKn0R7I6JT5hTGKaqzAMy60cZE6b7g307/2Fp2oY/KKRUUdf i1xv7SM2ikod/BTJa92bezow3wfHtufpMdolIM/+rkimYtW66EPX+JzP7a9vDN34Hkbw ZYhQ==
X-Gm-Message-State: AIVw113uxtTo/1l74iqBR+GDi4rQOaUt41DU1/cOOdQGskGq+tcAaTEx ZJfG2A1E8oGjpxXolGtm40pGEa2Pg8pB
X-Received: by 10.107.40.212 with SMTP id o203mr6559216ioo.181.1501191633862; Thu, 27 Jul 2017 14:40:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.107.21.6 with HTTP; Thu, 27 Jul 2017 14:40:33 -0700 (PDT)
In-Reply-To: <91B882A0-48A0-4F08-8ADB-B675D9F1C08F@oracle.com>
References: <CA+k3eCRT_iuLHYrLxz+tf1MT9L9XG2jV0D0anC0h5w7A_ujEdQ@mail.gmail.com> <CAOASepOjYBYoKYEVvCLMzZgsdyGhr2LOB-dNqekxsKFm_gxixg@mail.gmail.com> <CA+k3eCS-Va2AvzRhWia_ETqSDYUMBOoi=sY3jg7TbJFhhuVnZA@mail.gmail.com> <CAOASepMaeS8WrCMb+WHV0FC2_w3f0KnY5XuDsuWJhAW2ayfryQ@mail.gmail.com> <91B882A0-48A0-4F08-8ADB-B675D9F1C08F@oracle.com>
From: Nathaniel McCallum <npmccallum@redhat.com>
Date: Thu, 27 Jul 2017 17:40:33 -0400
Message-ID: <CAOASepMVX_8rZY487bJjXDCraBS6eXu90D2_KMDgLp+L8CXkww@mail.gmail.com>
To: Phil Hunt <phil.hunt@oracle.com>
Cc: Brian Campbell <bcampbell@pingidentity.com>, oauth <oauth@ietf.org>, "jose@ietf.org" <jose@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/uba5z_InFt1XqRPIrFxyapYZ7eI>
Subject: Re: [OAUTH-WG] [jose] preventing confusion of one kind of JWT for another in JWT BCP
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.22
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: Thu, 27 Jul 2017 21:40:55 -0000

Right. And this is precisely what I find strange. We are attempting to
define the differentiation between state transitions without defining
the state transitions themselves.

I want to be clear that I think there is a real need here. But it
seems to me that this need is not well defined. So I'm not against it
in theory. I'm just against ambiguous standards.

On Thu, Jul 27, 2017 at 5:19 PM, Phil Hunt <phil.hunt@oracle.com> wrote:
> We have the use case in SECEVENTS where a logout event (e.g. OIDF
> backchannel logout) is extremely close to an ID_TOKEN.
>
> Older relying parties who are do not yet support logout could be tricked
> into accepting a logout assertion as an ID_TOKEN since they are too similar,
> and  because a valid ID_TOKEN parser is in theory allowed to ignore claims
> it does not understand (e.g. “events”) - leading to a possible erroneous
> acceptance of the logout event AS and ID_TOKEN.
>
> Because of this the issue of distinguishing classes or types of JWTs
> emerged.
>
> We discussed a number of differentiators like “aud”, “typ”, “crit", etc that
> would help.  But that really lead to the idea there there should be some
> best practices in the JWT BCP covering the issue(s).
>
> Phil
>
> Oracle Corporation, Identity Cloud Services Architect & Standards
> @independentid
> www.independentid.com
> phil.hunt@oracle.com
>
> On Jul 27, 2017, at 2:00 PM, Nathaniel McCallum <npmccallum@redhat.com>
> wrote:
>
> Even after reading the whole section, I still don't understand the
> problem. Yes, a class of attack could exist where an attacker
> substitutes a valid JWT from one security context into another
> context. But isn't this resolved by audience validation?
>
> On Thu, Jul 27, 2017 at 3:34 PM, Brian Campbell
> <bcampbell@pingidentity.com> wrote:
>
> The draft describes it in
> https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_draft-2Dsheffer-2Doauth-2Djwt-2Dbcp-2D01-23section-2D2.7&d=DwICAg&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=JBm5biRrKugCH0FkITSeGJxPEivzjWwlNKe4C_lLIGk&m=02yWnzzFGNlefgVregxSncXu0b9sbh5pTrtBfQsC52A&s=9GmPCouCMXE4enC48gfq0l0yc7ZlIxvEBAnQCVja_kY&e=
>
> On Thu, Jul 27, 2017 at 1:30 PM, Nathaniel McCallum <npmccallum@redhat.com>
> wrote:
>
>
> What class of attacks is this trying to prevent? I frankly don't see a
> problem with confusing different types of JWT. But I may just be
> ignorant.
>
> On Thu, Jul 27, 2017 at 2:49 PM, Brian Campbell
> <bcampbell@pingidentity.com> wrote:
>
> During the first WG meeting last week I asked if use of the JOSE "crit"
> (Critical) Header Parameter had been considered as a recommendation for
> preventing confusion of one kind of JWT for another. Time was running
> short
> in the meeting so there wasn't much discussion and it was requested that
> I
> take the question to the list. And so here on the list is that.
>
> Section 3.9 of the JWT BCP draft now recommends explicit typing using
> the
> "typ" JWS/JWE header parameter but does concede that 'the use of
> explicit
> typing may not achieve disambiguation from existing kinds of JWTs, as
> the
> validation rules for existing kinds JWTs often do not use the "typ"
> header
> parameter value.'  And the recommendations for how to use the Type
> Header
> Parameter in JWT strongly suggest that it's not currently being used for
> any
> validation.
>
> Alternatively using the JWS/JWE "crit" (Critical) Header Parameter to
> signal
> the type/intent/profile/application of a JWT could achieve
> disambiguation
> even in validation of existing kinds of JWTs. The critical header lists
> other headers which must be understood and processed by the receiver and
> that the JWS/JWE is invalid if those listed aren't understood. So a new
> type/profile of JWT that uses the "crit" header would produce JWTs that
> would be rejected even by existing applications of JWT validation (that
> actually implement "crit" properly anyway).
>
> The JWT BCP could suggest the use of "crit" in conjunction with a
> profile/application/type specific header. Or it could provide a bit more
> of
> a framework like defining a registering a new JOSE header "p" (strawman
> of p
> as a very short name for profile) and create a registry for its values.
> A
> JWT header using that approach might look like the following where the
> value
> 1 is registered as some cool new JWT profile/application. The consumer
> of
> such a JWT would have to understand and process the "p" header, which
> would
> mean checking that it had the value expected.
>
>     {
>      "alg":"ES256",
>      "crit":["p"],
>      "p":1
>     }
>
> A JOSE compliant JWT validator would reject such a JWT even for an OAuth
> access token or OIDC id_token because the "p" header isn't known or
> understood but is marked as critical.
>
> To me, that seems like an approach to preventing confusion that has more
> teeth than the "typ" header. Which is why I asked about it last week and
> am
> now bringing it to the list.
>
>
>
>
>
>
>
>
>
>
> CONFIDENTIALITY NOTICE: This email may contain confidential and
> privileged
> material for the sole use of the intended recipient(s). Any review, use,
> distribution or disclosure by others is strictly prohibited.  If you
> have
> received this communication in error, please notify the sender
> immediately
> by e-mail and delete the message and any file attachments from your
> computer. Thank you.
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_jose&d=DwICAg&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=JBm5biRrKugCH0FkITSeGJxPEivzjWwlNKe4C_lLIGk&m=02yWnzzFGNlefgVregxSncXu0b9sbh5pTrtBfQsC52A&s=eJ8QZBwe5AO-RDl_E16U1q_KpobaeSRUP4Cp2W-_jJU&e=
>
>
>
>
> CONFIDENTIALITY NOTICE: This email may contain confidential and privileged
> material for the sole use of the intended recipient(s). Any review, use,
> distribution or disclosure by others is strictly prohibited.  If you have
> received this communication in error, please notify the sender immediately
> by e-mail and delete the message and any file attachments from your
> computer. Thank you.
>
>
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_jose&d=DwICAg&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=JBm5biRrKugCH0FkITSeGJxPEivzjWwlNKe4C_lLIGk&m=02yWnzzFGNlefgVregxSncXu0b9sbh5pTrtBfQsC52A&s=eJ8QZBwe5AO-RDl_E16U1q_KpobaeSRUP4Cp2W-_jJU&e=
>
>
>
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://www.ietf.org/mailman/listinfo/jose
>