[OAUTH-WG] Re: Call for adoption - First Party Apps

Neil Madden <neil.e.madden@gmail.com> Tue, 10 September 2024 13:47 UTC

Return-Path: <neil.e.madden@gmail.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 6FC9BC1DA2F6 for <oauth@ietfa.amsl.com>; Tue, 10 Sep 2024 06:47:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.105
X-Spam-Level:
X-Spam-Status: No, score=-2.105 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, 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 (2048-bit key) header.d=gmail.com
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 eMBkSBpCT6k3 for <oauth@ietfa.amsl.com>; Tue, 10 Sep 2024 06:47:13 -0700 (PDT)
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6AE51C1519B8 for <oauth@ietf.org>; Tue, 10 Sep 2024 06:47:13 -0700 (PDT)
Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-374bd0da617so519274f8f.3 for <oauth@ietf.org>; Tue, 10 Sep 2024 06:47:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725976031; x=1726580831; darn=ietf.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=qrQ4p0oO6nB/LSYFEMrDQW5NVMvxabReZ50Umk4TlJc=; b=J6Nb9GQY695NciDIRTi0qFNDyn7VVZpxsx05LqeF4uNHxeGT7R1shTCEtCpsHzS824 cb5HP7W2T6nIYqKl8dpjJuqCgXPMx7kpFGdDEHDt58XW9lWHW1qiedJ9IfNQ35J9nCWR J5S5A+qqICjvJLoFZgLUhDJ8A3YLwU4QbWwRVpwkw+Kwab0hKTPlR47lef5ObeYtFrzP RlVK9cbswjsPFyNfWSqte/xSf1Ra1e4JYrEQ28M4+2LRkwM21a/0lLwW+G61BmaJ7qnP Hd+fGsG2vJ1NVM5C9XPOJXq1+zqhhL6PFJ+3rZxtuqJijXvUpngLa2V4yD/+7vOYlH2q Dxnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725976031; x=1726580831; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qrQ4p0oO6nB/LSYFEMrDQW5NVMvxabReZ50Umk4TlJc=; b=E8DMWkmguXFlBXs+ExVhlpnUzZ4baj08WFtJ8UkykliX1k//l4CXN1m2QhEMi3seFR BEJ/KFfYpzDid+scw1P85y+IQGB13G+fhADJsXFM14IgJonJzit4upIl8JxEY204tIDI 6T3i221T6XywkdWn86vret00XCQ5amckB3xnKH7Hq5X3bsTtauG9fMHU9VUsQLbwpiOi LwfLnCd8FdxuOqAZahxZTWpnQUmpjK/KuIuz1rLfaVZjmp01DsAByTva7IiBsnzo2PU0 zfC0r3xh32jXwtpWgsu9yyHKHDDeq/1PPukyBvpl9Cd3n7YVVyzM+IR+JTn1vUyvcHRo ryjw==
X-Gm-Message-State: AOJu0YyOc9TbtCzp+m7i+JiRB0ILmVWXvBH1fUzKWiMZOY8/9xUHAo71 UCPhCaXe0iP6qTNEahYoiJdc6qq+x6fjg+JLKjR6tQZap8NQXYZcOOY+UQ==
X-Google-Smtp-Source: AGHT+IGrZUcs+jUUYzEYhA7ZES0xzJREzij6g3CHB2bnX87fSUcCOsS/C4yN1BLRxZOWefcq+0dnCw==
X-Received: by 2002:adf:efc4:0:b0:371:8750:419e with SMTP id ffacd0b85a97d-37889682e74mr9708649f8f.47.1725976030385; Tue, 10 Sep 2024 06:47:10 -0700 (PDT)
Received: from smtpclient.apple ([185.147.91.181]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37895676093sm8970498f8f.65.2024.09.10.06.47.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Sep 2024 06:47:09 -0700 (PDT)
From: Neil Madden <neil.e.madden@gmail.com>
Message-Id: <F7ECC695-67FF-4EFE-8ACB-731292028282@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_BBD53877-2CAD-4AA7-9094-48DD9A870280"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.10\))
Date: Tue, 10 Sep 2024 14:47:08 +0100
In-Reply-To: <CAGBSGjr8S+LixUpEMgNDbcvRgF0nef+01HLfa0yvxxjDaqKS1w@mail.gmail.com>
To: Aaron Parecki <aaron@parecki.com>
References: <CAD9ie-uur2NSN+BBMFfhv9UcfZtmQsByUhpyr1huvQiC+5PX8g@mail.gmail.com> <F68A8B14-8511-49E6-A06F-5BBE5EE549CC@gmail.com> <CAGBSGjr8S+LixUpEMgNDbcvRgF0nef+01HLfa0yvxxjDaqKS1w@mail.gmail.com>
X-Mailer: Apple Mail (2.3696.120.41.1.10)
Message-ID-Hash: 6AH26PQJ5CF7NKQONNKEWT7EEZZUR7BV
X-Message-ID-Hash: 6AH26PQJ5CF7NKQONNKEWT7EEZZUR7BV
X-MailFrom: neil.e.madden@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-oauth.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: oauth <oauth@ietf.org>
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [OAUTH-WG] Re: Call for adoption - First Party Apps
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/y8i0YXR_T4_LTaoizzSPPfGwjto>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Owner: <mailto:oauth-owner@ietf.org>
List-Post: <mailto:oauth@ietf.org>
List-Subscribe: <mailto:oauth-join@ietf.org>
List-Unsubscribe: <mailto:oauth-leave@ietf.org>

Yes, I’ve watched the recordings. I have sat through many client meetings where UI designers insist that a “native experience” is absolutely essential, despite the clear security problems with it. But that native experience is normally actually worse for users, despite appearing to look better (eg no automatic SSO from existing web browser cookies etc). I’m yet to hear a genuine argument in favour of the “native experience” that doesn’t boil down to aesthetic preferences.

Limiting the endpoints to first party apps, via some strong client authentication method (attestation) helps with some of the security concerns, but it doesn’t really address the root issues. If we encourage users to enter credentials directly into apps, then phishing apps become a danger, exactly as RFC 8252 says (regarding in-app user-agents, but the same principles apply):

	"When all good actors are using external user-agents, the advantage is
   that it is possible for security experts to detect bad actors, as
   anyone faking an external user-agent is provably bad.  On the other
   hand, if good and bad actors alike are using embedded user-agents,
   bad actors don't need to fake anything, making them harder to detect.”

s/embedded user-agent/native UI/ and I think this argument very much applies to the current draft.

Even if you lock down the API so those other apps cannot login directly with those credentials, it is too late if the user has already entered their username and password. Use of a native UI, which is easily spoofed, bypasses all of the phishing protections that browsers have added over the years (eg warning about malicious sites, highlighting the origin, password manager origin checking before auto-filling, etc).

Secondly, locking down the API to first-party apps only sets a precedent that eg the official BlueSky/Twitter/Facebook app will always have a different/privileged login experience compared to third-party apps. This seems to run contrary to AIB statements like https://datatracker.ietf.org/doc/statement-iab-statement-on-the-risks-of-attestation-of-software-and-hardware-on-the-open-internet/ <https://datatracker.ietf.org/doc/statement-iab-statement-on-the-risks-of-attestation-of-software-and-hardware-on-the-open-internet/> (a draft, admittedly).

— Neil

> On 10 Sep 2024, at 13:55, Aaron Parecki <aaron@parecki.com> wrote:
> 
> Neil, I don't know if you've seen the several presentations I did at the last few IETF meetings about this work, but a large part of the motivation of this work is because *currently* people are bending over backwards to provide a native user experience for their first party apps and doing so in a way that is not only not standard, but even worse than what could be done with a standardized method. Please go review those recordings for more of the background.
> 
> I am open to the discussion of how best to limit this to first party apps, maybe that part needs to be stricter than what is currently in the draft. But at the very least, the draft says in no unclear terms that this is not for use by third party apps.
> 
> Aaron
> 
> 
> On Tue, Sep 10, 2024 at 3:59 AM Neil Madden <neil.e.madden@gmail.com <mailto:neil.e.madden@gmail.com>> wrote:
> I know that apps that accept credentials directly are common place. But the direction of travel has so far been to discourage that: eg deprecating ROPC, requiring use of an external vs embedded user-agent etc. (Sorry, I misremembered: it’s BCP 212 that requires this, not the security BCP — and it has a lot of good rationale for that decision). 
> 
> 3rd party apps follow where first-party apps lead. 
> 
> — Neil
> 
>> On 10 Sep 2024, at 11:14, Dick Hardt <dick.hardt@gmail.com <mailto:dick.hardt@gmail.com>> wrote:
>> 
>> 
> 
>> Neil
>> 
>> Users input credentials directly into apps all the time in OAuth -- it is at the AS. 
>> 
>> There are many deployments that use OAuth where the AS and RS are the same party. The objective of this draft (as I understand it) is to provide a simplified OAuth flow for this use case. The BCP does not address this use case.
>> 
>> Why would we not want to provide a best practice for deployments where the AS and RS are the same party? We will likely improve the security of those deployments over them making up their own protocol, won't we?
>> 
>> /Dick
>> 
>> 
>> 
>> On Tue, Sep 10, 2024 at 10:20 AM Neil Madden <neil.e.madden@gmail.com <mailto:neil.e.madden@gmail.com>> wrote:
>> The draft is motivated by allowing native apps to provide a login journey for OAuth rather than using the browser. This encourages people to input credentials directly into apps, which (a) directly contradicts the advice in the security BCP, and (b) opens up users to significantly more attack vectors (including that the phishing-resistance of FIDO is significantly weakened). We shouldn’t be encouraging this. 
>> 
>> — Neil
>> 
>>> On 5 Sep 2024, at 15:48, Tim Cappalli <tim.cappalli@okta.com <mailto:tim.cappalli@okta.com>> wrote:
>>> 
>>> 
>>> IMO, we're getting very off topic here. The WebAuthn text is not part of the draft being called for adoption.
>>> 
>>> On Thu, Sep 5, 2024 at 2:15 AM Neil Madden <neil.e.madden@gmail.com <mailto:neil.e.madden@gmail.com>> wrote:
>>> On 5 Sep 2024, at 05:45, David Waite <david@alkaline-solutions.com <mailto:david@alkaline-solutions.com>> wrote:
>>> > 
>>> > 
>>> > 
>>> >> On Sep 4, 2024, at 4:27 PM, Neil Madden <neil.e.madden@gmail.com <mailto:neil.e.madden@gmail.com>> wrote:
>>> >> 
>>> >>> On 4 Sep 2024, at 22:48, Watson Ladd <watsonbladd@gmail.com <mailto:watsonbladd@gmail.com>> wrote:
>>> >>> 
>>> >>> I can always grab the cookie jar off the user browser if I have that
>>> >>> level of access.
>>> >> 
>>> >> USB access is not privileged, but that’s beside the point.
>>> > 
>>> >> 
>>> >> Put another way, the phishing-resistance of WebAuthn only really makes sense in a world of sandboxed apps: web apps, mobile apps. Any spec that encourages the use of OAuth auth flows outside of such sandboxed environments, as this one potentially does, is going to make defending against phishing harder.
>>> > 
>>> > The client is not an identified/authenticated component in the architecture, so there is a user trust required in using a client - that the client actually is an agent acting in the user’s interest rather than acting maliciously.
>>> > 
>>> > Platforms have the ability to provide specific API for these interactions to become a trustworthy client, and to block privileged access (including access to speak directly to hardware) behind audited entitlements to prevent from installed software acting as a malicious client.
>>> 
>>> Right, this is what I mean by sandboxed.
>>> 
>>> > 
>>> > Note that some platforms also provide entitlements and heuristics for password manager access - however, as a knowledge-based system the platform cannot really prevent malicious applications from still attempting to manipulate their way to credential phishing.
>>> > 
>>> >> 
>>> >> (I’d also question why first-party apps need a standardised API for this anyway: they can do whatever they like using proprietary APIs already).
>>> > 
>>> > I would struggle to come up with standards-track RFCs which would not be able to instead be accomplished with proprietary APIs. The editors and working groups found value in peer review and in interoperability.
>>> 
>>> Standards are for promoting interoperability, not for getting free peer review of private APIs. 
>>> 
>>> > 
>>> > I have seen the pitfalls of a proprietary approach to this and would say peer review is important. My primary concern is whether we can have a clients that authenticate against multiple implementing ASes based solely on this work. Profiling authentication methods like passkey-based authentication would go a long way toward alleviating that concern.
>>> > 
>>> > -DW
>>> 
>>> _______________________________________________
>>> OAuth mailing list -- oauth@ietf.org <mailto:oauth@ietf.org>
>>> To unsubscribe send an email to oauth-leave@ietf.org <mailto:oauth-leave@ietf.org>
>> _______________________________________________
>> OAuth mailing list -- oauth@ietf.org <mailto:oauth@ietf.org>
>> To unsubscribe send an email to oauth-leave@ietf.org <mailto:oauth-leave@ietf.org>
> _______________________________________________
> OAuth mailing list -- oauth@ietf.org <mailto:oauth@ietf.org>
> To unsubscribe send an email to oauth-leave@ietf.org <mailto:oauth-leave@ietf.org>