mozilla / mozilla/authenticator-rs
Downgrade `uv = discouraged` requests to CTAP1/U2F to avoid user verification
Nobody has claimed this yet.
- 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=1854089
There are cases where a request can be downgraded to CTAP1/U2F in order to avoid user verification on a CTAP2 authenticator.
Downgrading to CTAP1/U2F is only needed and possible when:
- The request does not set
rk == required- Residency is not supported with CTAP1, and UV is always required for resident
MakeCredentialrequests.
- Residency is not supported with CTAP1, and UV is always required for resident
- The authenticator has some form of user verification configured (ie:
clientPin == true || uv == true)- If UV is not configured or supported, then there's no need to bypass it.
- The authenticator supports CTAP1.
- Needs #367, to avoid downgrades were they don't support it.
- The authenticator does not set
alwaysUv == true- This disables CTAP1.
- The authenticator does not set
makeCredUvNotRqd == true- Authenticators with
makeCredUvNotRqd == truecould handle the request as CTAP 2.1+. - Authenticators that don't are likely CTAP 2.0-only.
- Authenticators with
- The request sets
uv == discouraged.- Chromium also does this when
uv == preferred, but user verification "is possible" per #373.
- Chromium also does this when
- The request's most-preferred algorithm that the authenticator also supports is ES256 (ie: ES256 would be the selected algorithm if using CTAP2).
- Chromium does it if ES256 is listed by the RP as an algorithm, which disregards the "ordered" part of `pubKeyCredParams.
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.
Research direction
Start by tracing the request downgrade and CTAP1/U2F selection paths, then review issue #367 and the authenticator capability checks. Done means requests meeting all listed conditions can downgrade to CTAP1/U2F, while resident-key, alwaysUv, unsupported-CTAP1, and other excluded cases do not.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- authentication, security
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100