AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Moderate 59 Bitcoin

Add loginless and passwordless passkey authentication

Public commit record

What the developer wrote

Authored by Lucas Cullen

55/100 · Thin
Add loginless and passwordless passkey authentication
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
The short version

What changed, and why it matters

This commit adds passkey (passwordless) and login-code login support to BTCPay Server and rewrites much of the existing two-factor/FIDO2/LNURL-auth login flow. It is a large feature patch, not a documented security fix. The changes introduce several security-relevant design choices: passkeys can bypass the password entirely, session state now carries the login method and return URL, and the migration forces TwoFactorEnabled=true for all users while adding a separate AuthenticatorEnabled flag. Because the patch is broad and partially refactored, there is a non-trivial risk of authentication bugs (e.g., bypasses, session confusion, or incorrect 2FA enforcement), but the supplied diff does not show an obvious exploitable vulnerability.

Recommended action

Treat this as a high-risk authentication refactor requiring focused review and regression testing before release. Verify that: (1) passkey login cannot be replayed or used to authenticate as a different user; (2) LoginSession session data is protected from tampering and does not leak across users/sessions; (3) the migration's forced TwoFactorEnabled=true does not break users who previously had no 2FA configured; (4) recovery-code parsing still accepts all valid formats; (5) rate limiting and antiforgery tokens cover the new passkey and login-code endpoints; and (6) the removal of client-supplied UserId in FIDO2/LNURL callbacks fully prevents user-ID substitution. No CVE or advisory is present in the supplied materials.

Security signals we found

01

New passwordless authentication path (passkey) added to login controller

02

Login session state moved into ASP.NET session with custom serialized LoginSession class

03

Migration forces TwoFactorEnabled=true for all users and separates AuthenticatorEnabled flag

04

FIDO2/LNURL-auth login endpoints no longer accept a UserId from the client; they use signInManager.GetTwoFactorAuthenticationUserAsync

05

Recovery-code parsing changed from whitespace-stripped single string to Trim().Split(' ').FirstOrDefault()

06

Limited-login cookie renamed and redirect logic removed

07

New custom token providers disable email 2FA and gate authenticator/FIDO2 2FA

Risk score

Why this scored 59/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 8/15
Affected reach 12/15
Confidence 6/10
Evidence quality 3/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.