Device Code Phishing Doesn’t Care What MFA You Deployed

ByteVanguard diagram of the device code phishing flow — victim authenticates on the real Microsoft page while the token is issued to the attacker.
Briefings

You can roll out FIDO2 keys to every employee, kill every legacy protocol, and pass every audit — and an attacker can still walk into your Microsoft 365 tenant without stealing a password, intercepting a code, or standing up a single fake login page. Device code phishing doesn’t break your MFA. It waits, politely, for you to complete it.

ByteVanguard• June 2026• MFA Bypass

Bottom Line Device code phishing doesn’t attack your MFA — it abuses a legitimate OAuth flow that runs entirely on Microsoft’s own domain. The victim authenticates for real, passkey included, and hands the attacker a live session. The fix isn’t a stronger factor. It’s deciding who is allowed to use the device code flow at all — and for almost everyone, that answer is no one.

Most identity advice in 2026 converges on one instruction: deploy phishing-resistant MFA. It is good advice. Passkeys and FIDO2 keys genuinely close the door on the attack that has dominated the last two years — adversary-in-the-middle phishing, where a reverse proxy relays a real login through a fake page to steal the session. But there is a second technique the “just use passkeys” guidance does not cover, and it is moving from nation-state tradecraft into commodity crime faster than almost anything else in the identity space. It abuses an authentication flow you are probably not using, and almost certainly not watching.

A legitimate flow, used exactly as designed

The OAuth 2.0 device authorization grant, standardized as RFC 8628, exists for a sensible reason. Some devices cannot present a usable login form: smart TVs, IoT appliances, command-line tools, and conference-room phones have no keyboard or no browser worth using. So the device displays a short code, and you complete the sign-in elsewhere — on your phone or laptop, at a normal Microsoft page — and the device receives its tokens once you approve. It is convenient, widely supported, and entirely legitimate.

Device code phishing changes nothing about that flow. It does not exploit a bug, corrupt the protocol, or tamper with the sign-in page. It changes one thing only: who started the request. Instead of a smart TV in your living room asking for the code, it is an attacker’s server. The rest of the dance proceeds exactly as Microsoft designed it.

Why your MFA never gets a vote

Here is the sequence, and it is worth reading slowly, because the danger lives in how ordinary each step is.

The device-code flow, weaponized
01 · INITIATE
Attacker asks Microsoft to begin a device code flow
legitimate API call
02 · LURE
Code delivered in a believable message — Teams invite, “document to review”
social engineering
03 · AUTHENTICATE
Victim signs in at the real page and completes MFA — even a passkey
microsoft.com/devicelogin
04 · TOKENS
Microsoft issues access + refresh tokens to the attacker’s device
session handed over
↓   REAL DOMAIN · REAL LOGIN · STOLEN SESSION   ↓
No fake page No password stolen MFA completed willingly Attacker holds the tokens

Notice what never happened. No password was stolen. No one-time code was intercepted. No fake login page was built, and no look-alike domain was registered. The only domain in the entire chain is Microsoft’s own. This is the part that breaks the standard mental model of MFA: a second factor exists to prove the right person is signing in — and here, the right person is signing in. The attacker does not need to defeat the factor. They need the human to finish it on their behalf.

It is also why this cannot be patched away. As Silverfort puts it plainly, this is a design property of the OAuth 2.0 device code protocol — supported by every major identity provider — not a flaw in any one vendor’s code. Microsoft can harden its implementation and add friction, but the flow is doing exactly what the standard says it should. And because there is no fake page, no payload, and no suspicious infrastructure, the signals your email gateway, EDR, and identity-protection tooling are trained to catch all come back clean.

“MFA exists to prove the right person is signing in. Here, the right person is signing in — on the attacker’s behalf.”

Not adversary-in-the-middle — and harder to find

