When the Real Microsoft Page Steals Your Account
340 organizations lost access to their Microsoft accounts last quarter. Every one of them had MFA enabled. Every employee typed their code into the genuine microsoft.com page—verified SSL certificate, correct URL, no typos. They passed the MFA challenge themselves, using their own fingerprint.
And that is exactly how they got robbed.
This is device code phishing, and I can't stop thinking about what it reveals. Not just about this particular attack, but about the decade of security training we've built on a foundation that no longer matches how authentication actually works.
The Trick That Breaks Your Mental Model
Here's the legitimate flow this attack exploits. You're setting up Netflix on your smart TV. The TV has no keyboard worth typing on, so it shows you a six-digit code and tells you to visit netflix.com/activate on your phone. You type the code, log in, and the TV gets access. You've probably done this a hundred times.
The attack uses the exact same flow, just pointing at a different device.
An attacker initiates a Microsoft device login from their machine. Microsoft generates a real code and displays it on their screen. The attacker emails that code to you, dressed up as a one-time passcode: "Your verification code is 8H4KLM. Enter it at microsoft.com/devicelogin to confirm your identity."
You go to microsoft.com/devicelogin. Because it IS microsoft.com/devicelogin—the real one, Microsoft's actual infrastructure. You enter the code. You complete your MFA. Fingerprint, hardware key, whatever you've got.
You just logged the attacker in. Not a session hijack. Not a man-in-the-middle. You handed Microsoft's servers explicit authorization to grant access to their device.
From Microsoft's perspective, you approved it. The token lands on the attacker's machine, fully valid, indistinguishable from your own login. And here's the part that should make you uncomfortable: that token survives your password reset. You can change your password that night, enable additional security measures, and they're still inside, because you didn't revoke the device authorization—you probably didn't even know to look for it.
We Trained Them to Check the One Thing That Wasn't Fake
I've been in security long enough to remember when we taught people to look for the padlock icon. Then we taught them to check for "https." Then to hover over links and inspect URLs character by character. Then to watch for misspellings like "micros0ft.com."
Every single one of those defenses points at the destination.
This attack fakes the message, not the destination. The email is the lie. The page it sends you to is genuinely Microsoft. So every instinct we've drilled into people—check the URL, verify the certificate, hunt for the typo in the domain—points them directly at the one component that's completely legitimate.
I was reviewing an incident report with a client last month. Finance team member, ten years at the company, had been through phishing training twice that year. She checked the URL before entering the code. She told the investigator later she felt good about it because she specifically remembered to verify the domain.
She did everything right according to the model we gave her. The model was wrong.
The Uncomfortable Question Nobody Wants to Answer
Here's what keeps me up: MFA proves you have the key. It cannot prove you meant to open the door.
We've built an entire security paradigm around "something you know, something you have, something you are." But we never really accounted for "something you were tricked into authorizing."
Device code phishing isn't exploiting a bug. It's exploiting a feature working exactly as designed. Microsoft built this flow because it solves a real problem—how do you authenticate from a device without a keyboard? The flow is elegant. The security is sound. The human using it just has no way to know whether they initiated the request.
And passkeys don't save you. I know, we've been told passkeys are the answer to phishing. They are the answer to credential theft. But in this attack, the hardware key signs happily, because the origin really IS Microsoft. The cryptographic proof is correct. What's incorrect is the human's understanding of what they're authorizing.
This is the second time I've watched the security industry perfect the math while forgetting the humans. (The first was when we deployed DMARC everywhere and then watched business email compromise numbers go up anyway, because the attacker just used the real email system from a compromised account. But what do I know—I've only watched this movie twice.)
Castles Built on the Wrong Assumption
This reminds me of something that happened in finance twenty years ago. We built elaborate systems to verify trade authenticity—cryptographic signatures, multi-party verification, the works. Then someone figured out they could get a legitimate trader to authorize a fraudulent trade by presenting it inside a legitimate workflow. The security infrastructure worked perfectly. The human just didn't understand what they were authorizing.
We called it "social engineering" and treated it like a training problem. We built more elaborate verification rituals. The attacks got more sophisticated.
Nobody questioned whether the fundamental model—that authentication equals authorization—was sound.
Here's the pattern I keep seeing: We build a security control that works in the lab. We deploy it broadly. Attackers find the gap between how it works technically and how humans understand it. We add more technical controls. The gap widens.
What Monday Morning Looks Like
So what do you actually do about this? Not in theory—what do I tell clients to implement this week?
First, audit your device authorizations right now. In Microsoft 365, that's Azure AD > Users > Sign-in logs > filter for "Device code flow." In Google Workspace, it's Security > Investigation tool > Device trust. Most organizations I work with have never looked at this log. You probably have devices authorized that nobody remembers approving.
Second, disable device code authentication if you're not using it. Most organizations don't need it. If you do need it for specific applications, whitelist those applications and block everything else. Microsoft lets you do this through conditional access policies.
Third—and this is the hard one—rewrite your security awareness training. Stop teaching people to verify destinations. Start teaching them to verify requests. "Did I initiate this login?" is the question that would have stopped this attack. "Is this the real Microsoft page?" is the question that led people straight into it.
The tell wasn't in the page. It was in the ask. A code you didn't request, for a login you never started. That's the pattern to recognize.
The Systemic Question
But here's the question I want you sitting with: What else in your stack quietly treats "authenticated" as if it meant "authorized"?
How many of your systems grant access based solely on valid credentials, without checking whether the request makes sense? How many workflows assume that if someone successfully authenticated, they must have intended to perform the action?
Because this attack works by exploiting exactly that assumption. The authentication is genuine. The authorization is implied. And somewhere in that gap, 340 organizations lost control of their data.
I don't have a clean answer for you. I have a checklist of device authorization logs to review, conditional access policies to update, and training modules to rewrite. And a growing suspicion that we're going to keep seeing variations of this pattern until we fundamentally rethink what MFA actually proves.
What to Do This Week
Here's your specific action plan:
-
Monday morning: Check your organization's device authorization logs. Azure AD > Users > [select user] > Devices, or Google Workspace equivalent. Document what you find.
-
Monday afternoon: Schedule a meeting with your identity team. Ask them: "Can we disable device code authentication flow? If not, which applications actually need it?"
-
Tuesday: Review your last phishing training module. Count how many times it tells people to verify the URL versus verify the request. Rewrite accordingly.
-
This week: Email your security awareness vendor or internal training team. Send them this scenario. Ask them to build an exercise around it.
-
Next week: Run a tabletop exercise with your finance team specifically. "You receive an email with a verification code. The email says to enter it at microsoft.com/devicelogin. What do you do?" Document their responses. Adjust your training based on what you learn.
The next disruption won't wait for us to update our mental models. It'll just exploit the gap between how security works and how we think it works.
Which gap are you going to close first?
More Leadership Posts
Give Me My Corporate E-Mail on My Device
I've spent a lot of time talking to clients about allowing employees to receive corporate e-mail on their personal devic...
NYT on US Government Identities
The New York Times has a good background piece on the NSTIC proposal for online identities. There will never be a govern...
Why Toxic Leadership Costs You Top Talent
Discover how outdated management practices—no WFH, banned conversations, 100-hour weeks—drive your best people to compet...
