As of Firefox 60, Mozilla has enabled support for the Web Authentication API by default. We should audit it or at least understand it better, or we should disable it by setting security.webauth.webauthn to false. See:
https://bugzilla.mozilla.org/show_bug.cgi?id=1432542
Designs
Child items 0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Trac: Keywords: TorBrowserTeam201808R deleted, TorBrowserTeam201808 added Status: closed to reopened Summary: audit or disable the Web Authentication API to audit the Web Authentication API Resolution: fixed toN/A
The com.google.android.gms:play-services-fido:18.1.0 artifact required by Fenix/GeckoView to enable WebAuthn support is a proprietary library and it seems to be the only proprietary lib in Tor Browser Android.
I've thought of a possible solution, if we find nasty things currently happen: we could force Firefox to report/consider the token not already connected until the user presses a button in the browser (e.g., a notification similar to the one already exists).
But I fear users could find a double check annoying and make it useless.
Also, we should check whether the authorization to look for a token is persistent, and in case modify Firefox to always ask for it, even during a session.
And we should normalize the behavior for all users (reporting that a user might possibly support hardware 2FA is okay, if it's the only thing that people could observe - doing that for 12.5 is a good idea to prevent fingerprinting changes between minor releases).
However, we should audit first in any case. I expect the implementation to be already okay (at least on desktop).
Firefox 121 introduced an about:webauthn page (except for Android and Windows; see Bug 1854618).
For my YubiKey I can read some interesting lines:
Authenticator options
MakeCredential without user verification
Not supported
User verification
Not supported
User presence
True
So, I quickly checked for these meaning in the specs and found, in particular, the test of user presence.
It seems it's what we absolutely want, and the good news is that it's hardcoded to required for some operations (authenticatorMakeCredential and authenticatorGetAssertion), but I don't know if it's all the supported operations.