Contexte de la faille
En octobre 2026, des chercheurs ont découvert que le bouton de partage public de ChatGPT pouvait être détourné pour exécuter du JavaScript dans la session authentifiée de l’utilisateur qui ouvrait le lien. Le mécanisme de partage crée une page /share/<id> isolée dans un iframe différent, mais conserve le même domaine chatgpt.com. OpenAI a classé le problème comme priorité 1 et a publié un correctif le 26 octobre 2026.
Mécanisme d’escalade
Le vecteur initial repose sur deux fonctionnalités indépendantes : le rendu d’un graphique qui charge la bibliothèque JavaScript MathLive et le composant « Preview » qui transforme un bloc HTML en page miniature. MathLive installe un écouteur postMessage dans la page principale sans vérifier l’origine du message. Le Preview, exécuté dans un cadre sandboxé, envoie un message contenant du HTML destiné à la disposition du clavier virtuel. Ce HTML est injecté via innerHTML sans désinfection, puis un iframe avec l’attribut srcdoc est créé sans balise sandbox. Le nouveau document hérite de l’identité https://chatgpt.com, ce qui lui donne accès aux API authentifiées de l’utilisateur.
Analyse des vecteurs d’exploitation
La politique de sécurité du contenu (CSP) de ChatGPT bloque les scripts inline, mais autorise les scripts provenant de YouTube. Les attaquants exploitent le point d’entrée JSONP de l’endpoint oEmbed de YouTube : la réponse inclut le callback fourni avant de renvoyer une erreur de validation. En terminant le callback par ;void, le script devient inoffensif pour YouTube tout en étant exécuté dans le cadre nouvellement créé. Ainsi, du JavaScript arbitraire s’exécute avec les privilèges du compte victime, permettant de lister les conversations, d’extraire le contenu privé et d’appeler les API de ChatGPT au nom de l’utilisateur. Aucun téléchargement, aucune autorisation de projet et aucune ouverture d’outils de développement ne sont requis ; le simple clic sur le lien partagé suffit.
// Exemple de réponse JSONP de YouTube utilisée dans l’attaque
/**/callback123({"error":"Invalid callback"});void(0);
Correction et limites
Le correctif d’OpenAI a introduit deux changements majeurs : validation stricte de l’origine des messages postMessage reçus par MathLive et ajout d’un attribut sandbox aux iframes créés via srcdoc. La CSP a également été restreinte pour interdire les scripts YouTube non nécessaires. Malgré ces mesures, la recherche montre que la combinaison de composants tiers et de mécanismes de communication inter‑frames peut créer des chemins d’escalade inattendus. Les équipes de développement doivent auditer les interactions entre widgets embarqués et vérifier systématiquement les contrôles d’origine, même lorsqu’une isolation apparente semble suffisante.