It is tempting to file this alongside AiTM phishing, the reverse-proxy technique we covered in Browser-in-the-Middle: The Phishing Technique That Bypasses MFA. They are cousins, but the difference is the whole point. AiTM stands a fake login page in front of the real one and relays the session through it; phishing-resistant MFA defeats it because a passkey’s signature is cryptographically bound to the legitimate origin, and the attacker’s proxy domain is not that origin — so the browser refuses to sign, and the proxy is left with nothing.

Device code phishing has no proxy and no fake domain to fail that check against. The victim authenticates on the real Microsoft page, the origin is genuine, and the passkey signs happily. There is no AiTM infrastructure to detect, block, or take down — nothing to report to a registrar, nothing to add to a blocklist. The attack’s entire footprint is a code in a message and a token issued by Microsoft.

The phishing-resistant MFA myth You will read that FIDO2 or passkeys stop device code phishing. For this attack, that is wrong, and the distinction is operational, not academic. Passkeys are origin-bound: they neutralize AiTM because a fake domain cannot elicit a valid signature. Device code phishing never presents a fake domain — the victim signs in at the genuine endpoint, the passkey works, and the attacker still receives the tokens. Deploy phishing-resistant MFA; it is essential. Just understand that it closes the AiTM door, not this one. Proofpoint goes further, assessing that abuse of OAuth flows will grow as FIDO adoption grows — as defenders shut down credential and session phishing, the device code flow becomes the path of least resistance.

A caveat on the disagreement: some vendors state flatly that phishing-resistant MFA stops device code phishing. That reading conflates it with AiTM. The technically accurate position — held by Microsoft, Silverfort, WorkOS, and others — is that passkeys do not cover this variant, because authentication happens on the legitimate endpoint and the user grants access willingly. Treat “passkeys solve it” as the claim to verify, not assume.

From nation-state tradecraft to a rented kit

37×
Jump in detections, first half of 2026 (Push Security)
18×
More device-code kits in the wild vs. early 2026
15 min
Validity window per device code — defeated by automation
10–15
Distinct AI-driven campaigns run every 24h (EvilTokens)

The technique is not new. It was documented around 2020, with early tooling like Secureworks’ PhishInSuits and SquarePhish — the latter using a QR code to race the fifteen-minute window before a device code expires. Researcher Dirk-jan Mollema later showed how a device code could be chained into a Primary Refresh Token for browser-level access. For years it stayed niche, the preserve of red teams and a few advanced actors. Then it industrialized.

  • ~2020 · NICHE
    Technique documented; early tooling (PhishInSuits, SquarePhish) and Mollema’s device-code-to-PRT research keep it in red-team and advanced-actor hands.
  • AUG 2024 · STORM-2372
    A group Microsoft assesses with moderate confidence as aligned with Russian state interests runs a device code campaign — surfaced February 2025 — against government, NGOs, defense, telecom, energy, and healthcare, with Teams-invite lures. Within a day of disclosure it shifted to the Microsoft Authentication Broker client ID to pull refresh tokens, and used the technique internally for lateral movement.
  • FEB 2026 · EVILTOKENS
    Per Push Security, the first criminal phishing-as-a-service kit purpose-built for device code phishing appears — the moment the technique leaves espionage and enters the commodity market.
  • APR 2026 · AI PHAAS
    Microsoft documents an AI-enabled PhaaS campaign automating the flow end to end: live codes generated on demand to defeat the 15-minute window, hyper-personalized AI lures, and 10–15 distinct campaigns a day. Established AiTM kits like Tycoon2FA bolt on device-code capability.

What was espionage-grade tradecraft eighteen months ago is now something a low-skilled operator can rent. The defenders facing it have not changed; the volume and automation aiming at them have.

What actually stops it

Because the attack rides a legitimate flow, the control that maps to it is also about the flow — not the factor. In order of impact:

01 · Block

Block the device code flow in Conditional Access

Microsoft’s primary recommendation. Use the Authentication Flows condition to block device code flow for everyone without a documented need — most knowledge workers and most developers. Deploy report-only first; check whether a Microsoft-managed policy is already in place under the Secure Future Initiative.

