Selon la publication du 31/12/2025, une attaque baptisée “ConsentFix” (aussi appelée “AuthCodeFix”) exploite le flux OAuth 2.0 par code d’autorisation pour voler le code de redirection et obtenir des tokens sur Microsoft Entra. Découverte dans la nature par PushSecurity (évolution de ClickFix), une variante démontrée par John Hammond supprime même l’étape de copier-coller au profit d’un glisser‑déposer de l’URL contenant le code.

Pourquoi cela fonctionne 🧩

  • L’attaquant construit une URI de connexion Entra visant le client “Microsoft Azure CLI” et la ressource “Azure Resource Manager”. L’utilisateur s’authentifie puis est redirigé vers un URI de réponse local (ex. http://localhost:3001) qui contient le paramètre sensible “code” (valide environ 10 minutes) et éventuellement “state”.
  • En l’absence d’application écoutant sur localhost, le navigateur affiche une erreur, mais l’URL contient toujours le code que l’attaquant récupère. Il l’échange ensuite pour des tokens (access/ID/refresh) et accède à la ressource. Ce mécanisme explique pourquoi l’attaque semble contourner les exigences de conformité d’appareil et certaines politiques d’Accès conditionnel, car elle abuse d’un flux OAuth légitime.

Détection et signaux 🔎

  • Deux événements pour un même parcours apparaissent dans SigninLogs et AADNonInteractiveUserSignInLogs : le premier interactif (utilisateur), le second non interactif (rédemption par l’infrastructure de l’attaquant). Souvent, les IP diffèrent.
  • Le Unique Token Identifier (UTI) n’étant pas fiable pour relier les événements, la corrélation efficace utilise: SessionId + ApplicationId + UserId, avec les contraintes suivantes: le second événement survient après le premier et dans une fenêtre d’environ 10 minutes, et l’on ne considère que le tout premier second événement.
  • Réduction du bruit: certains usages bénins (ex. GitHub Codespaces) automatisent la rédemption en quelques secondes; les changements d’egress réseau (SD‑WAN/ ZTNA/ SWG) peuvent aussi générer du bruit.

Surface d’attaque et applications affectées 🛠️

  • Au‑delà de “Microsoft Azure CLI”, de nombreuses applications Microsoft de premier parti avec redirection localhost (et des URLs test/dev non résolubles) sont exploitables.
  • Exemples notables et IDs: Azure CLI (04b07795-8ddb-461a-bbee-02f9e1bf7b46), Azure PowerShell (1950a258-227b-4e31-a9cf-717495945fc2), Visual Studio (04f0c124-f2bc-4f59-8241-bf6df9866bbd), Visual Studio Code (aebc6443-996d-45c2-90f0-388ff96faa56), MS Teams PowerShell (12128f48-ec9e-42f0-b203-ea49fb6af367). Une liste complète est référencée sur EntraScopes.com.

Mitigations et protections 🛡️

  • Limiter l’audience: exiger l’assignation utilisateur sur les service principals des apps ciblées (gestion via Graph/PowerShell, Access Packages, PIM‑for‑Groups).
  • Bloquer via Accès conditionnel: créer une politique bloquant l’accès aux outils CLI (p. ex. “Microsoft Graph Command Line Tools” et “Windows Azure Service Management API”), avec exclusions pour les utilisateurs légitimes et conditions (appareil, réseau) si souhaité.
  • Exiger Token Protection (preuve de possession via WAM) pour des apps Microsoft 365 (Exchange, SharePoint, Teams) et Microsoft Graph PowerShell: l’échange du code initié par le navigateur échoue, ce qui bloque AuthCodeFix lorsque l’application est couverte. Limites: périmètre officiellement supporté côté ressources; Azure management API non listée à ce stade.
  • Réseau conforme Global Secure Access: imposer un réseau de confiance pour empêcher l’émission de nouveaux tokens (via refresh) hors périmètre; n’empêche pas le tout premier access token issu du flux initié par la victime. Ajoute des logs utiles (NetworkAccessTraffic) pour la chasse.

Hunting et vérifications 🕵️

  • Avec GSA et WAM, s’appuyer sur les logs NetworkAccessTraffic pour identifier le processus initiateur des requêtes au point de terminaison de jetons Entra (navigateur comme msedge.exe sur Windows, ou Company Portal SSO sur macOS), et détecter des demandes additionnelles hors du réseau GSA. Cette approche est fiable quand les prérequis sont en place.

IOCs et TTPs

  • IOCs: pas d’IP/domaines malveillants fournis; identifiants d’applications Microsoft ciblées (ex. Azure CLI 04b07795-8ddb-461a-bbee-02f9e1bf7b46; Azure PowerShell 1950a258-227b-4e31-a9cf-717495945fc2; Visual Studio 04f0c124-f2bc-4f59-8241-bf6df9866bbd; VS Code aebc6443-996d-45c2-90f0-388ff96faa56; MS Teams PowerShell 12128f48-ec9e-42f0-b203-ea49fb6af367).
  • TTPs: hameçonnage pour obtenir l’URL de redirection contenant le code; détournement du redirect URI localhost; échange du code depuis une autre IP dans <10 minutes; utilisation d’apps Microsoft pré‑consenties; corrélation de logs (SessionId, ApplicationId, UserId; interactif → non interactif; fenêtre temporelle); changement possible de “resource” (ResourceIdentity non fiable).

Conclusion: il s’agit d’une analyse technique détaillant un vecteur d’attaque OAuth contre Microsoft Entra, les artefacts de détection et des pistes de mitigation/hunting.

🧠 TTPs et IOCs détectés

TTP

hameçonnage pour obtenir l’URL de redirection contenant le code; détournement du redirect URI localhost; échange du code depuis une autre IP dans <10 minutes; utilisation d’apps Microsoft pré-consenties; corrélation de logs (SessionId, ApplicationId, UserId; interactif → non interactif; fenêtre temporelle); changement possible de ‘resource’ (ResourceIdentity non fiable).

IOC

identifiants d’applications Microsoft ciblées (ex. Azure CLI 04b07795-8ddb-461a-bbee-02f9e1bf7b46; Azure PowerShell 1950a258-227b-4e31-a9cf-717495945fc2; Visual Studio 04f0c124-f2bc-4f59-8241-bf6df9866bbd; VS Code aebc6443-996d-45c2-90f0-388ff96faa56; MS Teams PowerShell 12128f48-ec9e-42f0-b203-ea49fb6af367).


🔗 Source originale : https://www.glueckkanja.com/de/posts/2025-12-31-vulnerability-consentfix