🔍 Contexte

Publié le 28 octobre 2026 par Mukul Goyal (Parameter Labs), cet article de recherche détaille une vulnérabilité critique (P1) découverte en octobre 2026 dans ChatGPT (chatgpt.com), permettant la prise de contrôle de comptes via une chaîne d’exploitation multi-composants. OpenAI a corrigé le problème le 26 octobre 2026.

⚙️ Mécanisme d’exploitation

La chaîne repose sur la combinaison de plusieurs fonctionnalités légitimes de ChatGPT :

  1. Graphique interactif : charge la bibliothèque MathLive, qui installe un listener postMessage dans la page principale chatgpt.com.
  2. HTML Preview (iframe sandboxé sur un domaine différent) : envoie deux messages postMessage de type mathlive#virtual-keyboard-message au listener MathLive.
  3. Absence de vérification d’origine : MathLive accepte ces messages sans valider event.origin ni event.source (politique none).
  4. Injection HTML : le message update-setting injecte du HTML arbitraire via innerHTML dans la page principale, via createHTML qui agit comme un wrapper Trusted Types sans sanitisation.
  5. Contournement du sandbox : un <iframe srcdoc> sans attribut sandbox est créé dans la page principale, héritant de l’identité https://chatgpt.com.
  6. Contournement de la CSP : la CSP de ChatGPT autorisait les scripts depuis www.youtube.com. L’endpoint YouTube oEmbed JSONP (/oembed?callback=) permettait d’injecter du JavaScript arbitraire via le paramètre callback, retourné avec Content-Type: text/javascript.

💥 Impact confirmé

  • Exécution de JavaScript arbitraire dans la session authentifiée de la victime sur chatgpt.com
  • Énumération des conversations privées via GET /backend-api/conversations
  • Lecture du contenu de conversations privées via GET /backend-api/conversations/<id>
  • Exfiltration de données vers un serveur contrôlé par l’attaquant via une requête image
  • Accès complet aux APIs authentifiées de ChatGPT au nom de la victime
  • La victime n’avait qu’à ouvrir le lien partagé (aucune installation, aucun clic supplémentaire requis dans la version automatique)

📅 Timeline

  • 13 oct. 2026 : Confirmation du chemin MathLive → HTML en production
  • 14 oct. : Reproduction complète, exécution JavaScript arbitraire
  • 16 oct. : Confirmation de la livraison via lien de partage public entre comptes séparés
  • 17 oct. : Confirmation du Preview automatique à l’ouverture du lien
  • 18 oct. : Soumission au bug bounty OpenAI
  • 19 oct. : Ajout de la preuve d’exfiltration de conversation privée
  • 21 oct. : OpenAI reproduit le bug, sévérité élevée de P2 à P1
  • 26 oct. : Correction déployée sur les deux frontends web, bounty de 5 000 USD accordé

📄 Nature de l’article

Il s’agit d’une publication de recherche technique (post-mortem / write-up de bug bounty) dont le but est de documenter en détail la chaîne d’exploitation, les décisions de conception fautives et la remédiation appliquée par OpenAI.

🧠 TTPs et IOCs détectés

TTP

  • T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
  • T1185 — Browser Session Hijacking (Collection)
  • T1539 — Steal Web Session Cookie (Credential Access)
  • T1567 — Exfiltration Over Web Service (Exfiltration)
  • T1189 — Drive-by Compromise (Initial Access)
  • T1530 — Data from Cloud Storage (Collection)

IOC

  • URLs : https://www.youtube.com/oembed?callback=globalThis.__marker=31337;void — URLhaus

⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 5 novembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.


🟡 Indice de vérification factuelle : 46/100 (moyenne)

  • ⬜ parameter.ai — source non référencée (0pts)
  • ✅ 18798 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 1 IOC(s) (6pts)
  • ⬜ 0/1 IOCs confirmés externellement (0pts)
  • ✅ 6 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://www.parameter.ai/labs/we-found-a-gap-at-openai