Contexte de la vulnérabilité

En mars 2026, le laboratoire Phantom de BeyondTrust a signalé une faille de commande injection dans OpenAI Codex, l’assistant de codage basé sur l’IA. La vulnérabilité apparaît chaque fois que Codex crée un conteneur de tâche et transmet le nom de branche ciblé à une commande shell sans aucune désinfection. Les caractères spéciaux reconnus par Bash – ; && | $() et les backticks – sont donc exécutés tel quels, ouvrant la porte à une exécution arbitraire. La faille touche l’ensemble des points de contact de Codex : l’interface web de ChatGPT, le CLI, le SDK et l’extension IDE.

Mécanisme d’injection et vol du jeton

Le scénario d’exploitation repose sur un simple point-virgule ajouté au nom de branche. L’attaquant définit la branche sur main, y ajoute ; pour clôturer la commande Git prévue, puis injecte une seconde commande qui écrit la sortie de git remote get-url origin – contenant le token OAuth GitHub en texte clair – dans un fichier accessible. Codex exécute la chaîne complète, lit le fichier à la demande de l’utilisateur et renvoie le token dans la réponse de la tâche. Le code suivant illustre le principe :

git checkout main; git remote get-url origin > /tmp/token.txt

Le token ainsi récupéré peut être réutilisé immédiatement, car il possède les mêmes droits que le compte qui a configuré l’agent.

Réponse d’OpenAI et implications de portée

OpenAI a mis environ six semaines d’efforts durs pour corriger le problème, le reclassant comme « Critical » avant la divulgation publique. La correction porte uniquement sur la désinfection du champ de texte, mais la portée du risque reste plus large. Selon le rapport « State of AI in Enterprise Infrastructure Security » de Teleport (2026), les organisations qui sur‑provisionnent les IA subissent 4,5 fois plus d’incidents de sécurité, 70 % accordent aux agents IA des droits supérieurs à ceux d’un humain équivalent, et 67 % utilisent encore des identifiants statiques. Le vol d’un token à portée organisationnelle pourrait donc entraîner une compromission totale de GitHub, bien au‑delà d’une simple branche.

Recommandations de sécurisation

Les experts insistent sur quatre mesures concrètes : limiter le périmètre des identifiants aux seules tâches (ex. token à usage unique pour une pull‑request), traiter chaque champ libre (noms de branche, messages de commit, titres de tickets) comme une entrée non fiable et le filtrer avant toute exécution shell, privilégier les jetons à durée de vie courte plutôt que des secrets permanents, et instaurer une visibilité opérationnelle claire sur les droits actuels de chaque agent IA. Sans ces garde‑fous, la désinfection du code ne suffit pas à empêcher la réutilisation d’identifiants compromis.