Présentation
Lors du Pwn2Own Berlin 2026, le chercheur Orange Tsai (DEVCORE) a présenté une chaîne d’exploitation complète de Microsoft Edge reposant uniquement sur des bugs logiques. La chaîne combine cinq vulnérabilités distinctes, dont quatre bugs logiques, et s’appuie sur deux fonctionnalités natives de Windows. Le succès a été récompensé par 175 000 $, 17,5 points Master of Pwn et le prix Epic Achievement aux Pwnie Awards.
Mécanisme de la chaîne
Le point d’entrée est le EdgeCAGuidanceNavigationThrottle, un composant de navigation dédié à la fonctionnalité Entra ID (Conditional Access). Ce throttle s’active uniquement lorsqu’une navigation provient d’une origine Microsoft précise, par exemple https://login.live.com. Il compare l’adresse e‑mail du profil actif avec le paramètre ?email= et, si elles correspondent, il annule la navigation initiale pour en lancer une nouvelle via l’API interne de navigation, en injectant l’URL fournie dans le paramètre switch_profile=. Cette redirection permet d’atteindre des schémas réservés au navigateur (edge://settings, devtools://, javascript:), ce qui constitue le premier pivot de la chaîne.
Analyse des vulnérabilités
Trois failles logiques supplémentaires sont exploitées :
1. UXSS lié à Navigate() – Si la fonction Navigate() est appelée sans source_contents, Chromium utilise automatiquement l’onglet actif (params.disposition = CURRENT_TAB). Le code source pertinent se trouve dans
chromium/chrome/browser/ui/browser_navigator.cc. Cette omission crée une cross‑origin UI‑sandbox escape lorsqu’un attaquant déclenche le throttle depuis un autre onglet.2. Contournement du contrôle d’origine – EdgeCAGuidanceNavigationThrottle valide l’origine en appelant GetLastCommittedURL(). Le contrôle ne tient pas compte des navigations initiées depuis une fenêtre ouverte par window.open(), ce qui permet de falsifier l’origine en ouvrant une nouvelle fenêtre depuis n’importe quel site.
3. Bypass du bloqueur de pop‑ups – Microsoft a intégré une liste blanche interne de URL autorisées à s’ouvrir sans intervention utilisateur. En remplaçant l’URL bloquée par une URL présente dans cette whitelist, le pop‑up est autorisé, contournant ainsi le filtre standard du navigateur.
Ces trois primitives sont enchaînées avec deux autres bugs (non détaillés dans le post) pour obtenir un accès complet au processus du navigateur, puis au système d’exploitation via les privilèges du processus Edge.
Limites et perspectives
La chaîne repose sur des comportements spécifiques à Edge 23 (version utilisée lors du Pwn2Own) et sur des implémentations internes de Chromium. Toute modification du mécanisme de navigation (par ex. un changement de la valeur par défaut de params.source_contents) ou la suppression de la whitelist de pop‑ups neutraliserait immédiatement l’exploitation. De plus, le déclencheur initial nécessite un site Microsoft contrôlé (login.live.com), ce qui restreint le vecteur d’attaque à des scénarios où l’attaquant peut injecter du code sur ce domaine. Malgré ces contraintes, la démonstration montre que les composants de navigation, souvent négligés, offrent une surface d’attaque logique importante, incitant les équipes de sécurité à renforcer les vérifications d’origine et à éviter les valeurs par défaut implicites.