Phishing-resistant MFA: does it stop device code phishing?

Phishing-resistant MFA is a class of multi-factor authentication — FIDO2/WebAuthn security keys and passkeys, and PKI smart cards — that cannot be relayed through a fake login page, because the credential is cryptographically bound to the real site's web address. It defeats the adversary-in-the-middle proxy phishing that steals one-time codes and push approvals. But it does not stop device code phishing, because in that attack the victim signs in on the genuine provider page — the phishing-resistant check passes exactly as designed, and the attacker simply collects the resulting tokens. Closing that gap needs a policy control, not a stronger authenticator.
At a glance
Quick takeaways
- Phishing-resistant MFA means FIDO2/WebAuthn (security keys, passkeys) or PKI (PIV/CAC smart cards) — the only two forms CISA counts as phishing-resistant.
- It works by origin binding: the authenticator signs a challenge tied to the site's exact domain, so a proxy on a lookalike domain gets nothing usable.
- SMS codes, authenticator-app TOTP, and push approvals are not phishing-resistant — all can be relayed by an adversary-in-the-middle kit.
- Phishing-resistant MFA stops credential-relay (AiTM) phishing, but not device code phishing, because the victim authenticates on the real page and only approves an attacker-started session.
- The fix for device code phishing is a Conditional Access policy that blocks the device code flow, not a different authenticator.
What is phishing-resistant MFA?
Phishing-resistant MFA is multi-factor authentication that an attacker cannot capture and replay by tricking the user into entering it on a fake page. The US cybersecurity agency CISA names exactly two implementations that clear the bar:
- FIDO2/WebAuthn — hardware security keys (like a YubiKey) and passkeys, built on an open standard from the FIDO Alliance and the W3C.
- PKI-based authentication — smart cards such as the PIV and CAC cards government agencies issue.
Why is FIDO2/WebAuthn phishing-resistant?
The defining property is origin binding. When you register a passkey or security key with a site, the authenticator generates a key pair that is scoped to that site's origin — its exact domain. At sign-in, the browser hands the authenticator a challenge along with the origin it is actually talking to, and the authenticator will only produce a signature if that origin matches the one the key was registered for.
That single check is what breaks proxy phishing. In an adversary-in-the-middle attack, the victim lands on login.micros0ft-verify.com, which silently relays every request to the real Microsoft page and passes responses back. With a TOTP code or a push approval, the relay works: the victim completes MFA on the real service through the proxy, and the attacker captures the resulting session cookie. A FIDO2 authenticator refuses to sign, because the origin it sees is the attacker's domain, not the real one. There is no code to phish and no approval to relay — the authentication cannot be forwarded to a domain it was not registered against.
This is why passkeys are the recommended defense against credential theft, and why they also limit the blast radius when a password is reused or leaked: there is no shared secret to steal in the first place.
Does phishing-resistant MFA stop device code phishing?
No — and this is the gap most rollouts miss. Device code phishing abuses the OAuth 2.0 device authorization grant (RFC 8628), a legitimate flow built for input-constrained gadgets like smart TVs and conference-room devices that cannot show a full browser. The flow is simple: a device shows a short user code and a URL, and you approve it from your phone or laptop.
An attacker turns that into a trap. They start a device code request themselves, receive a real user code and the genuine verification URL from the provider, and send both to the victim — often disguised as an IT prompt, sometimes delivered by QR-code phishing. The victim opens the authentic provider page, enters the code, and signs in. Here is the crucial part: the sign-in is real, so a passkey or security key works perfectly and the phishing-resistant check passes. Once the victim consents, the provider issues access and refresh tokens — to the attacker, who has been polling the token endpoint the whole time. In some cases they register a device to capture a long-lived Primary Refresh Token and stay in for months.
Origin binding provides no protection here because the attacker never proxied the login. The victim was on the correct domain with the correct credential; they just approved a session someone else initiated. Phishing-resistant MFA is answering "is this the right user on the right site?" — and the honest answer is yes. The abuse lives one layer up, in the flow itself. The same blind spot applies to consent phishing, where a user grants a malicious OAuth app permissions with a fully valid, phishing-resistant login.
How do you defend against device code phishing?
Because a stronger authenticator does not close this route, the defense is a policy control that stops the flow from being available at all:
- Block the device code flow with Conditional Access. In Microsoft Entra, an authentication-flows Conditional Access policy can block the device code flow outright. Microsoft's guidance is to block it wherever possible and grant narrow, account-based exceptions only for the shared-device resource accounts that genuinely need it.
- Scope exceptions tightly. If some conference-room or IoT devices require device code sign-in, allow it only for those specific service accounts and, where possible, only from managed devices — not as a tenant-wide default.
- Alert on device code sign-ins. Treat interactive device code authentications by ordinary user accounts as suspicious. A finance or admin user completing a device code flow is a strong signal worth investigating.
- Train for the specific lure. The tell is being asked to enter a code you did not request into a real Microsoft or Google page. Teach users that a legitimate service never sends them a device code to approve on someone else's behalf. This is the same "authenticated does not mean safe" gap behind ghost phishing and other DMARC-evading techniques.
Where Palisade fits
Palisade does not manage your MFA, but it closes the email side of the same impersonation problem: it deploys SPF, DKIM, and DMARC, moves your domains to enforcement, and reads the aggregate reports so attackers cannot forge your exact domain to deliver the lures — the fake IT prompts and code requests — that start attacks like these. Pair phishing-resistant MFA and a device-code Conditional Access block with a locked-down sending domain, and check where your domain stands today with the Email Security Score.
Related reading
Questions readers ask
Frequently asked questions
Keep going with AI
Ask AI how this applies to you
Take this guide to your assistant — each question opens pre-filled, with a link back to this page so it can read the details.

Written by
Samuel ChenardCEO & Co-Founder, Palisade
Samuel Chenard is the CEO and co-founder of Palisade, AI-first DMARC software for IT teams and MSPs, from one domain to thousands.
More from Samuel →


