Une image a suffi pour entrer dans le code interne d'OpenAI

La photo que tu prends avec ton iPhone est enregistrée dans un format qui s'appelle HEIC. Tu ne l'as jamais choisi, il est là par défaut depuis des années, et il a un avantage bête : la même image pèse deux fois moins lourd qu'en JPEG. Ce format a besoin d'un lecteur, un morceau de logiciel qui décompresse le fichier pour l'afficher, et c'est ce lecteur qui a servi de porte d'entrée à quatre chercheurs pour aller fouiller dans le code interne d'OpenAI. En moins de 72 heures.

Tout de suite une précision, sinon la suite ne veut rien dire : ils avaient le droit d'essayer. L'équipe de Hacktron AI, une petite boîte de sécurité, a trouvé la faille le 25 juillet et l'a signalée le jour même. OpenAI a corrigé dans la journée et payé 6 500 dollars de récompense. Rien d'illégal là-dedans, et personne n'a été volé. Ce qui compte, c'est comment ils y sont arrivés, et en combien de temps. Parce que là, il y a une vraie nouvelle.

Une image, ce n'est pas une donnée, c'est un programme

Voilà la partie que personne n'a en tête. Quand ton téléphone affiche une photo, il ne lit pas des pixels sagement posés dans un fichier. Il exécute un programme qui décompresse, redimensionne et reconstruit l'image. Ce programme est écrit dans un langage de bas niveau, celui qu'on utilise quand on veut aller vite, et il jongle en permanence avec la mémoire de la machine : il réserve de la place, il la relâche, il recommence.

Une seule erreur dans cette comptabilité, et quelqu'un qui fabrique son fichier avec soin peut faire déborder la réservation pour écrire là où il n'a pas le droit. C'est exactement ce qui a été trouvé dans libheif, la bibliothèque qui décode le HEIC, le HEIF et le format voisin AVIF. Un dépassement de mémoire, noté 8,8 sur l'échelle de gravité des failles, ce qui est très haut, avec exécution de code à la clé. Traduction : le fichier n'est plus une image qu'on regarde, c'est un programme qu'on lance.

Ton image, c'est le colis. Le programme qui la lit, c'est le scanner. Et le scanner, lui, exécute ce qu'il trouve dedans

Ton image, c'est le colis. Le programme qui la lit, c'est le scanner. Et le scanner, lui, exécute ce qu'il trouve dedans

Le chemin exact est encore plus banal que ça. La cible n'était pas le site d'OpenAI, c'était son forum communautaire, celui où les utilisateurs posent leurs questions. Ce forum tourne sur Discourse, un logiciel de forum très répandu, qui fait passer chaque image envoyée par un outil appelé ImageMagick pour fabriquer des vignettes. Et ImageMagick appelle libheif. Une photo déposée dans un message, et la faille était atteinte.

Ce que les modèles ont fait en quelques heures

C'est là que l'histoire devient intéressante pour de vrai, parce que l'équipe ne l'a pas fait à la main. Le travail est crédité à quatre chercheurs, Harsh Jaiswal, Mohan SRK, Rahul Maini et Sudhanshu Rajbhar, assistés de deux modèles, dont Claude Opus 5 d'Anthropic.

Le premier essai était pourtant raté. Avec Opus 4.8, la version précédente, l'équipe n'arrivait pas à obtenir une attaque fiable, parce que le système d'exploitation change la place de la mémoire à chaque exécution pour brouiller les pistes. C'est une protection vieille comme le monde, et elle marchait encore. En passant sur Opus 5, sorti le 24 juillet, le modèle a produit une attaque fonctionnelle en quelques heures. Puis il l'a réécrite pour une autre famille de processeurs, puis adaptée à l'allocateur de mémoire précis utilisé par le forum.

Le même établi, mais l'outillage a changé de main. Ce qui demandait des semaines à un humain se compte maintenant en heures

Le même établi, mais l'outillage a changé de main. Ce qui demandait des semaines à un humain se compte maintenant en heures

Le chiffre qui me fait lever un sourcil, ce n'est pas la vitesse du modèle, c'est celui-là, lâché par les chercheurs eux-mêmes : certaines de leurs tentatives n'ont abouti qu'après des milliers d'images envoyées. Voilà ce que les agents savent faire et que nous ne savons pas : recommencer dix mille fois sans se lasser, sans se décourager, sans se dire que ça ne marchera jamais. Le temps total, du premier regard sur la bibliothèque jusqu'à l'accès au dépôt de code interne d'OpenAI, est donné à moins de 72 heures.

Le deuxième verrou n'était pas dans l'image

Une fois la faille exploitée, les chercheurs n'étaient encore que sur un forum. Le vrai trésor était ailleurs, et ils l'ont atteint par un second trou, celui-là beaucoup plus bête : la façon dont OpenAI gérait la connexion unique entre ses services. On se connecte une fois, et on entre partout.

