Closed Bug 1884574 Opened 2 months ago Closed 2 months ago

Firefox crashes after clicking `Create a passkey` in Google Account > Security > Passkeys

Categories

(Core :: DOM: Web Authentication, defect, P1)

Firefox 125
Unspecified
macOS
defect

Tracking

()

RESOLVED FIXED
125 Branch
Tracking Status
firefox-esr115 --- unaffected
firefox123 --- disabled
firefox124 --- disabled
firefox125 --- fixed

People

(Reporter: mozillabz, Assigned: jschanck)

References

Details

(Keywords: crash)

Crash Data

Attachments

(1 file)

Steps to reproduce:

macOS 13.6.5
Firefox 125.0a1 (2024-03-10) (64-bit)

  1. login on google.com
  2. open Security > Passkeys and security keys
  3. click Create a passkey

To test this, in about:config I switched security.webauthn.webauthn_enable_android_fido2.residentkey to true.

On https://webauthn.io/ when entering a random username and clicking Register Firefox crashed:
bp-5d6f3065-e2f8-45c5-903b-aaded0240310

Probably fair to say that passkey implementation currently is not functional in regards to creation of passkeys.

Hope this can be looked into and resolved 🤕

Actual results:

Firefox crashed. This seems 100 % reproducible. Here are three Report IDs:

bp-a03f10ba-8669-4720-b5a7-5c74d0240310
bp-662e6844-b549-4701-94d3-6c3380240310
bp-6c647aa9-50ab-4986-8a9c-d68a10240310

Expected results:

No Crash, instead a passkey should have been created.

The Bugbug bot thinks this bug should belong to the 'Core::DOM: Web Authentication' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → DOM: Web Authentication
Product: Firefox → Core

Creating a passkey on google.com in Safari did not crash and I got to the step where Safari is informing about enabling iCloud Keychain, which I am not using. When then clicking "ok" I land on the same error where Firefox sometimes lands when not crashing:
Something went wrong
Picture of a broken pen
We weren’t able to save your changes. Return to your account settings and try again.

Likely related: https://bugzilla.mozilla.org/show_bug.cgi?id=1868958

Due to the lack of browser based API, apparently having iCloudKeychain enabled is a hard requirement to generate passkeys on macOS. Wasn't sure about that and thought Apple had done a more thorough implementation, hope they'll still deliver on that.

Followed https://support.apple.com/guide/mac-help/set-icloud-keychain-autofill-information-mac-mh43699/13.0/mac/13.0 to activate iCloudKeychain.

The good news: Firefox no longer crashes when clicking Create a passkey. So one thing to do, would be to show the macOS (or custom) dialog informing users about the iCloud Keychain requirement instead of crashing when iCloud Keychain is not actively used.

And then I am still not sure what's going wrong, even with iCloud Keychain enabled, that the error "Something went wrong - We weren’t able to save your changes. Return to your account settings and try again." is shown.

This feels like two separate problems.

On https://webauthn.io/ even with iCloud Keychain enabled the first click on "Register" resulted in an instant crash which is reproducible:
bp-e4ff660e-8325-4a04-8915-22e5a0240310
bp-76429b6e-ef91-4653-948d-0338e0240310

When it does not crash a click on Register does nothing visible.

Console says:
Conditional UI error: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
r https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
startAuthentication https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
startAuthentication https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
s https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
s https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
s https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
promise callbackc https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
a https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
promise callback
c https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
n https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
n https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
startAuthentication https://webauthn.io/static/js/simplewebauthn-browser.8.2.1.umd.min.js:2
_startAuthentication https://webauthn.io/:647
init https://webauthn.io/:425
promise callbackinit https://webauthn.io/:421
fn https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
k https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
<anonymous> https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
D https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
r https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
n https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
tr https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
w https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
sr https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
sr https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
<anonymous> https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
VoidFunction
https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
<anonymous> https://webauthn.io/static/js/alpinejs-3.10.2.min.js:5
Caused by: DOMException: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

"The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission." is interesting. Which permission are we talking about? And were would I enabled that permission?

