Account recovery  / field guide
Practitioner field guide · 2026-10-23

The back door sets the strength of the lock: recovering accounts without handing them to attackers

The large takeovers documented in this guide went around the login and through a recovery path: a help-desk reset, a synced second factor, a text message. This guide reconstructs how production systems and identity products design that path, what the postmortems and open bug trackers say went wrong, and which choices flip with the value of the account.

24 primary sources 21 organisations 6 incidents and defects Evidence through October 2026 Read: 29 min
01

The territory

The problem without the technology's name: a person who can no longer prove who they are by the usual means must be able to get back in, and a stranger who claims to be that person must not.

81%
Recovery success by SMS code at Google, against 14% for secret questions or manual review
~$100M
MGM's estimated September 2023 hit to Adjusted Property EBITDAR from a social-engineering intrusion
27
Retool cloud customers whose accounts were taken over after one employee's synced authenticator codes were reachable
4 yr+
Age of an open Keycloak issue where a password reset logs the user in without asking for their OTP (opened June 2022)

Authentication gets the engineering attention: phishing-resistant keys, device binding, risk scoring. Recovery gets a form. That asymmetry is the subject of this guide, and the evidence for it is unusually consistent. When Okta described the pattern behind the 2023 casino intrusions, it did not describe a stolen password or a broken cryptographic check. It described callers who tried to convince service desk personnel to reset all Multi-factor Authentication (MFA) factors for highly privileged users (Okta, 2023-08-31). When Retool described its own breach, the second factor had not been defeated; it had been sitting in a place the attacker could reach by controlling one Google account (Retool, 2023-09-13). When Reddit explained a 2018 intrusion, the weak step was a text message (Krebs, 2018-08-01). Each of these is a recovery or enrolment path wearing the costume of a login.

I am calling the underlying principle the recovery ceiling: an account is exactly as strong as the weakest path that can change what the account trusts, not as strong as the path most users take. The sources do not use that phrase. The FIDO Alliance comes closest in its 2019 recovery paper: The entire ecosystem is only as strong as the weakest link (FIDO Alliance, 2019). What this guide adds is the evidence for where that weakest link actually sits in production systems, and the conditions under which each fix is worth its cost.

The finding that surprised me

The tightest recovery policies in the corpus are not accidents of immaturity. GitHub states that if you lose both your two-factor credentials and your recovery methods, you have permanently lost access to your account; Apple says its recovery wait is fixed and that contacting Apple Support can't help shorten the wait. Both have deliberately removed the human override, which is the exact component the 2023 intrusions exploited. The only published cost of that choice is Google's: take away the easy channels and success falls from over 80% to 14%. Nobody has published what the strict policy costs in permanently locked-out legitimate users.

Scope. This guide covers recovery and reset of consumer and workforce accounts: lost authenticators, forgotten credentials, and the support channel that backs them. It does not cover phishing-resistant login itself, session theft after login, or credential stuffing. It does not cover customer-identity verification for regulated onboarding beyond what NIST says about re-proofing. Machine credentials are the subject of an earlier dig on machine identity expiry and renewal.

Figure 1 · Every path that can change what an account trusts

Phishing-resistant
login

Account

Recovery code

Email link
75% success

SMS code
81% success

Secret questions
14% with manual review

Help-desk reset
a person decides

Synced secret store
one account holds the factor

Phishing-resistant
login

Account

Recovery code

Email link
75% success

SMS code
81% success

Secret questions
14% with manual review

Help-desk reset
a person decides

Synced secret store
one account holds the factor

The strong login is one door among several; the account's real strength is the weakest of them. Success rates are Google's 2014 measurements (IMC 2014); the help-desk and synced-secret paths come from Okta and Retool.
Diagram source
02

How it is actually built

No organisation publishes its recovery system whole. The shape below is assembled from standards, vendor documentation and the failures; the reconstruction is marked where it is mine.

Read across NIST, FIDO, GitHub, Apple, Google and Okta and the same six stages recur, in the same order, even where the products differ. First, a trigger: the user (or a support agent acting for them) states that they cannot authenticate. Second, a gate that decides which proofs are acceptable for this account. Third, the proof itself. Fourth, a hold, sometimes zero seconds and sometimes days. Fifth, the action, which in the better designs is rebinding an authenticator rather than opening a session. Sixth, the aftermath: notification, session revocation, audit, and reverting whatever a hijacker changed.

NIST SP 800-63B-4 is the closest thing to a public specification of the proof stage. It lists four recovery classes (saved recovery codes, issued recovery codes, recovery contacts, and repeated identity proofing) and sets concrete parameters: a saved code carries at least 64 bits from an approved random bit generator, is stored hashed, and is replaced on use; issued codes expire in 10 minutes by text or voice, 24 hours by email, and 21 days by US postal mail; a service must allow at least two recovery addresses (NIST SP 800-63B-4, Sec. 4.2). The same document fixes the aftermath: In all cases, account recovery SHALL cause a notification to the subscriber, to at least two notification addresses where available. That last requirement is the one most commonly missing from the failure write-ups below.

Figure 2 · The common shape of a recovery system

Proof, by tier

Claim

Self-service
request

Help-desk agent
acting for caller

Gate: risk and
account tier

Saved or issued
recovery code

Second enrolled
authenticator

Recovery contact

Repeated identity
proofing

Hold: delay window
with cancel link

Rebind authenticator
force fresh sign-in

Notify on independent
channels, revoke sessions,
revert changes, audit

Proof, by tier

Claim

Self-service
request

Help-desk agent
acting for caller

Gate: risk and
account tier

Saved or issued
recovery code

Second enrolled
authenticator

Recovery contact

Repeated identity
proofing

Hold: delay window
with cancel link

Rebind authenticator
force fresh sign-in

Notify on independent
channels, revoke sessions,
revert changes, audit

The help desk is drawn inside the same gate as the self-service path, because every incident in section 4 that involved a person involved a route around the gate. Stages from NIST 800-63B-4, FIDO 2019, Okta's mitigations and Google's remission step; the placement of the help desk is my reconstruction.
Diagram source

Proof: have more than one authenticator

FIDO's 2019 guidance puts reduction of recovery before recovery: encourage every user to enrol a second authenticator so that a lost phone never reaches the recovery flow at all. Google's Advanced Protection is its named example, requiring two security keys.

Runs this way at: FIDO Alliance, GitHub (passkey, security key, recovery codes, in its recovery docs).

Hold: make time do the verifying

Apple's recovery takes several days or longer, a confirmation email arrives within 72 hours, and Apple states the wait cannot be shortened by support. Google says an Advanced Protection recovery takes a few days. A delay is a control only if the rightful owner learns of it in time, which is why NIST insists on notification.

Runs this way at: Apple, Google Advanced Protection.

Action: rebind, do not sign in

The Keycloak reset flow is the counter-example: when OTP reset is switched off, a password reset in the same browser logs the user in with no OTP. The proposed fix flips a default so the reset ends at a fresh login. Recovery should change what the account trusts, then make the user authenticate against the new state.

Evidence: keycloak #12759, #39447.

Delegation: let another party vouch

Social and third-party recovery keeps recurring. Facebook published a Delegated Recovery specification for letting a user's account at another provider recover their account (the repository was archived in September 2020), and Google shipped recovery contacts in October 2025 for locked-out personal accounts.

Runs this way at: Facebook (archived), Google.

Help desk: the unmodelled path

Microsoft and CISA both describe the help desk as a primary route. CISA: threat actors use social engineering to convince IT helpdesk personnel to reset passwords and/or MFA tokens. Microsoft's recommendations include scoping help-desk privilege so it excludes administrative operations over Global Administrators.

Evidence: CISA AA23-320A, Microsoft.

Aftermath: undo what the intruder did

Google's measurement paper describes adding a remission step to its flow after seeing hijackers change settings and delete mail and contacts: restoring deleted content, removing added content, and resetting options. It also found users preferred content restoration as an optional last step.

Evidence: Bursztein et al., 2014.

What none of the public sources documents is how the stages are wired together inside a real service: where the gate's risk decision lives, whether the help-desk tooling calls the same API as the self-service flow, how the hold is stored and cancelled. Those are the parts the incidents say matter most, and the public record is silent. The open-source identity servers, Keycloak and Ory Kratos, are the only places the wiring is visible, and their issue trackers are as informative about recovery as any postmortem (section 4).

03

The decisions that matter

Five forks. For each: what the evidence shows organisations chose, what they turned down, and the condition that flips the answer.

Decision 1: may a person override the recovery policy?

Chosen
  • No override: GitHub states support cannot restore a 2FA-protected account; Apple states support cannot shorten the wait.
  • Where a human must be in the loop, route the human through the same gate and an out-of-band check (Microsoft, Okta).
Rejected
  • A help-desk reset button that trusts the caller's facts. Okta's mitigations call for stronger service-desk verification, including visual verification.
  • Knowledge checks answerable from public records or purchased data (my inference from the Okta and Microsoft mitigations; neither lists the questions).
Flips when
  • Permanent lockout costs more than takeover: low-value accounts, or employees whose identity the company can verify in person or by video against HR records. Then a human path is right, but it must be a verification path, not a favour.

The 2023 casino intrusions are the case against the human override, but they are weaker evidence than they look. MGM's own filing gives a financial figure and a description of the outcome; the details of the call come from secondary reporting. Caesars' filing says the cause was a social engineering attack on an outsourced IT support vendor (Caesars 8-K), which tells you the override had been outsourced to people with no stake in the account. Okta told TechTarget that Caesars was one of four victims it tracked between 29 July and 19 August 2023, with MGM a fifth, and that it was relying on partners for attribution (TechTarget, 2023-09-19). The corroborated claim is narrow: a help-desk-reset pattern was in use against several organisations in the same weeks. The transferable decision is also narrow: if a human can reset a factor, the strength of the factor is the strength of that human's verification procedure.

Decision 2: which channels may prove ownership?

Chosen
  • SMS and secondary email for ordinary accounts: Google measured 81% and 75% success and calls knowledge questions a last resort.
  • Recovery codes and second authenticators for high-value accounts (NIST's AAL2 options are two recovery codes of different methods, a code plus a bound authenticator, or repeated identity proofing).
Rejected
  • Secret questions as a sole proof: Google's 2015 paper found them weaker than passwords and unrecalled by about 40% of US English-speaking users.
  • SMS for accounts that attackers target by name: Reddit's 2018 report says SMS authentication is not nearly as secure as we would hope.
Flips when
  • An attacker can port the victim's number. CISA and Microsoft both document SIM swapping as a standard step; above that threat, a phone number must not be a recovery proof for privileged accounts.

Decision 3: does recovery log the user in?

Chosen
  • Reset ends at a fresh sign-in against the new credential set. The Keycloak proposal to force re-authentication after reset by default does this.
Rejected
  • Treating possession of a reset link as a completed login. Keycloak #12759 shows the bypass: same browser, no OTP.
  • Counting a recovery email code as a distinct second factor. Ory Kratos #4317 reports email OTP satisfying both factors.
Flips when
  • Friction dominates risk, for example a forum with no stored value. Even then, the Keycloak thread raises the real cost: existing flows do not update on upgrade, so a secure default only protects new installs.

Decision 4: wait, or answer immediately?

Chosen
  • A fixed, unshortenable wait for the hardest cases (Apple, Google Advanced Protection), with notification during it.
Rejected
  • Instant recovery by a single email link for protected accounts. The 2023 study of 71 sites found many allowed MFA to be bypassed and disabled with only access to the account's email.
Flips when
  • The notification cannot reach the owner independently. Inferred, not reported: a delay protects only if the alert goes somewhere the attacker does not already control, so an account whose only contact is the compromised mailbox gets no protection from waiting.

Decision 5: where does the backup of the second factor live?

Chosen
  • Multiple device-bound authenticators per account (FIDO), so loss does not trigger recovery at all.
Rejected
  • A cloud-synced code store under the same login the codes protect. Retool concluded the sync turned its MFA into single-factor-authentication without administrators noticing and gave no central control to disable it.
Flips when
  • The sync account is itself phishing-resistant and the loss rate of device-bound factors is high. Inferred: Retool's failure was the sync root's weakness, not synchronisation as such.

Figure 3 · Choosing the proof for a recovery request

yes

no

ordinary

privileged

yes

no

Can a second enrolled
authenticator sign in?

Account tier

Phone number
portable by attacker?

Use it; no recovery

One code or contact,
notify, short hold

Two proofs from
different methods,
long hold

Never use phone
as a proof

yes

no

ordinary

privileged

yes

no

Can a second enrolled
authenticator sign in?

Account tier

Phone number
portable by attacker?

Use it; no recovery

One code or contact,
notify, short hold

Two proofs from
different methods,
long hold

Never use phone
as a proof

A decision tree whose terminal nodes are actions. The branches follow NIST 800-63B-4's rule that higher assurance levels need stronger recovery proof, and the SIM-swap condition documented by CISA and Microsoft.
Diagram source
DecisionChosenRejectedBecauseEvidence
Human overrideNone, or via the same gateReset on caller factsHelp-desk resets were the entry in the 2023 campaignCISA, 2023
Proof channelCodes, second device, contactsSecret questions aloneWeaker than passwords; forgotten by about 40%Bonneau et al., 2015
Session after resetFresh sign-inAuto-loginReset link bypassed OTPkeycloak #12759
TimingFixed wait plus noticeInstant email linkEmail-only access disabled MFA on many sitesAmft et al., 2023
Factor backupSeveral device-boundSynced under the loginSync root became the real factorRetool, 2023
04

What broke in production

Six entries in four failure classes. Two are incidents with published write-ups by the affected organisation, two are reported through filings and reporting, and two are defects still open in identity software.

The classes matter more than the entries. Class A, the human override: a person with reset power is persuaded. Class B, the recovery root: a second factor is stored under an account that is itself recoverable. Class C, the interceptable channel: the proof travels over something an attacker can read or redirect. Class D, the recovery that is also a login: the flow grants a session or counts as a factor, so it can be used to skip the controls it was meant to restore.

Figure 4 · The help-desk failure path, step by step

Account ownerIdentity providerHelp deskCallerAccount ownerIdentity providerHelp deskCallerNo alert reaches theownerCall, learn the reset stepsSecond call with employeefactsReset password and MFANew factor enrolled by callerSign in, raise privilege
Account ownerIdentity providerHelp deskCallerAccount ownerIdentity providerHelp deskCallerNo alert reaches theownerCall, learn the reset stepsSecond call with employeefactsReset password and MFANew factor enrolled by callerSign in, raise privilege
The attacker never contacts the authentication system; the reset is performed by an authorised operator. Reconstructed from CISA AA23-320A and Microsoft's Octo Tempest analysis. The owner is never in the sequence, which is why notification is the control that matters.
Diagram source
Postmortem

Class A: the help desk reset the factor for the caller

AssumptionA caller who knows the employee's details is the employee.
What happenedOkta reported a consistent pattern of calls to IT service desks asking to reset every MFA factor of privileged users, followed by sign-in through anonymising proxies and use of compromised super-administrator accounts to grant privileges. CISA adds that early calls learn what steps are needed before the reset call.
Blast radiusMGM estimated about $100 million of September Adjusted Property EBITDAR impact and under $10 million of one-time costs. Caesars' filing places the cause at an outsourced IT support vendor, with the earliest event on 7 September 2023.
FixOkta's list: start recovery with the strongest authenticator, restrict recovery to trusted networks, require re-authentication for protected admin actions, strengthen service-desk verification, and stop help-desk roles managing privileged groups.
Design ruleGive the help desk the same gate as the user, with less power: no ability to reset a factor of an administrator, and no reset without a check that reaches the owner on another channel.
Postmortem

Class B: the second factor lived under a recoverable account

AssumptionCodes in an authenticator app are something the employee has, not something the attacker can fetch.
What happenedOn 27 August 2023 an employee entered credentials and a code on a fake portal after an SMS lure, then took a call from a voice posing as a colleague and gave one more code, which let the attacker enrol their own device in Okta. Cloud sync meant that controlling the Google account exposed every stored code.
Blast radius27 cloud customers, all in one industry, notified on 29 August; no on-prem or managed accounts. Retool restored the original email addresses and revoked internal sessions.
FixRevoke all internal sessions, lock down affected accounts, report to Google, and recommend FIDO2 hardware keys, on the argument that a code cannot be disclosed if none exists (my paraphrase).
Design ruleTrace where each second factor is stored and who can recover that store. The strength of the factor is the strength of the weakest account that can read it.
Reported

Class C: a text message was the second factor

AssumptionSMS 2FA on employee accounts at the cloud and source hosting providers was enough.
What happenedBetween 14 and 18 June 2018 an attacker compromised several employee accounts at those providers; Reddit learned on 19 June. Reddit wrote that SMS-based authentication is not nearly as secure as we would hope and did not say how the codes were obtained. Reddit's original post was not retrievable here, so this is as reported by Krebs.
Blast radiusInternal source code and email addresses with salted, hashed passwords for accounts created before May 2007, disclosed on 1 August 2018.
FixReddit urged a move to token-based 2FA.
Design ruleA phone number is a recoverable identifier held by a third party. Do not let it be the last line for accounts someone would target by name.
Reported

Class B: one account's recovery leaked the proof for the next

AssumptionPartial information shown during recovery, and facts that support teams treat as identifying, are harmless.
What happenedIn 2012 attackers found Mat Honan's Gmail address, saw a masked backup address that pointed at an Apple ID, took his billing address from domain registration, and used a call to Amazon with a fake card number to learn the last four digits of the card on file. AppleCare then issued a temporary password.
Blast radiusRemote wipe of an iPhone, iPad and Mac. Apple said some internal policies were not followed; the article reports no specific policy change.
FixNot reported in the source fetched. This is the weakest-evidenced entry on the page for outcome.
Design ruleAnything a recovery flow reveals or accepts as proof becomes an input to another provider's flow. Treat it as published.
Source

Class D: a password reset that signs the user in without their OTP

AssumptionA reset flow that deliberately skips OTP reset is conservative.
What happenedkeycloak #12759: with OTP reset disabled, a user who starts a reset and opens the emailed link in the same browser is logged in on setting a new password, with no OTP prompt. Maintainers labelled it hardening and said in March 2023 they could not fix it in Keycloak 22. In October 2026 a contributor proposed making forced re-authentication the default.
Blast radiusOpen since 27 June 2022. A umbrella issue (#39447) lists a dozen related reset-flow problems, one of which describes a misconfigured flow allowing passwordless access.
FixWorkaround: add the OTP form to the reset flow, or turn on forced login after reset. The proposed default change does not migrate existing flows.
Design ruleA secure default that exists only in new installs is a fix for next year's adopters. Ship a migration, or make the unsafe state impossible to configure.
Source

Class D: recovery email code counted as both factors

AssumptionIf the system labels methods as distinct, using two of them satisfies a two-factor requirement.
What happenedory/kratos #4317 (February 2025, v1.3.1): with code-based MFA enabled, the reporter used an email OTP from account recovery as the first factor and a second email OTP as the second, reaching settings at the highest available assurance. The only reply says the system does not treat them as the same factor and suggests requiring another backup method such as lookup codes.
Blast radiusOpen, unassigned, no linked pull request on the page fetched. No exploitation is reported.
FixNone recorded. The reply's suggestion is a configuration constraint, not a code change.
Design ruleA factor is defined by the independence of what must be compromised, not by the name of the method. Two proofs that both reduce to one mailbox are one proof.
What is missing

No postmortem in the corpus describes a legitimate user permanently locked out by a strict policy, and none reports the support cost of a verified human recovery. GitHub and Apple tell you what they chose; neither publishes how many people it affects. The failure class that the chosen design trades for takeover is therefore unmeasured in public, and an organisation adopting the strict policy is running the first experiment.

05

Numbers you can plan against

Recovery rates and incident costs, each with context, date and source. The recovery-rate figures are the oldest and the most reusable.

MetricValueAtContextAs ofSource
Recovery success, SMS code81%GoogleUsers who supplied a phone number2014IMC '14
Recovery success, secondary email75%GooglePaper also gives 74.57% for email; about 5% of recovery mails bounced2014IMC '14
Recovery success, secret questions or manual review14%GoogleUsers with neither phone nor secondary email2014IMC '14
Secret answers not recalledabout 40%GoogleEnglish-speaking US users, millions of attempts2015WWW '15
Fake answers given to look "harder to guess"37%Google surveyOf those who admitted faking answers2015WWW '15
Manual hijacking rate9 per million users per dayGoogleCases observed 2011 to 20142014IMC '14
Sites reviewed / hands-on tested1,303 / 71Academic studyMany allowed MFA bypass with only email access; counts not given in the abstract2023Amft et al.
Saved recovery code entropyat least 64 bitsNISTHashed at rest, replaced on use2025 draftSP 800-63B-4
Issued code lifetimes10 min text, 24 h email, 21 days US postNISTContiguous US postal; 30 days elsewhere2025 draftSP 800-63B-4
Apple recovery confirmationwithin 72 h; wait "several days or longer"AppleWait fixed, support cannot shorten2026Apple Support
MGM incident impactabout $100M; under $10M one-timeMGM ResortsAdjusted Property EBITDAR, September 202320238-K
Retool customer accounts taken over27RetoolCloud customers only2023Retool
Age of open Keycloak bypass issueabout 4 years 4 monthsKeycloak27 June 2022 to 23 October 2026 (derived)2026#12759

What to plan against. Measured: Google's three channel success rates and the memorability of secret answers, all from the operator's own logs but all more than a decade old and from one consumer population. Specified: NIST's code sizes and lifetimes, which are requirements, not observations. Claimed: nothing here is a vendor performance claim, which is itself unusual for this topic. Derived: the age of the Keycloak issue is my arithmetic from the issue's creation date.

The unit economics, as far as they exist. Two variables dominate. The first is the lockout rate: the share of legitimate users per year who reach recovery and cannot complete it. Google's 14% figure applies only to users who gave no phone or secondary email, and no source says how many that is. The second is the loss per takeover, where MGM's roughly $100 million is the largest figure in the record and is a company-level cost, not a per-account one. An illustrative calculation, not a measurement: if a service with a million accounts loses 0.5% a year to unrecoverable lockout and the strict policy converts those to permanent losses, that is 5,000 users a year; whether that is cheaper than the expected takeover loss depends on a figure no source provides. The model excludes help-desk labour, insurance, and regulatory notification costs.

Read these carefully

The three recovery-rate figures are Google 2014 and the secret-question study is 2015; mobile-first sign-in, passkeys and SIM-swap prevalence have all moved since. The 14% figure also mixes secret questions with manual review, so it cannot be read as the success rate of questions alone (the 2015 paper gives 44% to 61% depending on country for questions). The hijacking rate counts only manual hijacks Google detected.

06

The evidence wall

Every source behind this page, graded. Filter by kind. Where a primary source was blocked from this environment, the card says so.

PostmortemRetool2023-09

When MFA isn't actually MFA

First-person incident report: SMS lure, fake portal, voice call, device enrolment in Okta, and the effect of Google Authenticator cloud sync on the second factor. 27 cloud customers affected.

Carry forwardA second factor stored under a recoverable account has the strength of that account.
retool.com/blog/mfa-isnt-mfa
PostmortemOkta2023-08

Cross-tenant impersonation: prevention and detection

Describes the service-desk MFA-reset pattern across customers, the attacker's use of super-administrator accounts and a second identity provider, and a long list of mitigations.

Carry forwardStart recovery with the strongest authenticator and restrict help-desk roles from privileged groups.
sec.okta.com cross-tenant impersonation
SourceKeycloak2022-06

Reset Credentials Flow logs in without OTP (#12759)

Open issue with maintainer discussion from 2022 to 2026, a workaround, and a proposed commit that makes forced re-authentication the default.

Carry forwardThe reset flow must end at a login, and a changed default needs a migration path.
github.com/keycloak/keycloak/issues/12759
SourceKeycloak2025-05

Issues related to reset credentials flow (#39447)

Umbrella issue: one flow resets every credential type, MFA reset adds a credential instead of replacing it, and lost-device users must use "Forgot password".

Carry forwardOne flow for all credential types is a design smell; split by credential and by risk.
github.com/keycloak/keycloak/issues/39447
SourceOry2025-02

Bypassing AAL2 in Settings Flow Using Email OTP for Both Factors (#4317)

Report that recovery's email code and a second email code satisfy two-factor assurance. Open, with one reply suggesting an additional backup method.

Carry forwardFactor independence is about what an attacker must compromise, not the method label.
github.com/ory/kratos/issues/4317
SourceFacebook2020-09

Delegated Recovery Specification (archived)

A protocol letting an application delegate account recovery to an account at another provider. Archived read-only in September 2020; reference implementations exist, including a Ruby one built by GitHub.

Carry forwardDelegation was tried at scale and archived; no public account explains why.
github.com/facebookarchive/DelegatedRecoverySpecification
StandardNIST2025

SP 800-63B-4, Sec. 4.2 Account Recovery

Four recovery classes with code entropy, lifetimes, contact and address rules, and a mandatory notification on every recovery.

Carry forwardUse it as the checklist for the proof and aftermath stages.
pages.nist.gov/800-63-4/sp800-63b/events
Design docFIDO Alliance2019-02

Recommended Account Recovery Practices for FIDO Relying Parties

Two-step strategy: reduce recovery needs with multiple authenticators, and re-run identity proofing when that fails. Edited by staff from Yahoo Japan, Visa and Amazon.

Carry forwardMake recovery rare before making it safe.
fidoalliance.org recovery practices PDF
FilingMGM Resorts2023-10

Form 8-K, 5 October 2023

States the approximate $100 million September impact and under $10 million one-time costs. Does not describe the intrusion method.

Carry forwardThe cost is on the record; the mechanism is not, so cite the filing for cost only.
sec.gov MGM 8-K
FilingCaesars2023-09

Form 8-K, September 2023

Attributes suspicious activity to a social-engineering attack on an outsourced IT support vendor; earliest event 7 September 2023.

Carry forwardOutsourcing the help desk outsources the recovery policy.
sec.gov Caesars 8-K
AdvisoryCISA2025-07

#StopRansomware: Scattered Spider (AA23-320A)

Government advisory documenting help-desk password and MFA resets, SIM swapping, and the call-to-learn-the-process step. Revised July 2025.

Carry forwardPhishing-resistant MFA resists push bombing and SIM swap, but the help desk still needs a gate.
cisa.gov AA23-320A
Threat reportMicrosoft2023-10

Octo Tempest crosses boundaries

Details resets of passwords and MFA by tricked administrators, SIM swaps, added MFA methods as persistence, and scoping advice for help-desk roles.

Carry forwardUse out-of-band channels for verification and keep policies simple enough to enforce.
microsoft.com Octo Tempest
BlogKrebs on Security2018-08

Reddit breach highlights limits of SMS-based authentication

Relays Reddit's disclosure: SMS 2FA, a June 2018 intrusion at hosting providers, and the statement that SMS is not as secure as hoped. Reddit's own post was blocked from this environment.

Carry forwardA secondary account of a primary statement; verify against Reddit's post before quoting.
krebsonsecurity.com Reddit breach
BlogEngadget2012-08

Mat Honan details the Amazon and Apple security flaws

Step-by-step account of the chained recovery attack, with Apple's response that internal policies were not followed.

Carry forwardRecovery information leaks across providers; the old case still describes the mechanism.
engadget.com Honan
NewsTechTarget2023-09

Okta: Caesars, MGM hacked in social engineering campaign

Okta's statement that Caesars was one of four tracked victims between 29 July and 19 August and MGM a fifth, with attribution left to partners.

Carry forwardOnly the pattern is corroborated; the individual call details are not.
techtarget.com Okta Caesars MGM
News9to5Google2025-10

Google Account recovery contacts

Reports Google's October 2025 launch of recovery contacts for locked-out personal accounts. The page gives no limits or lifetimes.

Carry forwardSocial recovery is back in a consumer product; its parameters are not in this source.
9to5google.com recovery contacts
PaperGoogle2014

Handcrafted Fraud and Extortion: Manual Account Hijacking in the Wild (IMC '14)

Measurement of manual hijacks, including channel success rates and the added remission step. Read from the paper PDF.

Carry forwardRecovery success depends on the contact data users gave beforehand.
IMC 2014 paper PDF
PaperGoogle2015

Secrets, Lies, and Account Recovery (WWW '15)

Millions of recovery attempts on personal knowledge questions: weak, forgotten, and falsified.

Carry forwardHonest, memorable and hard to guess cannot all be true of one question.
research.google Secrets, Lies, and Account Recovery
PaperLeibniz and Paderborn2023-09

"We've Disabled MFA for You" (CCS 2023)

1,303 sites reviewed, 71 tested by hand; many allowed MFA to be disabled with only email access, and help pages often did not match behaviour.

Carry forwardTest your own recovery flow as a user who has lost a factor; documentation will not tell you.
arxiv.org/abs/2306.09708
TalkIdentiverse (AWS)2022

A Framework for Comparing Account Recovery Strategies

Dean Saxe's "iron triangle" of access continuity, privacy and security for judging recovery mechanisms. Abstract only; no recording was reviewed.

Carry forwardName the three properties you are trading before choosing a mechanism.
identiverse.com session page
TalkBSides Exeter2026-04

Stopping account takeover at the recovery layer

Treats recovery as privileged access and lists post-reset cleanup, token lifecycle and rate limiting. Abstract only; no recording was reviewed.

Carry forwardReset must revoke attacker sessions, not only change the password.
pretalx.com BSides Exeter talk
DocsGitHub2026

Recovering your account if you lose your 2FA credentials

Lists recovery codes, passkeys, security keys, a fallback number and verified devices; states support cannot restore a protected account.

Carry forwardThe strict end of the spectrum, stated as policy.
docs.github.com recovering your account
DocsApple2026

How to use account recovery when you can't reset your Apple Account password

Fixed waiting period, 72-hour confirmation, support unable to shorten.

Carry forwardTime as the verifier, with the human override removed.
support.apple.com account recovery
DocsGoogle2026

Advanced Protection Program

States that Advanced Protection tightens account recovery and that verification takes a few days.

Carry forwardA consumer product with an explicit slower recovery tier for high-risk users.
support.google.com Advanced Protection
07

Build a miniature, then productionise it

Seven rungs. The line between toy and real is rung 4, where a delay and an independent notification make the flow resistant to someone who passes the proof.

Map your own recovery graph

List every way a user, a support agent or another system can change a password, a factor or a contact address in your product, and what each requires.

Done when: you have a table of paths with the weakest one marked.  Teaches: the recovery ceiling is a property of the table, not of your login page.

Issue and consume recovery codes

Generate codes with at least 64 bits, store them hashed, throttle verification, and issue a replacement when one is used.

Done when: a used code fails on replay and a new one is shown once.  Teaches: a recovery code is a password you are not allowed to reuse.

End the reset at a login

Build the reset flow so it rebinds the credential and then requires full sign-in, including the second factor, from a clean session.

Done when: an automated test that resets in one browser tab and opens the app in the same browser lands on the login page.  Teaches: the Keycloak bypass in miniature.

Add the hold and the independent alert

Delay the rebinding by a fixed window, send an alert to every registered address except the one that received the code, and include a cancel link that works without logging in.

Done when: a simulated attacker who passes the proof is stopped by a cancel from the owner.  Teaches: a delay is only a control if someone is told.

Put the support console on the same rails

Replace the reset button with a tool that issues a recovery request through the same gate, adds an out-of-band confirmation to the account holder's registered channel, and cannot act on administrator accounts.

Done when: no support action changes a factor without a gate record.  Teaches: the human is a client of the recovery API, not a bypass of it.

Trace the roots

For each second factor in your organisation, find where it is stored and which account can recover that store, including synced authenticator apps and password managers.

Done when: every factor has a named recovery root and an owner.  Teaches: Retool in your own estate.

Run the exercise and measure the number nobody publishes

Run a vishing exercise against the help desk, an email-takeover exercise against the reset flow, and a legitimate-lockout drill; log success by path.

Done when: you can state the legitimate recovery rate and the attacker pass rate per path.  Teaches: the trade-off in section 3, with your own data.

08

Keep hunting

The queries that found the material above, so the search can be extended when this page goes stale. Vocabulary learned along the way is in the last block.

Incidents and postmortems

  • "service desk" "reset" MFA social engineering incident report 2023
  • Retool postmortem Google Authenticator cloud sync account takeover
  • Reddit 2018 security incident SMS two-factor intercepted

Filings and advisories

  • "social engineering attack on an outsourced IT support vendor" 8-K
  • MGM Resorts 8-K October 2023 cybersecurity issue Adjusted Property EBITDAR
  • AA23-320A Scattered Spider help desk reset

Papers and standards

  • "account recovery" Google Bursztein Bonneau secret questions SMS success rate
  • multi-factor authentication recovery deployments evaluation 1,303 websites
  • NIST 800-63B-4 account recovery saved recovery codes recovery contacts

Issue trackers (run on GitHub, repo by repo)

  • repo:keycloak/keycloak is:issue reset credentials OTP bypass
  • repo:ory/kratos is:issue recovery AAL2
  • "recovery flow" "account takeover" is:issue label:security

Vocabulary this hunt taught

  • "recovery contacts" OR "delegated recovery" OR "recovery key" account security
  • "permanently lost access" 2FA recovery policy support cannot restore
  • "remission" OR "post-reset" session revocation account hijacking recovery

The queries that did not work are instructive. Searching for a named MGM or Twitter root-cause report returns only secondary coverage, because neither company published one. The NYDFS report on the 2020 Twitter intrusion would have been the best regulator-grade source here; its page returned 404 from this environment, so Twitter is absent from the incident list rather than cited second-hand.

09

References

  1. Retool, When MFA isn't actually MFA Retool, 2023-09-13. Checked 2026-10-23.
  2. Okta, Cross-tenant impersonation: prevention and detection Okta Security, 2023-08-31. Checked 2026-10-23.
  3. CISA, #StopRansomware: Scattered Spider (AA23-320A) CISA, 2023-11-16, revised 2025-07-29. Checked 2026-10-23.
  4. Microsoft, Octo Tempest crosses boundaries Microsoft Security, 2023-10-25. Checked 2026-10-23.
  5. MGM Resorts International, Form 8-K SEC, 2023-10-05. Checked 2026-10-23.
  6. Caesars Entertainment, Form 8-K SEC, September 2023. Checked 2026-10-23.
  7. TechTarget, Okta: Caesars, MGM hacked in social engineering campaign 2023-09-19. Checked 2026-10-23.
  8. Krebs on Security, Reddit breach highlights limits of SMS-based authentication 2018-08-01. Checked 2026-10-23.
  9. Engadget, Mat Honan details the Amazon and Apple security flaws 2012-08-06. Checked 2026-10-23.
  10. keycloak/keycloak #12759 GitHub, opened 2022-06-27. Checked 2026-10-23.
  11. keycloak/keycloak #39447 GitHub, opened 2025-05-05. Checked 2026-10-23.
  12. ory/kratos #4317 GitHub, opened 2025-02-21. Checked 2026-10-23.
  13. Facebook, Delegated Recovery Specification GitHub, archived 2020-09-02. Checked 2026-10-23.
  14. NIST, SP 800-63B-4 Authenticator Event Management NIST. Checked 2026-10-23.
  15. FIDO Alliance, Recommended Account Recovery Practices for FIDO Relying Parties 2019-02. Checked 2026-10-23.
  16. Bursztein et al., Handcrafted Fraud and Extortion IMC 2014. Checked 2026-10-23.
  17. Bonneau et al., Secrets, Lies, and Account Recovery WWW 2015. Checked 2026-10-23.
  18. Amft et al., "We've Disabled MFA for You" CCS 2023, arXiv v3 2023-09-19. Checked 2026-10-23.
  19. Saxe, A Framework for Comparing Account Recovery Strategies Identiverse 2022. Checked 2026-10-23.
  20. Lykova, Stopping account takeover at the recovery layer BSides Exeter, 2026-04-25. Checked 2026-10-23.
  21. GitHub Docs, Recovering your account if you lose your 2FA credentials GitHub. Checked 2026-10-23.
  22. Apple Support, Account recovery Apple. Checked 2026-10-23.
  23. Google, Advanced Protection Program Google. Checked 2026-10-23.
  24. 9to5Google, Google Account recovery contacts 2025-10-15. Checked 2026-10-23.