Re: [OAUTH-WG] WGLC review of draft-ietf-oauth-security-topics-13

Daniel Fett <fett@danielfett.de> Mon, 25 November 2019 16:19 UTC

Return-Path: <fett@danielfett.de>
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 3193B120997 for <oauth@ietfa.amsl.com>; Mon, 25 Nov 2019 08:19:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=danielfett.de
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 1l1mDYCFHrJF for <oauth@ietfa.amsl.com>; Mon, 25 Nov 2019 08:18:59 -0800 (PST)
Received: from d3f.me (redstone.d3f.me [5.9.29.41]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B75D3120991 for <oauth@ietf.org>; Mon, 25 Nov 2019 08:18:58 -0800 (PST)
Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by d3f.me (Postfix) with ESMTPA id 6DBC41B29 for <oauth@ietf.org>; Mon, 25 Nov 2019 16:18:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=danielfett.de; s=dkim; t=1574698737; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2DZGbYThenzhjTisZzbqmQuzjqDQGm1lknkNYF3BoRo=; b=qR0AsNlPu6myoTIYzPWwmcB6CahG9wO49xq4GQELa+ZOK+1Me+jb7qqR01NtwibfkVn2cy Ro4MVRa/l8uixnP7qdvlQMWGeXFVYachwrvXdXFuFjsgD+8PjybMVsq8eAikejNzgWn1KT 4O0FCUCpKTW6ZQD335RUW2B6ZabiwbU=
To: oauth@ietf.org
References: <a017889e-f50a-3e34-f8e5-477a56518051@gtrs.de>
From: Daniel Fett <fett@danielfett.de>
Message-ID: <9da85307-c21b-01d6-bfd7-db2638a545b3@danielfett.de>
Date: Mon, 25 Nov 2019 17:18:25 +0100
MIME-Version: 1.0
In-Reply-To: <a017889e-f50a-3e34-f8e5-477a56518051@gtrs.de>
Content-Type: multipart/alternative; boundary="------------B2A1001EF432A137DECC4A2A"
Content-Language: de-AT-frami
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=danielfett.de; s=dkim; t=1574698737; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2DZGbYThenzhjTisZzbqmQuzjqDQGm1lknkNYF3BoRo=; b=TY6gt/hBphH+ter8x6m1qmjxhojUfb0CFlihxulug4akdRfN2nqh+bgjxgM/wzbiu7txrF WzSXUvJ274KgW9HteHGfdsx4UpqQXzyRTuDD7TOfR4s4I4h+tlERp8tR3GoQzkg+8VdyKo dYvskmZ74dZN6uCtTcQw2MG8eQp2T14=
ARC-Seal: i=1; s=dkim; d=danielfett.de; t=1574698737; a=rsa-sha256; cv=none; b=bQa9XOUGP5Z7kWI8TVJ2Ooem8dejfKzZZ6p8t/impzCxiPAGZDJvwL4UnwW8aPUbfr0uSg85Cm0+Z2ga3EXb0mY+/ukI+oomDv529zYQbm8u6uFstBANw0/kXcRKhUP0RMpCDbUFTxiit9hPuy1LXVolnda5QUIuX2reA5HD7fU=
ARC-Authentication-Results: i=1; d3f.me; auth=pass smtp.auth=fett@danielfett.de smtp.mailfrom=fett@danielfett.de
Authentication-Results: d3f.me; auth=pass smtp.auth=fett@danielfett.de smtp.mailfrom=fett@danielfett.de
X-Spamd-Bar: /
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/80zNKDASvi4Or-8I-vvcjtZ5tbE>
Subject: Re: [OAUTH-WG] WGLC review of draft-ietf-oauth-security-topics-13
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, 25 Nov 2019 16:19:01 -0000

Hi Guido,

thanks for the feedback! I incorporated most of it into the next version.

Some comments:


Am 22.11.19 um 18:00 schrieb Guido Schmitz:
> * Section 3.1, Third Paragraph, Section 4.7, and other places throughout
> the document: (Please excuse that the following might be a bit
> nitpicking.) The term CSRF might be misleading as we are not talking
> about "classical" CSRF, where a party is tricked into (implicitly)
> believing that a request was caused by its own origin (from a web
> browser), but was actually sent cross-origin. Here, we are talking about
> requests which (by protocol) are typically intended to be cross-origin.
> The point here is not that the request is cross-origin, but that it
> originates from an unintended (cross-)origin. Maybe you could mention
> that we are talking about an advanced kind of CSRF in the
> double-redirection context.
Good catch, I added a reference to RFC6819, where this kind of CSRF is
explained in more detail.
>
> * Section 3.1.2: What about SPAs? Either they use authorization code
> grant with the help of some server or use CORS to access the token
> endpoint. The token endpoint, however, then needs to support CORS. The
> obvious question is then, what is the CORS policy of the token endpoint?
> It is probably fine to allow all origins (if this policy only applies to
> the token ep itself and not other eps at the same origin) or do I miss
> something?
This policy should be fine. But this is a topic for the SPA BCP.
> * Section 4.1.3, "fix fragments": The source [fb_fragments] only says
> that Facebook adds the fragment #_=_ to some URLs. There is no
> explanation or reasoning in the source (as well as in this document) at
> all that this technique strips the fragment from redirects. (Mike Jones
> also commented on this.)
Thanks, I removed the reference completely and added some explanation
instead.
> * Section 4.2.4, Bullet Point "referrer header": Adding the
> rel="noreferrer" attribute to links does not protect against leakage via
> third-party content. Referrer Policy is the only effective
> countermeasure of the mentioned two as it can be used to completely
> suppress the Referer header or at least strip it to the origin. Should
> we give a concrete example for Referrer Policies? For example, the
> header "Referrer-Policy: no-referrer" in the response completely
> suppresses the Referer header in all requests originating from the
> resulting document.  Also, this measure is easier to implement than
> adding rel="noreferrer" to each link. (BTW, there is also an excess
> quotation mark in this paragraph.)
You're right, Referrer Policies are the way to go. I added your example.
> * Section 4.5.3, "Code-bound State": This requires that state is fresh
> for each flow. You should mention or even emphasize this.
>
> * Section 4.5.3, "Per-instance client id/secret": This essentially says
> that native apps or anything that might be able to obtain and store
> client id/secret (e.g., using dynamic registration) could do this. Web
> SPAs could do this as well (e.g., using Web Storage). The last sentence
> of this paragraph is somehow confusing.
I propose to remove these two points from the bullet point list
completely. They are more of an academic discussion for a problem that
is already solved by PKCE at this point. Any objections?
> * Section 4.5.3, Second Paragraph after bullet points, "Note on
> pre-warmed secrets": What is the context of this note? Does the attacker
> start a flow on some device, extract secrets, and then pass this device
> to the victim who then completes the OAuth flow? (Mike Jones also
> remarked that "pre-warmed secrets" is not explained)

That is essentially a pointer in the general direction of the PKCE
Chosen Challenge attack. I agree that it needs a better wording.

-Daniel