Sorry, spoke too soon. Crashes when clicking "Create a passkey" on google.com are also persisting:
bp-338de066-efd5-4b47-9fa0-f2dac0240310
bp-6fed6fc3-4b94-44a2-8872-514270240310

Crash report: https://crash-stats.mozilla.org/report/index/a03f10ba-8669-4720-b5a7-5c74d0240310

MOZ_CRASH Reason: MozPromise::ThenValue created from 'RecvRequestRegister' destroyed without being either disconnected, resolved, or rejected (dispatchRv: not dispatched)

Top 10 frames of crashing thread:

0  XUL  MOZ_Crash  mfbt/Assertions.h:301
0  XUL  mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::ThenValueBase::AssertIsDead  xpcom/threads/MozPromise.h:525
1  XUL  mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::AssertIsDead  xpcom/threads/MozPromise.h:1117
2  XUL  mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::~MozPromise  xpcom/threads/MozPromise.h:1160
3  XUL  mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::Private::~Private  xpcom/threads/MozPromise.h:255
3  XUL  mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::Private::~Private  xpcom/threads/MozPromise.h:255
3  XUL  mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::Private::~Private  xpcom/threads/MozPromise.h:255
4  XUL  mozilla::MozPromiseRefcountable::Release  xpcom/threads/MozPromise.h:150
4  XUL  mozilla::RefPtrTraits<mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::Private>::Release  mfbt/RefPtr.h:49
4  XUL  RefPtr<mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::Private>::ConstRemovingRefPtrTraits<mozilla::MozPromise<RefPtr<nsIWebAuthnRegisterResult>, nsresult, true>::Private>::Release  mfbt/RefPtr.h:409

All the crashes appear to be in Nightly and Early Beta.

Crash Signature: [@ mozilla::MozPromiseHolder<T>::~MozPromiseHolder ]
Flags: needinfo?(jschanck)
Keywords: crash
OS: Unspecified → macOS

The bug has a crash signature, thus the bug will be considered confirmed.

Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: needinfo?(jschanck)
Assignee: nobody → jschanck
Severity: -- → S2
Status: NEW → ASSIGNED
Priority: -- → P1
Attachment #9390579 - Attachment description: WIP: Bug 1884574 - avoid dropping pending promise in MacOSWebAuthnService. → Bug 1884574 - avoid dropping pending promise in MacOSWebAuthnService. r=dveditz

All the crashes appear to be in Nightly and Early Beta.

The crash is a diagnostic assert, which are only enabled in nightly and early beta.

Pushed by jschanck@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/7c2abade08a4
avoid dropping pending promise in MacOSWebAuthnService. r=dveditz
Status: ASSIGNED → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → 125 Branch

Thanks a lot for resolving this issue so quickly, great work and much appreciated.

Trying to verify the fix in 125.0a1 (2024-03-15) (64-bit) (just updated)

On google.com
Tried "+ Create a passkey > Create a passkey" and "+ Create a passkey > Use another device". Both operations result in error "Something went wrong - We weren’t able to save your changes. Return to your account settings and try again."
Console says:
Uncaught (in promise) DOMException: The operation was aborted.
VERY_LONG_STRING_HERE:1204
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://play.google.com/log?format=json&hasfast=true&authuser=0. (Reason: CORS request did not succeed). Status code: (null).

On webauthn.io
When entering a username and clicking "Register" nothing happens. Console says:
Conditional UI error: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

​This may already sufficiently verify the fix since in none of the tests Firefox crashed and that is what the bug here is about. Do we need a separate issue about the remaining registration issue? Do you think the ongoing trouble on webauthn.io and google.com is the same problem or would those be separate issues?

Let's use this bug for the crash and consider the fix verified.

There's definitely a separate issue here. We were never able to reproduce the crash you reported, so I suspect it affects a narrow range of macOS versions. I'll have access to a macOS 13.6.5 machine later today. I'll open a new bug and link it here if I'm able to reproduce the issue.

See Also: → 1886247

I filed Bug 1886247. However, we've also determined that the issue is not on our end. We're expecting a fix from Apple soon.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: