Re: [GNAP] Summarizing status from SECDIR IETF LC review of draft-ietf-gnap-core-protocol-16

Justin Richer <jricher@mit.edu> Wed, 07 February 2024 21:14 UTC

Return-Path: <jricher@mit.edu>
X-Original-To: txauth@ietfa.amsl.com
Delivered-To: txauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A881CC14CF09 for <txauth@ietfa.amsl.com>; Wed, 7 Feb 2024 13:14:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.106
X-Spam-Level:
X-Spam-Status: No, score=-7.106 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=mit.edu
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NRXoNHZ3sa0P for <txauth@ietfa.amsl.com>; Wed, 7 Feb 2024 13:14:49 -0800 (PST)
Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2122.outbound.protection.outlook.com [40.107.220.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 036CFC14CEFE for <txauth@ietf.org>; Wed, 7 Feb 2024 13:14:48 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bZ2hBwhHliRwk+u9sBhpzwsVdm2KD+rRNOWPpV8+xrn2+c23WKPKj1/WYXCsU5EmGnI1AWgyVH+fmh+6Dfeu5ZtTlkLRk8emxpeHPqjDQvGvKDzYTbpYn9OJkaXbNtWJIjmgjHfZaiDynHN/JXfWgl9PR9dImQh401s7i9H5oewRvvDVAPnvSA3MTP+XBhtWiBo0/0yUH/T4Sa40fTHmAAADX92KAKtMIuPWjqVv79/kNmbsO6p0J+c9ed1FgYuzGYrLF+4A5yTQOqb1hgLgmy3Y/uk0A2g459BoXdDwxkAu1wsVulm5OyaFY1SO6AVE4qtKhFxtHoefA1xkPcBQ7A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VUz4AEYowkeM673D88kZ4zLt0AVw4MK8aB1gPN0d3Ts=; b=me3JFRlN/oLU6X4ONVMxpsSE6uZtWwA/n/Wpj1e4XnNfwmnXA1q4bmu8M1klDz/JvBiosRy6DEseyQhTE8IToWgOoqyxE9zvq57CBC9d6T+rSSRVHvKrACxTLcXjkrHd4ODWZUby/ZyBw6Jj9YQWUB6gD7JbUWtdPLA6w4hLQM0gmXC5a8inKjzkMl6GXhnIh1MwnCaQjcP2DmSUZ2lGY4+BX7yG3vRW/igZ3ESZvk0txdVE2HzUjGUSO+ps/5bGSI1uClNEDEQy8psfA9O1HNZd00TU0sMrRC05qpLTAexao+Sku8sHzVmAmyZ696J6JUIWV4rO5F3CfNrj+Jx38A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mit.edu; dmarc=pass action=none header.from=mit.edu; dkim=pass header.d=mit.edu; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mit.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VUz4AEYowkeM673D88kZ4zLt0AVw4MK8aB1gPN0d3Ts=; b=P0uF1wDFOwCi6a+EV2/Jzn/+0VhEQ6qwqqWiPXyJLlRBijW99prDiwkHl4uZ5l+ravu3txdX2YOpXZ1IcWthtLQnlHL/F0SE5wvs4VVzbhk7v+iTSHl6qIjgOD0yx3qElpsC/4e6FeGtBJnGOLfd/jg7x0O4TSeM3Vwr/sY2v0g=
Received: from LV8PR01MB8677.prod.exchangelabs.com (2603:10b6:408:1e8::20) by CO6PR01MB7500.prod.exchangelabs.com (2603:10b6:303:147::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.38; Wed, 7 Feb 2024 21:14:46 +0000
Received: from LV8PR01MB8677.prod.exchangelabs.com ([fe80::c5bd:292f:c37:64dc]) by LV8PR01MB8677.prod.exchangelabs.com ([fe80::c5bd:292f:c37:64dc%3]) with mapi id 15.20.7249.038; Wed, 7 Feb 2024 21:14:46 +0000
From: Justin Richer <jricher@mit.edu>
To: "rdd@cert.org" <rdd@cert.org>
CC: "txauth@ietf.org" <txauth@ietf.org>, Russ Housley <housley@vigilsec.com>
Thread-Topic: Summarizing status from SECDIR IETF LC review of draft-ietf-gnap-core-protocol-16
Thread-Index: AdpZ9ROUOAGI7nyfTNWlob7LkU2+DQAFZLmA
Date: Wed, 07 Feb 2024 21:14:45 +0000
Message-ID: <05C47833-3C63-4588-B9BB-8FB1673F68FD@mit.edu>
References: <BN2P110MB11074A36A14E33B0F4A9ECEBDC45A@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM>
In-Reply-To: <BN2P110MB11074A36A14E33B0F4A9ECEBDC45A@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mit.edu;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV8PR01MB8677:EE_|CO6PR01MB7500:EE_
x-ms-office365-filtering-correlation-id: 8b73ef5b-b19b-4d66-3046-08dc2821cf7e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: BPRBFQfpBEssh3WzFi38fYG/WEz21M7gTHSK3TeBDvmeFYRIcBRmL0TsGmUYEw7mgEuIZefNLDx+ECW6L7mnsHaI/hPxLU8/clNO7JnJ6bM92jw0TjY6/HSOBLe2PtVyXVqtLzWBSuJyhdAYWQfANNQ+jsuoKXEbx+C1HwRfPV/k7EYjXu8wXpQfZm+aKHfj3GgcHyWwZNtz9lxu/etYRNZYwUkyCJ8n5BnwMrZLO8glZjv4V7E9ielcQRiN81IKYdTVVeEN21Tn7WAEcqC43wZR07E+K8QTqni0+6B/j2d3SZXB7BNIUx+ytgm4/vwmZ99Mwd401qC+XMd3Izj7Vw2u8EGEQ3Guf1zxeyyBJTsvBhxJgPBw4JVszIF/LuT+CAKqU1xOZFIsthhFwgvxPCA6/FRX9hExVYCgZMLTXWKmS6OGOqVAhzH9RFcbRe+WL4lqFA1mWFyJpBDF6PI2UvR3TjOqsd9A5Iqai5pyPgDDYWswArGHoIaUVoE4iqYf+mMxbkiDlPPLoeKsBYTZKS9YhrR5MVMJbvdEfPCTFP7HcuKN3zxBHN2ay71cB1mAqUIYFX4UqgMEc3xyV7k0uMdVGFb2L30yy7L3hJ99bhA=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LV8PR01MB8677.prod.exchangelabs.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(136003)(396003)(376002)(366004)(39860400002)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(2906002)(5660300002)(4001150100001)(75432002)(41300700001)(83380400001)(38100700002)(26005)(122000001)(2616005)(86362001)(6506007)(6512007)(66556008)(53546011)(33656002)(786003)(6916009)(64756008)(66446008)(54906003)(66476007)(71200400001)(966005)(6486002)(66946007)(76116006)(478600001)(36756003)(166002)(8676002)(8936002)(4326008)(316002)(38070700009); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: H2YRBTCbMlxWJQu4GSfZnAfUvx1+p0Fbfyn+CqGKDobrkqt3sTXEpnwd1xPcOFmmw0zRWpJoYWounhczR/TsIdtL6XTy9mAnGx7sqcyOHkRfhpGoLUfLB53ZgRie/1LQv62Ki+03g4fzSJhoAvmUS52VMXNWBU1hcUnedwWYfnehkUISWdQKWe4IRjxIxUX4CITcU6a3j0ZYMbPeWLDBGvs9CahHxlhpuSJeA+VnbY3bNFQwZ/jd1gTcSmwLLMvzAWu1c5Ikb10T7AQSlhtOPhw8EigNKSjMWBQ4b8x1ObZYOLVGH7q9G7pXx8UgzTbm6aIRa8waPhqEjpmxzphD0kjaXJ4ENtnA2LA1QjtPRd78clPZTTY0S2TZ37NIklMfI6B/BvaPm0iKM6+JglRUAi++0qSmFh9kRgAldixNn/85IKZiqepo3ev6dGgG8iuuPPz4hED4j3Wo/EdY2EPWqwikUxtHkPGlir7lS4E01nYcfsBUpk3sPaQPyaVvb7nOFXGJ4mLx/2kSqaoi5jC3WZEmtq/o/QMitqcYo3iTJHVr38kB3Mc9Nv6FHHubNy5GC1oGHTSVuvAmJ8jZvo5+txlD1Z06NAD5c1YPu8BJ2O9oCdC7dGvdZ/caQrbb9qYbkMEf+lVgLC7B0LUSkrzsUNL+g0Ce03s5v1HQEdLR4l6ivymZEtYTzwNZjEqrMYasvs577pyNm6OfI1pFiq7t+GXIFNpkD50J/hITpOb3VpeoQujcacgNVmRwq6K5A6aeETOGm7ds7mCBTHYqFxCjzPe04kuiquumjB9GDbw6UVEyqZ+fqyusuiH+kRIiRhStMj/KcMyRWjk5I5WsZOKzhD+qjuiXc9ig71u5r+U1YRZslRNWi6rEnLSDwXbl22CwNVIXzZ0mSJXy9e1L/Eu0VCOF2JE9p6pq4fH0b9n0r7k+l9jUFaQK/UcWY1Wlv+tw3Pn4su+OOrsuAR2F4nAB/fkexL/wqouq9CrjR/TadPSRU7+oZc5txrW4Y14g/4yAoNG6uv76CL9sjHfggJytN0PkesJaGea/SfNF1K2rAuzhmX2fRshjg6aKbNB2KdVhV0DWof/UA9b3SE+edX9RmlhtUSGCleyE4neaqMBhFbC5R2isUTj1J5+oWRJ7YHC6+zPECNtlQuuazbYlslGPbIQOHrlOqJhu0FbCbZMxBg3kW3TYQcyda5BE7C85U2Efh3JEhhLSTU4Hf0L1FfbnVJU3EaOledaS1Bj9UYEx0klcMr74tuDVD/1AV3ukP+TvYQrbHw2cqADyIHgMieR03DRhUkOdUUqfj+GxqaBxkf5xEAJE2gz93aJoZqk3g75PkocFzDmjMjP9sPiRETyxq9AldmQYwR2pc/lmA5bjwU+ycRvg3XN0vRVeqU0vlcwbRmqvPqLzpPYwsZqMUMvWzvAXTMQGv/lVCzsUFCgD//rjcv6FigtOx4hbpLm4ZM33Gkra54eegHhNO75kgS6Y2WHJCG296GflBVZuMxiwZMv3H/C/AycLCWldlxyAYdNvweYs2pDpx+Qc6WE1+XkU3Hkvjd4Wv/NtSNECm1XDWz/cK3qM23XSoNkzUQVn+ut2
Content-Type: multipart/alternative; boundary="_000_05C478333C634588B9BB8FB1673F68FDmitedu_"
MIME-Version: 1.0
X-OriginatorOrg: mit.edu
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: LV8PR01MB8677.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b73ef5b-b19b-4d66-3046-08dc2821cf7e
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Feb 2024 21:14:45.9820 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 64afd9ba-0ecf-4acf-bc36-935f6235ba8b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 4XbtNYnmHohWH8zD2dVonexwHLnpqirBhs74wzrzrLe1m39ofnwqrztiFP1ET2Kx
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR01MB7500
Archived-At: <https://mailarchive.ietf.org/arch/msg/txauth/VXjH88A5GvcSaMqwLGH4d310IcQ>
Subject: Re: [GNAP] Summarizing status from SECDIR IETF LC review of draft-ietf-gnap-core-protocol-16
X-BeenThere: txauth@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: GNAP <txauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/txauth>, <mailto:txauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/txauth/>
List-Post: <mailto:txauth@ietf.org>
List-Help: <mailto:txauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/txauth>, <mailto:txauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Feb 2024 21:14:53 -0000

Hi Roman (and Russ), answers inline below.

— Justin

On Feb 7, 2024, at 1:53 PM, Roman Danyliw <rdd@cert.org> wrote:

Hi!

During IETF LC, SECDIR (Russ Housley) performed a review on draft-ietf-gnap-core-protocol-16.  See https://mailarchive.ietf.org/arch/msg/txauth/i9NEvnr2l1p8hW7U_l382NZbLxg/.  Justin (Richer) responded and iterated on this review. Here are the relevant messages in the thread since it is not linked from the SECDIR review link in the Datatracker.

(Justin-2023-11-27) https://mailarchive.ietf.org/arch/msg/txauth/-Zl-mKGKC0WgujAlj8cd3sOgr2Q/
(Russ-2023-11-28) https://mailarchive.ietf.org/arch/msg/txauth/ZArrGJN06Tsyi1o9g48P2J4fzIo/
(Justin-2023-11-29) https://mailarchive.ietf.org/arch/msg/txauth/Ek0NCQeiUfuiJv7EdSFzPq2s-ao/

A -17 of the document has been released.  I very much appreciate the deep review and iteration.  I am trying to re-review the document and identify unresolved issues.  The following is my assessment.  The inline thread was broken at some point making it difficult to attribute text so I'm repeating the initial feedback from the SECDIR review here and annotating it with [Roman].  Please consult the above links for some of the details.  I'm looking for resolution of the issues below with further discussion or a document change; or a correction that that this issue been addressed in a way I didn't immediately recognize.

** (Russ on -16) Section 1.2: I am having trouble getting my head around the idea that
the AS role grants subject information to client instances.  This feels
like a purposeful confusion between authentication and authorization.

** (Russ on -16) Section 1.3: Elsewhere in the document, there is a careful distinction
between software that acts on behalf of a subject and the natural person
that uses the software.  This distinction is missing in the definition
of Subject.  It is made worse by including organizations.  Please say
how people and organizations "decide whether and under which conditions
its attributes can be disclosed to other parties."  I believe this is
done by interacting with the software or initial configuration of the
software.

[Roman] Is it possible to be specific on where there is a mismatch?

GNAP is fundamentally a delegation protocol, which can delegate both authorization to call APIs (a la OAuth) and the identity of the user (a la OpenID Connect) in the same flows. I do not see a confusion between the authorization and authentication aspects here, especially as they are deliberately requested and returned separately from each other.


** (Russ on -16)  Section 2.1.2: I expected a parallel structure to Section 2.1.1.  I
think it would really help the reader if the sections had the same
structure.

These two sections are not intended to have parallel structure. Section 2.1.1 says "these are the bits you need to use to get an access token" and 2.1.2 says "to get more than one access token use an array of the things in 2.1.1".  The "one or more" language was a bug and was fixed in -17; otherwise, all the fields are used the same way and I don’t see a value in repeating them in this section — I think that would actually confuse the reader more.


** (Russ on -16) Section 2.3.2: I am not worried about logo_uri if only data: URIs are
allowed, but that does not seem to be the case.  Since the logo might
be fetched, there need to be an integrity protection mechanism to
ensure that the web server does not provide a different image than
was intended.  RFC 3709 has this same concern and it uses a hash of
the image to ensure that the intended image was provided.

[Roman] Section 13.15 has several relevant considerations.  Building on Russ’s point of having confidence in fetched image and the intent to provide flexibility, isn’t there a residual security considerations to document where an AS provides a URI which

Both the value and security consideration come from the client being able to swap out the image without updating the AS.

I’ve proposed an additional security consideration just for this particular aspect in this PR:

https://github.com/ietf-wg-gnap/gnap-core-protocol/pull/524


** (Russ on -16)  Section 2.5.1: I do not understand what an implementer is supposed to
do based on this MUST statement:

  "All interaction start method definitions MUST provide enough
  information to uniquely identify the grant request during the
  interaction."

[Roman] These seems like guidance which should be included (moved to?) Section 11.8 which contains the evaluation criteria for the DE.  That sections already has a number of items to consider.


I’ve put together a PR to move this to the IANA section.

https://github.com/ietf-wg-gnap/gnap-core-protocol/pull/525

** (Russ on -16)  Section 2.5.2.1: How does the use of an application-specific URI scheme
provide for the same security as HTTPS?  It seems like an way to avoid
them.  This text appears several places in the document.

[Roman] This doesn’t appear to have been resolved.  There was an indication that improved definitions would be added to Section 1.1

An application-specific URL is not loaded across an untrusted network connection and is therefore equivalent in protection to plain HTTP on localhost. I’ve added that text explicitly in all the places I could find:

https://github.com/ietf-wg-gnap/gnap-core-protocol/pull/526

I don’t believe it needs an additional definition.


** (Russ on -16) Section 7: Please consider a reference to RFC 4107.  I'm not sure where
in this section is the best place to add a cite.

[Roman] -16 already contained a reference to RFC4107 in Section 13.7.  The discussion thread seems to indicate that additional pointers would be added in a version after -16.  I don't see it.

It seemed to make more sense to keep the reference in the security considerations section as opposed to making a reference to it (normative or otherwise) in the client-signing section (7). Yes, clients and AS’s need to manage and store their keys well. But the thrust of section 7 is how those are presented on the wire and used to bind request messages to keys, not how the keys themselves are managed. There’s already a forward reference to the security section that mentions RFC4107 in section 7, so we felt that was sufficient.


** (Russ on -16) Section 9.1: I do not understand what an implementer is supposed to
do based on this MUST statement:

  "client instance MUST check its value to protect itself"

(Justin) The client instance checks whether the value of the `referrer` parameter is the URI of the resource server that it made the request to. The rationale for this is discussed a little more in §13.36 (https://www.ietf.org/archive/id/draft-ietf-gnap-core-protocol-16.html#security-compromised-rs).

(Russ) What checks MUST the client instance perform?  Section 13.36 does not address my concern.  Section 13.36 is about protections that are implemented at the resource server.

(Justin) The client instance compares the referrer parameter returned to the URL of the RS.

[Roman] Perhaps this clarifying guidance can be added directly into the text.

I’ve put together a PR to clarify this, as well as straighten out the language around the requirements of what’s returned from the RS and what the client is supposed to do with them.

https://github.com/ietf-wg-gnap/gnap-core-protocol/pull/527


** (Russ on -16) Section 13.24: This section does not seem like a Security Consideration.
If the calculation of the interaction hash is not done the same, then
there will be interoperability issues.

[Roman] Doesn’t seem like we have resolution on the issue.

It’s a security consideration because the client can choose to not calculate and check the value, which would leave it open to the described attack. The mitigation of the attack is to perform the function as specified in the document. This section explains why it’s important, which I believe is a valid use of a security considerations section.


Regards,
Roman