Skip to content

docs(security): say what backs the single-use assertion claim - #228

Merged
Bccorb merged 1 commit into
mainfrom
docs/ephemeral-token-assertion-is-single-use
Aug 31, 2026
Merged

docs(security): say what backs the single-use assertion claim#228
Bccorb merged 1 commit into
mainfrom
docs/ephemeral-token-assertion-is-single-use

Conversation

@Bccorb

@Bccorb Bccorb commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

The ephemeral token replay entry in docs/security-posture.md argues that a
leaked token cannot be exchanged for anything on its own, because the continuation
step "still requires the OTP code, the magic-link token, or a WebAuthn assertion".

That reasoning depends on the continuation credential being single use, and the
entry never said what makes the assertion one. It now points at the challenge
store: the challenge lives in webauthn_challenges with a server-enforced TTL and
a per-flow purpose, and consumeChallenge spends it on read, before verification,
so no outcome leaves a challenge behind for an assertion to be replayed against.

Documentation only, stating what the code already does. No changeset: nothing
user-facing changes.

Why now

This was the last outstanding remediation item on the WebAuthn challenge replay
advisory, which I verified against main and closed today. The entry as written
understated the protection it claims, which is worth correcting whether or not
that advisory is ever published.

The ephemeral token entry argues that a leaked token cannot be exchanged for
anything on its own, because the continuation step still requires an OTP code, a
magic link token or a WebAuthn assertion. That reasoning depends on the
continuation credential being single use, and the entry never said what makes the
assertion one.

It now points at the challenge store: the challenge lives in webauthn_challenges
with a server-enforced TTL and a per-flow purpose, and consumeChallenge spends it
on read, before verification, so no outcome leaves a challenge behind to replay
an assertion against.

Documentation only. This states what the code already does.
@Bccorb
Bccorb merged commit 92b2e9a into main Aug 31, 2026
4 checks passed
@Bccorb
Bccorb deleted the docs/ephemeral-token-assertion-is-single-use branch August 31, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant