Contexte technique

OpenAI propose depuis 2023 une application native pour macOS qui encapsule le modèle ChatGPT dans une interface Electron. Au démarrage, le client lance un serveur HTTP local, accessible uniquement via localhost, afin de communiquer avec le processus de rendu. Cette architecture, courante dans les applications hybrides, repose sur une API interne non documentée qui accepte des requêtes JSON depuis le navigateur intégré.

Mécanisme de la faille

Selon l’article, le serveur local expose un endpoint /read qui renvoie le contenu d’un fichier dont le chemin est fourni dans le paramètre path. Aucun mécanisme d’authentification n’est appliqué, et le serveur accepte les requêtes provenant de n’importe quel origine. Un site web malveillant chargé dans le même navigateur peut alors déclencher une requête cross‑site request forgery (CSRF) vers http://127.0.0.1:…/read?path=…. Le navigateur, en raison de la même‑origine, autorise la connexion à localhost, ce qui permet à la page distante de récupérer le corps de la réponse contenant le fichier demandé.

curl http://127.0.0.1:5000/read?path=$HOME/.ssh/id_rsa

Cette requête illustre que l’attaquant peut spécifier n’importe quel chemin accessible au compte utilisateur, y compris des clés privées SSH, des historiques de terminal ou des cookies de session. L’article indique que la vulnérabilité a été découverte par un chercheur en sécurité qui a démontré l’extraction de ~/.bash_history et de ~/Library/Application Support/ChatGPT/config.json, contenant des jetons d’authentification.

Analyse de l’impact et des limites

Le risque principal réside dans la capacité d’un script web à lire des données locales sans interaction supplémentaire de l’utilisateur. Parce que le serveur écoute uniquement sur localhost, l’exploitation nécessite que la victime visite un site contrôlé par l’attaquant pendant que l’application ChatGPT est ouverte. Dans ce scénario, l’attaquant peut récupérer des informations d’identification et potentiellement réutiliser les jetons d’API pour accéder aux services OpenAI au nom de la victime.

OpenAI a publié un correctif dès la découverte, désactivant l’endpoint /read et ajoutant une vérification d’origine stricte. Le correctif montre que la vulnérabilité était un défaut de conception plutôt qu’une erreur de configuration du système d’exploitation. Cependant, la présence d’un serveur local expose toujours une surface d’attaque : toute future fonctionnalité qui accepte des paramètres de chemin doit être soumise à une validation stricte et à une authentification.

En l’absence de chiffrement du trafic interne, un attaquant disposant d’un accès réseau local pourrait également intercepter les requêtes. L’article souligne que, bien que la faille soit désormais corrigée, elle rappelle la nécessité de limiter les interfaces locales aux seules communications inter‑processus autorisées et de ne jamais exposer de fonctions de lecture de fichiers sans contrôle d’accès.