mozilla / mozilla/authenticator-rs
CTAP1/U2F commands should not be sent to devices that don't support it
@micolous is already working on this.
Since Aug 13, 2026.
- Dominant language
- Rust
- Stars
- 316
- Forks
- 82
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 1
Description
Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=2063492
https://github.com/mozilla/authenticator-rs/pull/276 added FidoDevice::downgrade_to_ctap1() as an infallible operation to work-around #269 (AppID extension pre-flighting).
However:
- a USB authenticator with the
CAPABILITY_NMSGbit set will not acceptCTAPHID_MSG(U2F) commands. It doesn't look like this library checks that flag. - an NFC or smart card authenticator which responds to applet selection with
FIDO_2_0will not accept U2F commands. - a BLE authenticator which sets
fidoServiceRevisionBitfield = 0x20does not support U2F commands. - a caBLE/hybrid authenticator will never accept U2F commands, so this is required to support those.
In practice:
- Authenticators must disable CTAP1/U2F support when the Always Require User Verification feature is enabled.
- Yubikey (and likely others) allow disabling the U2F and FIDO2 applications individually.
FidoDevice::downgrade_to_ctap1() should be a fallible operation, and there should be a FidoDevice method which indicates whether a authenticator supports CTAP1 (ie: supports_ctap1()).
When use_ctap2_fallback = true, CTAP2-only authenticators should be excluded as a candidate device.
This issue is reproducible with Firefox Nightly on Linux.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.