Aller au contenu
sobolewski.proL'IA du jour, chaque soirS'inscrire

Une fois par jour. Désinscription en un clic. Politique de confidentialité

Faille ChatGPT : un seul lien suffisait pour pirater un compte

Une faille ChatGPT permettait de pirater un compte via un lien public vers un chat et de lire les chats d'autrui. OpenAI a versé 5 000 USD. Voici comment.

4 min de lecture

Cet article dans d’autres langues :العربيةDeutschEnglishEspañolItaliano日本語Polski简体中文

Dans cet article
  1. Comment fonctionnait la faille ChatGPT
  2. Que pouvait faire l’attaquant, concrètement ?
  3. Comment OpenAI a-t-il réagi ?
  4. Pourquoi on en parle autant ?
  5. À quoi faire attention à l’avenir ?
  6. FAQ

Le 28 octobre, Mukul Goyal, de Parameter, a publié la description d’une faille ChatGPT qui permettait de prendre le contrôle d’un compte grâce à un simple lien public vers une conversation (chatgpt.com/share/…). Le code de l’attaquant s’exécutait dans la session connectée de la personne qui ouvrait le lien. OpenAI a clôturé le signalement le 26 octobre et versé 5 000 USD dans le cadre de son programme de bug bounty.

Comment fonctionnait la faille ChatGPT

L’attaque est une chaîne de quatre bugs (tels que les décrivent les chercheurs) :

  1. Un graphique interactif dans la conversation chargeait MathLive, une bibliothèque open source de saisie de formules mathématiques. La bibliothèque acceptait les messages entre frames de n’importe quel expéditeur, sans vérifier qui les envoyait.
  2. Les données de disposition du clavier de MathLive pouvaient contenir du HTML, que la bibliothèque insérait dans la page principale sans le filtrer.
  3. Ce HTML créait une iframe sans attribut sandbox, si bien que le nouveau document héritait de l’origine chatgpt.com.
  4. La Content Security Policy de ChatGPT bloquait les scripts inline, mais autorisait YouTube. Le endpoint oEmbed de YouTube acceptait un callback de type JSONP, ce qui a permis aux chercheurs de charger leur propre code depuis un domaine autorisé.

En pratique, l’attaquant publiait une conversation d’apparence normale. Elle commençait par un vrai graphique (pour charger MathLive), suivi d’un aperçu HTML, c’est-à-dire la fonction Preview, qui transforme un bloc de code HTML en une petite page fonctionnelle. C’est cet aperçu qui envoyait les messages malveillants à la bibliothèque.

Selon les chercheurs, ouvrir le lien partagé était la seule action nécessaire. Dans la version la plus fiable, la victime cliquait une fois sur Preview. Dans une version ultérieure, l’aperçu s’ouvrait tout seul, et la preuve d’exécution du code apparaissait au bout d’environ 4,5 secondes.

Que pouvait faire l’attaquant, concrètement ?

Le code s’exécutait en tant que chatgpt.com dans la session de la victime, il pouvait donc appeler l’API authentifiée de ChatGPT en son nom. Dans leur preuve de concept, les chercheurs ont récupéré la liste des conversations récentes, puis le contenu d’une conversation privée que personne ne leur avait partagée, et en ont envoyé un petit extrait à leur serveur.

D’après l’article, ils pouvaient ainsi effectuer pratiquement n’importe quelle action sur le compte de la victime (« Essentially, we could perform any action on behalf of the victim’s ChatGPT account »). L’attaque fonctionnait aussi entre comptes et workspaces distincts.

Comment OpenAI a-t-il réagi ?

La chronologie tirée de l’article de Parameter :

  1. 13 octobre : les chercheurs confirment le chemin vulnérable de MathLive dans le code de production.
  2. 18 octobre : ils signalent la faille au programme de bug bounty d’OpenAI.
  3. 21 octobre : OpenAI reproduit le bug et fait passer sa priorité de P2 à P1.
  4. 22 octobre : un correctif arrive sur l’un des deux frontends web, et le 23 octobre des changements de CSP bloquent une partie de la chaîne.
  5. 26 octobre : les deux frontends rejettent les messages utilisés dans l’attaque, le signalement est clôturé et les chercheurs reçoivent la prime.

L’article ne mentionne aucune exploitation de la faille dans de vraies attaques. Il ne décrit pas non plus ce qu’OpenAI a précisément modifié dans le code.

Pourquoi on en parle autant ?

D’abord, pour la simplicité de l’attaque. Le lien ressemblait à n’importe quel autre chat ChatGPT partagé, donc vérifier l’URL n’aurait servi à rien.

Ensuite, pour la prime. L’article a atteint la une de Hacker News, et c’est le montant qui revient le plus dans les commentaires : beaucoup trouvent que 5 000 USD pour pirater un compte avec un seul lien, c’est trop peu, et certains craignent que des primes aussi basses découragent les chercheurs de signaler des bugs.

Enfin, pour l’origine du problème. Fait intéressant, toute la chaîne partait d’une bibliothèque de saisie de formules mathématiques (d’où le titre de l’article, « Do the Math »). Plus un chat a d’extras interactifs – graphiques, aperçus de pages –, plus il y a d’endroits où quelque chose peut mal tourner. Et les conversations partagées avaient déjà posé problème : comme on le sait, lors de la fuite chez Meta Muse, les titres des chats partagés se sont retrouvés dans le DNS public.

À quoi faire attention à l’avenir ?

Les chercheurs tirent deux leçons pour les développeurs d’applications web :

  1. Le destinataire de messages entre frames doit vérifier à la fois l’origine de l’expéditeur et la fenêtre exacte à laquelle il a accordé des droits.
  2. La CSP doit être une protection de secours, et non la seule barrière une fois que le HTML de l’attaquant se trouve déjà sur la page.

Pour nous, utilisateurs, cette faille est déjà corrigée. Mieux vaut quand même se rappeler qu’un lien vers la conversation de quelqu’un d’autre avec un chatbot reste un lien envoyé par un inconnu. J’explique comment protéger ses comptes et ses clés API dans mon guide sur la sécurité des agents IA.

FAQ

La faille ChatGPT est-elle corrigée ?

Oui. Selon les chercheurs, OpenAI a confirmé le 26 octobre que les deux frontends web de ChatGPT rejettent les messages utilisés dans l’attaque.

Dois-je faire quelque chose sur mon compte ?

L’article de Parameter n’indique aucune démarche pour les utilisateurs et ne mentionne pas d’attaques en dehors des tests des chercheurs.

Combien OpenAI a-t-il payé pour ce signalement ?

5 000 USD dans le cadre de son programme de bug bounty. Le signalement a reçu la priorité P1.

Suffisait-il vraiment d’ouvrir le lien ?

Selon les chercheurs, oui. Dans une version de l’attaque, il fallait encore cliquer une fois sur Preview ; dans une version ultérieure, l’aperçu se lançait tout seul.

  • IA
  • sécurité
  • OpenAI

L'IA du jour, chaque soir

Chaque soir, l'essentiel de l'actualité de l'IA et les nouveaux articles du blog. Court, avec les sources.

Une fois par jour. Désinscription en un clic. Politique de confidentialité