Résultat, le contrôle d'un compte de forum a débouché sur l'accès à un compte ChatGPT d'un employé, puis sur la possibilité de lire et de proposer des modifications dans le dépôt de code privé de la boîte. Ils ont ouvert une demande de modification, une de ces propositions de correction qu'un développeur envoie pour qu'on relise son travail. Sauf que la leur était vide de sens : elle servait juste de preuve de passage. Ils racontent s'être arrêtés là, sans aller lire le code sensible.

La réponse d'OpenAI, en une phrase : les permissions des jetons de connexion du forum ont été resserrées, et les jetons et les sessions touchés ont été révoqués. Les chercheurs, eux, insistent sur un point que personne n'a envie d'entendre : ce n'était pas une faille de Discourse, c'était un problème de conception maison. Le forum a servi de porte, la bêtise était derrière la porte.

Ce qui est déjà réparé, et ce qu'on ne peut pas vérifier

Le calendrier est propre et public. Signalement le 25 juillet, correctif chez OpenAI le jour même, avis de sécurité de Discourse le 28 juillet, et version corrigée de libheif, la 1.23.4, publiée le 6 septembre. Si tu tiens un serveur ou un NAS, c'est cette version qu'il te faut, et tout ce qui n'a pas les derniers correctifs est potentiellement à découvert.

Là où je décroche, c'est sur la suite du communiqué. Hacktron indique que la campagne s'est étendue à Slack, Meta, Zoom, Shopify et GitHub Enterprise, autrement dit des plateformes que la moitié d'entre nous utilise tous les jours. Sauf que pour celles-là, il n'y a pas le même niveau de détail technique, et aucune confirmation des intéressés. Un chercheur qui dit « on est aussi entrés chez Meta » et une entreprise qui répond « la faille est corrigée, rien n'a fuité », ce n'est pas la même information. Je la note, je ne la prends pas pour argent comptant.

Ce que tu fais lundi matin

Rien de spectaculaire, et c'est tant mieux. Le format HEIC est celui de ton iPhone, donc tes photos passent par un décodeur quelque part, mais celui de ton téléphone est fourni par Apple et corrigé par les mises à jour du système. Pareil chez Google. Donc la réponse tient en une ligne : garde ton téléphone et ton ordinateur à jour, et si tu as mis une mise à jour de côté parce qu'elle tombait mal, c'est le moment.

La mise à jour que tu as repoussée trois fois. C'est celle-là, et elle prend dix minutes

La mise à jour que tu as repoussée trois fois. C'est celle-là, et elle prend dix minutes

Ensuite, ça concerne surtout les bricoleurs. Si tu héberges tes photos sur un boîtier dans le placard, si tu fais tourner un Nextcloud, un forum, un gestionnaire de bibliothèque, un service qui accepte des images envoyées par d'autres, va voir s'il utilise libheif et dans quelle version. C'est le genre de dépendance qu'on installe sans le savoir, à l'intérieur d'un paquet qu'on a installé pour autre chose. Mon propre Synology range mes photos depuis des années et je n'avais jamais regardé ce qu'il y a sous le capot.

Et un dernier point, hors de ton salon. Les guichets qui reçoivent des images envoyées par des inconnus sont tous dans le même cas : un site de petites annonces, un service de tickets, un formulaire de candidature avec photo. Chacun de ces endroits est un scanner qui avale des colis dont personne ne connaît le contenu.

Ce qui a vraiment changé, et ce n'est pas la faille

La faille est corrigée, l'histoire serait déjà finie. Sauf que la vraie information est dans le calendrier. Une faille de mémoire dans une bibliothèque obscure, exploitée de bout en bout avec une chaîne complète, sur plusieurs architectures de processeurs, pour remonter jusqu'à un dépôt de code interne : c'était le travail d'un été pour une équipe humaine bien outillée. Ici, la partie assistée par les modèles est comptée en heures.

Et ce n'est pas un cas isolé. La semaine dernière, je racontais ce que dit le rapport d'Anthropic sur les détournements de Claude, avec des gens qui s'en servent pour espionner et arnaquer à grande échelle. Même pente, autre versant. Ce qui était cher devient bon marché, et une faille bon marché se corrige plus vite qu'elle ne s'exploite uniquement si le logiciel est maintenu.

Ce qui me travaille, ce n'est pas OpenAI qui a perdu la manche et l'a dit : c'est le nombre de libheif qui dorment dans un projet que personne ne met à jour, avec un mainteneur bénévole, et un programme qui attend d'être réveillé par une image. Combien il en reste, dans tous ces placards ?

Rejoignez la conversation

Vous devez avoir un compte pour commenter cet article. La création est gratuite et prend moins d'une minute.

  • Le fichier XMLTV à télécharger gratuitement, chaque jour
  • Commenter les articles et répondre aux autres lecteurs
  • Être averti par e-mail des nouveaux articles que vous suivez

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