On Wed, May 8, 2024 at 11:03 AM Sam Goto <g...@google.com> wrote:

>
>
> On Wed, May 8, 2024 at 10:45 AM Neil Madden <neil.e.mad...@gmail.com>
> wrote:
>
>>
>> On 8 May 2024, at 17:52, Sam Goto <g...@google.com> wrote:
>>
>> On Wed, May 8, 2024 at 7:23 AM Neil Madden <neil.e.mad...@gmail.com>
>> wrote:
>>
>>> Thanks for these slides and recording. This is a fascinating proposal. I
>>> have plenty of potential thoughts and comments to digest, but I guess the
>>> most fundamental is that this spec assumes that users and IdPs will be
>>> happy for their browser to be a trusted party involved in login flows.
>>>
>>
>> Yep, that is, indeed, the privacy and security threat model that we
>> (FedCM specifically, Web Platforms API in general) use: the user agent is a
>> trusted party.
>>
>>
>> I’m sure browser developers do of course view their own products as
>> trustworthy, but not everyone does.
>>
>
> The architecture of the web is constructed in such a way that a user can
> (and, in fact, do) change user agents if they stop representing you. Same
> (in terms of the economics and privacy/security threat model) goes for your
> operating system and your hardware. From a security threat model
> perspective, it also largely assumes that the user agent (including the OS
> and the hardware) is trusted by the user.
>
>
>> Episodes like [1] do provoke some distrust. Especially in corporate
>> environments where users are forced to use a particular user-agent (and may
>> be subject to mitm proxies), this may not be a universally accepted threat
>> model.
>>
>
Enterprise admins are considered privileged
<https://chromium.googlesource.com/chromium/src/+/master/docs/security/faq.md#are-enterprise-admins-considered-privileged>,
so also outside of the browser's ability to guard against physically local
attacks
<https://chromium.googlesource.com/chromium/src/+/master/docs/security/faq.md#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model->
(including
public/shared computers). Some of these are derived
<https://chromium.googlesource.com/chromium/src/+/master/docs/security/faq.md#why-arent-compromised_infected-machines-in-chromes-threat-model>
from these
<https://web.archive.org/web/20160311224620/https://technet.microsoft.com/en-us/library/hh278941.aspx>,
e.g. "A computer is only as secure as the administrator is trustworthy.".

I hear you, these [1] are problematic, but just wanted to be transparent
about how browser engineers generally think about these threats and which
Security threat models are used.


>
>> [1]:
>> https://www.theverge.com/2023/4/25/23697532/microsoft-edge-browser-url-leak-bing-privacy
>>
>
>>
>>
>>> In particular, the call to the accounts endpoint assumes that the IdP is
>>> willing to provide PII about the user to the browser. That seems
>>> questionable.
>>>
>>
>> Aside from a privacy/security threat model perspective (meaning, the user
>> agent already has visibility over every network request made available to
>> the content area)
>>
>>
>> Sure, but if I use the recommended auth code flow or encrypted ID tokens,
>> then PII is not exposed to the browser.
>>
>
> From a privacy/security threat model perspective, again, If PII is
> rendered in the DOM, it is exposed to the browser rendering it. When an IdP
> renders a page with the user's personal information, that's exposed to the
> browser (in the same way that a HTTP request would).
>
>
>> And it’s not just the browser itself in the current proposal, as the
>> token is exposed to javascript, of course, so the usual XSS risks.
>>
>
> Yeah, XSS is a risk (extensions, particularly, come to mind), but not one
> that is bigger than the status quo (e.g. extension can intercept top level
> redirects too).
>
> In fact, with a high-level API (such as FedCM), you can constrain the
> scope of the memory footprint in ways that low-level APIs (e.g. top level
> redirects, iframes and pop-up windows) can't, so I only expect FedCM to
> provide a much higher security bar than the alternatives.
>
>
>>
>> , I think that, if you look through the lenses of the design of
>> incentives, this is indeed something that we are still gathering
>> validation. So far, it seems to strike a good balance, but I think you are
>> right in that this introduces an extra game theoretical position that can
>> be questioned.
>>
>>
>> I guess a related question is whether browser vendors are intending for
>> this to become the only game in town for cross-site authentication?
>>
>
> It is not clear, it is probably too soon to tell either way. Tracking on
> the web has a lot of moving parts, and not all of them have settled.
>
>
>> If not then those with differing threat models can use other mechanisms.
>> But if the plan is to eventually completely block all other federation
>> protocols then it needs to work for all use cases.
>>
>>
>>
>>> This endpoint also has no CSRF protection, so risks leaking PII more
>>> generally (eg to any origin that has been CORS-allowlisted).
>>>
>>
>> As far as CSRF goes, we expose a Sec-Fetch-Dest HTTP request, which is a 
>> forbidden
>> request header <https://fetch.spec.whatwg.org/#forbidden-request-header> 
>> (meaning
>> that it can't be polyfilled in userland).
>>
>> https://fedidcg.github.io/FedCM/#sec-fetch-dest-header
>>
>>
>> Ok, that is good. But it feels like something that IdPs could easily
>> forget to enforce. In general, being one missed security header check away
>> from a PII data leak seems not a fun place to be for an IdP.
>>
>
> Yeah, agreed. I'd love to hear about other ways that we could make this
> endpoint more secure.
>
>
>>
>> As another general comment, I'd say that if you want this to be easy for
>>> RPs to apply to existing login flows then it needs to be something that is
>>> easy to configure/initiate via a reverse proxy. That would suggest HTTP
>>> header-based rather than a JS API in my opinion.
>>>
>>
>> Yep, that sounds reasonable to me. For the most part, we think of JS APIs
>> and HTTP request are largely isomorphic in the important parts (again,
>> privacy/security wise), and we can expose either/both purely based on
>> ergonomics (as you suggest), so yeah, if this makes it easier for
>> developers, it is easy to make it happen, I think.
>>
>>
>> — Neil
>>
>>
_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to