Device code phishing is een geavanceerde vorm van phishing waarbij dreigingsactoren misbruik maken van een legitieme inlogmethode voor apparaten zonder browser, zoals IoT-apparaten. Het doel is om accounts over te nemen door toegang te verkrijgen tot tokens die wachtwoorden en multi-factor authenticatie kunnen omzeilen.

Tokens zijn tijdelijke digitale bewijzen van succesvolle authenticatie. Microsoft gebruikt verschillende typen tokens, waaronder sessietokens, accesstokens en refreshtokens. Sessietokens geven toegang tot een account voor een bepaalde periode zonder opnieuw in te loggen. Accesstokens bevatten toegangsinformatie en zijn slechts kort geldig. Refreshtokens kunnen nieuwe accesstokens genereren zonder dat opnieuw ingelogd hoeft te worden. Dreigingsactoren kunnen deze tokens stelen en misbruiken, bijvoorbeeld via een adversary-in-the-middle-aanval waarbij een slachtoffer wordt gelokt naar een nagemaakte inlogpagina die identiek is aan het echte portaal.

Bij een device code phishing-aanval wordt echter gebruikgemaakt van het legitieme authenticatiemechanisme van Microsoft, de OAuth device code flow. Deze flow is bedoeld voor apparaten zonder toetsenbord of browser, zoals smart-tv’s, waarbij een gebruiker een code invoert op een ander apparaat om in te loggen. Dreigingsactoren genereren zelf een device code bij Microsoft en sturen deze door naar het slachtoffer, die wordt misleid om deze code in te voeren op de echte Microsoft-inlogpagina. Hierdoor ontvangt de dreigingsactor een geldig accesstoken en vaak ook een refreshtoken, waarmee langdurige toegang tot het account wordt verkregen.

Deze methode maakt het voor aanvallers mogelijk om toegang te behouden tot accounts, ook nadat het oorspronkelijke accesstoken is verlopen. De dreigingsactor kan met het refreshtoken nieuwe accesstokens genereren en zo de toegang continu behouden. Een schematische weergave van deze aanval is te vinden in de beschikbare bron. Het is belangrijk om bewust te zijn van deze aanvalsvorm en passende maatregelen te treffen om misbruik te voorkomen.