02 · Scope

Where you can’t block it, scope it tightly

Allow-list by approved users, operating systems, or named locations, and reserve it for genuine cases — Teams Rooms, onboarding, developer PowerShell. Better still, require a compliant or registered device, so a code completed from an unmanaged machine fails.

03 · Shrink

Shrink the value and life of a token

Token protection and device-bound sessions, short session lifetimes, and Continuous Access Evaluation so a change in risk revokes tokens in near real time rather than waiting for them to expire.

04 · Watch

Watch the sign-in logs for the tells

Device-code grants from unexpected IPs or geographies, sign-ins tied to the Microsoft Authentication Broker client ID, and new device registrations minutes after a suspicious sign-in. Each field looks clean alone; the sequence is the story.

If you’re hit Revoking refresh tokens is necessary but not sufficient. Microsoft notes that revocation often leaves existing access tokens valid for up to an hour, and a hands-on attacker will use that window. For immediate containment, temporarily disable the compromised account, then force re-authentication through Conditional Access. Review mailbox rules, OAuth app consents, and any device registered during the exposure window.

And give users the one rule that actually matters: a legitimate device code prompt comes from a device you are actively setting up — never from an email, a Teams chat, or a message asking you to “enter this code” somewhere. If you did not start it, do not finish it.

The bottom line

Device code phishing is a useful reminder that MFA strength and identity security are not the same thing. You can do everything right at the factor layer — passkeys everywhere, no legacy authentication, a clean audit — and still hand an attacker a live session, because this technique never touches the factor. It abuses a flow you probably are not using and likely are not monitoring.

Bottom Line The fix is not stronger MFA. It is deciding, deliberately, who is allowed to use the device code flow at all — and for nearly everyone, the honest answer is no one. Block the flow, scope the exceptions, watch the grants. The strongest lock on the front door does not help when the protocol opens a side door and asks your user to hold it.

Sourcing: timeline, attribution, and mitigation guidance are drawn primarily from Microsoft’s Storm-2372 and AI-enabled device-code reporting and Microsoft Learn’s Conditional Access documentation, with corroborating detail from Push Security, Silverfort, Proofpoint (via Help Net Security), and SpyCloud. Storm-2372’s alignment with Russian state interests is a Microsoft assessment held with moderate confidence. The device code flow is defined in RFC 8628; the technique is an abuse of that standard, not a patchable vulnerability in any single product.

References

1
Microsoft · Security Blog
Storm-2372 conducts device code phishing campaign — timeline, TTPs, and Conditional Access mitigation guidance
microsoft.com
2
Microsoft · Security Blog
Inside an AI-enabled device code phishing campaign (April 2026) — EvilTokens, automation, and the defeated 15-minute window
microsoft.com
3
Microsoft · Learn
Conditional Access: block authentication flows — the device-code-flow policy that is the highest-impact control
learn.microsoft.com
4
IETF · RFC 8628
OAuth 2.0 Device Authorization Grant — the standard the attack abuses, supported by every major identity provider
ietf.org
5
Push Security
Analyzing the rise in device code phishing attacks in 2026 — commoditization, kit counts, and detection surge
pushsecurity.com
6
Silverfort
Detecting device code phishing attacks in Azure — why it is unpatchable and invisible to traditional tooling
silverfort.com
7
Help Net Security
Microsoft 365 users targeted in device code phishing — Proofpoint’s Conditional Access guidance and FIDO-adoption forecast
helpnetsecurity.com
8
WorkOS
Passkeys stop phishing; your MFA fallbacks undo it — why origin-bound MFA does not cover authorization-layer abuse
workos.com

Support independent security analysis

If you find ByteVanguard useful, you can support the site and help keep the analysis independent.

Support the analysis
Intelligence over headlines. Signal over noise.

Stay Connected

Report Intelligence
© 2026 ByteVanguard. Built for security professionals.