Contexte et découverte
En août 2026, Oren Yomtov de la société Accomplish AI a signalé à OpenAI deux failles, baptisées Heapjack et Overpatch. Les deux vulnérabilités permettent à l’agent Codex d’exécuter du code sur la machine hôte sans aucune invite d’approbation. Le rapport a été transmis le 12 août 2026 et OpenAI a publié les correctifs huit jours plus tard, le 20 août 2026. Les correctifs sont disponibles à partir de la version Codex CLI 0.149.0 et du build Codex Desktop 26.818.21641.
Mécanismes des vulnérabilités
Heapjack exploite le fait que Codex Desktop lance un processus node_repl contenant deux contextes JavaScript partageant le même tas V8. Le contexte de confiance conserve un jeton d’authentification, tandis que le contexte non fiable exécute le code fourni par l’agent. En appelant
v8.getHeapSnapshot(), le code non fiable extrait le jeton du tas partagé, le forge dans une requête pipe vers le processus parent, puis déclenche l’exécution de commandes système hors sandbox. Le déclencheur est banal : un développeur ouvre un dépôt cloné en mode lecture‑seule et interroge Codex ; le code du dépôt obtient alors un accès complet.Overpatch réside dans le CLI open‑source de Codex. L’outil apply_patch décide des permissions en fonction du répertoire parent de chaque chemin indiqué dans le patch. En incluant un chemin /tmp, le processus obtient un accès racine. Le chercheur a ajouté deux entrées : une écriture dans .zshrc via un lien symbolique vers le répertoire personnel, et une seconde vers /tmp. Bien que la seconde écriture échoue, les permissions élargies restent actives, de sorte que le prochain lancement d’un shell exécute le code injecté depuis .zshrc. Cette persistance fonctionne même en mode « workspace‑write », toujours sans invite d’approbation.
Correctifs et recommandations
OpenAI a corrigé les deux failles en isolant le jeton de confiance hors du tas partagé et en restreignant les chemins autorisés par apply_patch. Les équipes DevOps doivent mettre à jour immédiatement les deux composants : le CLI (≥ 0.149.0) et le client desktop (≥ 26.818.21641). Au‑delà de la mise à jour, il est recommandé de traiter tout dépôt non produit en interne comme une entrée non fiable, même en mode lecture‑seule, car Heapjack montre que ce mode ne suffit pas à bloquer l’exécution.
Les contrôles d’approbation ne sont plus fiables lorsqu’ils résident dans le même processus que l’agent. La meilleure pratique consiste à placer l’enveloppe d’isolation (sandbox) dans une couche que l’agent ne peut pas atteindre : une machine virtuelle, un conteneur dédié ou un proxy réseau qui empêche la modification des fichiers de configuration système.
Implications pour les équipes DevOps
Ces incidents illustrent que les agents d’IA, lorsqu’ils sont autorisés à interagir avec le système de fichiers, reproduisent les mêmes risques que les jobs CI traditionnels qui s’octroient leurs propres permissions. La leçon principale est que la frontière d’application des politiques de sécurité doit être externe à l’agent. Les acheteurs doivent interroger les fournisseurs sur la localisation de cette frontière et sur la rapidité de leurs cycles de correctifs ; le délai de huit jours observé ici constitue un point de référence.