Raxx · internal docs

internal · gated

DET-AUTH-001 — passkey enumeration

Rule ID: DET-AUTH-001 Title: Passkey enumeration via distinct-email cardinality at /api/auth/passkey/begin-assertion (and /api/auth/register/options) Category: auth Last validated: 2026-06-04 (initial catalog, dormant — no baseline yet) State: dormant — activate once Heroku Logplex → log-aggregation drain is wired and 7 days of traffic populate a baseline

Telemetry source

Statistical method + baseline window

Threshold + expected FP rate

Alert route

Escalation owner

Test fixture / synthetic positive

See _fixtures/passkey_enumeration_positive.json for a synthetic 15-event burst against /passkey/begin-assertion from one IP across 12 distinct synth emails within 38s.

What to do when this fires

  1. Pull the IP's full request log from the last 24h. Look for prior probe patterns (slow drip, then burst).
  2. Cross-reference the IP against Cloudflare WAF events (waf_events table when waf_events flag is on).
  3. If the IP overlaps with a residential ISP range or commercial VPN block (per user_uses_vpn), verify against operator's known VPN exits before paging.
  4. If the email-hash set includes any real customer or waitlist email, escalate to CRITICAL immediately — the attacker has a partial list.
  5. Hand the cluster to security-agent for posture review (rate limit tuning, CF challenge rule, etc.). Do not silence the rule during investigation per charter §Anti-patterns.

What NOT to do