MicroG, fatal crash about FIDO2 support
- /e/ version: e-1.15-beta-t-20230827324111-dev-sunfish and e-1.15-beta-t-20230904324111-dev-sunfish
- Device model(s): sunfish
- Developer mode enabled: yes
- Device rooted: no
- Trackers blocker enabled: no
Summary
Using built-in security keys in any web browser crashes both the browser and microG
The problem
Try to use security keys with any browser on any website, for example https://demo.yubico.com/webauthn-technical/registration
The on registration, a popup opens, using fingerprint or nfc security key crashes both microG and the browser
It should not crash and it worked perfectly well in 1.14t
Steps to reproduce :
- Enroll a fingerprint
- Reboot the device
- Try to register on :
Logs
09-06 15:35:04.844 6607 6607 D FidoUi : Finish with success response: AuthenticatorAttestationResponse[keyHandle=AaM-DSj78Z2nqAlcIcghzN0Pntg6EulbSLs4-JRXmJoOPLfzSxNI-Nk6fglvkt8P410DizZWP2Bp9paBCBLnGn0, clientDataJSON=eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiRHgxRmpFUnNYMUZBWVdEZ1l2NGdMd2U0RHRic lhBR0RMOURfRmlpSWMybzVubFpkZTNDYUhPUFNLYnlhOXZKMnltQ2FYRnZIV29Gb1hHaWljNzJRSGciLCJhbmRyb2lkUGFja2FnZU5hbWUiOiJvcmcubW96aWxsYS5maXJlZm94Iiwib3JpZ2luIjoiaHR0cHM6XC9cL3dlYmF1dGhuLmlvIn0, attestationObject=o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YVjFdKbqkhPJnC90siSSsyDPQCYqlMGpUKA5fyklC2CEHvBFAAAAAAAAAAAAAAAAAAAAAAA AAAAAQQGjPg0o-_Gdp6gJXCHIIczdD57YOhLpW0i7OPiUV5iaDjy380sTSPjZOn4Jb5LfD-NdA4s2Vj9gafaWgQgS5xp9pQECAyYgASFYIIzEhHXH6Na39wmDnfnwrZGpp5RFtHXc4VXzzpETlXF0Ilgg6v6pa01MZ2aBIwdtwBS4UOJyCAoalerPCRDuMWjIa5U]
17670 09-06 15:35:04.856 1804 2140 V WindowManager: Unknown focus tokens, dropping reportFocusChanged
17671 09-06 15:35:04.885 6607 6607 E AndroidRuntime: FATAL EXCEPTION: main
17672 09-06 15:35:04.885 6607 6607 E AndroidRuntime: Process: com.google.android.gms:ui, PID: 6607
17673 09-06 15:35:04.885 6607 6607 E AndroidRuntime: java.lang.ExceptionInInitializerError
17674 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at java.lang.reflect.Field.get(Native Method)
17675 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.getCreator(SafeParcelReflectionUtil.java:123)
17676 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor$FieldDescriptor.<init>(SafeParcelReflectionUtil.java:465)
17677 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor.<init>(SafeParcelReflectionUtil.java:411)
17678 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.ReflectedSafeParcelableCreatorAndWriter.<init>(ReflectedSafeParcelableCreatorAndWriter.java:18)
17679 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.AutoSafeParcelable$AutoCreator.<init>(AutoSafeParcelable.java:45)
17680 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at com.google.android.gms.fido.fido2.api.common.UvmEntries.<clinit>(UvmEntries.java:80)
17681 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at java.lang.reflect.Field.get(Native Method)
17682 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.getCreator(SafeParcelReflectionUtil.java:123)
17683 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.getCreator(SafeParcelReflectionUtil.java:113)
17684 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.access$100(SafeParcelReflectionUtil.java:27)
17685 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor$FieldDescriptor.<init>(SafeParcelReflectionUtil.java:460)
17686 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor.<init>(SafeParcelReflectionUtil.java:411)
17687 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.ReflectedSafeParcelableCreatorAndWriter.<init>(ReflectedSafeParcelableCreatorAndWriter.java:18)
17688 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.AutoSafeParcelable$AutoCreator.<init>(AutoSafeParcelable.java:45)
17689 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at com.google.android.gms.fido.fido2.api.common.AuthenticationExtensionsClientOutputs.<clinit>(AuthenticationExtensionsClientOutputs.java:92)
17690 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at java.lang.reflect.Field.get(Native Method)
17691 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.getCreator(SafeParcelReflectionUtil.java:123)
17692 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.getCreator(SafeParcelReflectionUtil.java:113)
17693 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil.access$100(SafeParcelReflectionUtil.java:27)
17694 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor$FieldDescriptor.<init>(SafeParcelReflectionUtil.java:460)
17695 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor.<init>(SafeParcelReflectionUtil.java:411)
17696 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.ReflectedSafeParcelableCreatorAndWriter.<init>(ReflectedSafeParcelableCreatorAndWriter.java:18)
17697 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.safeparcel.AutoSafeParcelable$AutoCreator.<init>(AutoSafeParcelable.java:45)
17698 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at com.google.android.gms.fido.fido2.api.common.PublicKeyCredential.<clinit>(PublicKeyCredential.java:177)
17699 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at com.google.android.gms.fido.fido2.api.common.PublicKeyCredential$Builder.build(PublicKeyCredential.java:118)
17700 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.gms.fido.core.ui.AuthenticatorActivity.finishWithSuccessResponse(AuthenticatorActivity.kt:229)
17701 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.gms.fido.core.ui.AuthenticatorActivity$startTransportHandling$1.invokeSuspend(AuthenticatorActivity.kt:257)
17702 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
17703 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:234)
17704 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.DispatchedTaskKt.resumeUnconfined(DispatchedTask.kt:190)
17705 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:161)
17706 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
17707 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
17708 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
17709 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
17710 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at org.microg.gms.fido.core.transport.screenlock.ScreenLockTransportHandler$showBiometricPrompt$2$prompt$1.onAuthenticationSucceeded(ScreenLockTransportHandler.kt:42)
17711 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at androidx.biometric.BiometricFragment$9.run(BiometricFragment.java:907)
17712 09-06 15:35:04.885 6607 6607 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:942)
17713 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
17714 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
17715 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
17716 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7924)
17717 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
17718 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
17719 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
17720 09-06 15:35:04.886 6607 6607 E AndroidRuntime: Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@7584552, Dispatchers.Main.immediate]
17721 09-06 15:35:04.886 6607 6607 E AndroidRuntime: Caused by: java.lang.RuntimeException: Type is not yet usable with SafeParcelReflectionUtil: short
17722 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor$FieldDescriptor.getType(SafeParcelReflectionUtil.java:521)
17723 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor$FieldDescriptor.<init>(SafeParcelReflectionUtil.java:456)
17724 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at org.microg.safeparcel.SafeParcelReflectionUtil$ClassDescriptor.<init>(SafeParcelReflectionUtil.java:411)
17725 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at org.microg.safeparcel.ReflectedSafeParcelableCreatorAndWriter.<init>(ReflectedSafeParcelableCreatorAndWriter.java:18)
17726 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at org.microg.safeparcel.AutoSafeParcelable$AutoCreator.<init>(AutoSafeParcelable.java:45)
17727 09-06 15:35:04.886 6607 6607 E AndroidRuntime: at com.google.android.gms.fido.fido2.api.common.UvmEntry.<clinit>(UvmEntry.java:90)
17728 09-06 15:35:04.886 6607 6607 E AndroidRuntime: ... 46 more
17729 09-06 15:35:04.888 1804 6658 I DropBoxManagerService: add tag=system_app_crash isTagEnabled=true flags=0x2
17730 09-06 15:35:04.889 1804 3067 W ActivityTaskManager: Force finishing activity com.google.android.gms/org.microg.gms.fido.core.ui.AuthenticatorActivity
Solutions
Workaround : stop using this feature
Edited by Nicolas Gelot