Votre assistant de codage IA pourrait réécrire vos clés SSH sans que vous ne vous en aperceviez. Wiz Research a découvert une faille nommée « GhostApproval » qui permet à un lien symbolique (symlink) malveillant nommé project_settings.json de pointer vers des clés privées, et la boîte de dialogue d'approbation par action qui apparaît ne montre que le nom du lien symbolique. En approuvant la boîte de dialogue, vous venez de donner à l'assistant un accès illimité à vos identifiants.
Comment l'exploit fonctionne
- Un attaquant ajoute un fichier nommé project_settings.json à un dépôt.
- Ce fichier n'est pas un fichier JSON ordinaire ; il s'agit d'un lien symbolique (symlink) qui redirige vers la clé privée ~/.ssh/id_rsa (ou équivalent) de l'utilisateur.
- Lorsque le développeur demande à l'assistant IA de « configurer l'espace de travail » (set up the workspace), l'assistant suit le lien symbolique et se prépare à écrire dans le véritable fichier de clé SSH.
- La boîte de dialogue d'approbation qui apparaît ne liste que project_settings.json. Elle ne résout pas le lien symbolique pour afficher le chemin réel sur le disque.
- Cliquer sur « Approuver » accorde à l'assistant la permission de modifier la clé privée, compromettant ainsi l'identité de l'utilisateur sur tous les services qui font confiance à cette clé.
Le bug apparaît dans six outils largement utilisés : Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity et Windsurf. Tous affichent la même boîte de dialogue trompeuse car l'interface utilisateur affiche le nom qu'elle reçoit, et non la cible résolue.
Pourquoi les boîtes de dialogue par action ne suffisent pas
L'approbation par action suppose qu'un humain peut examiner chaque opération effectuée par une IA. En pratique, cela vous oblige à porter des jugements parfaits toutes les quelques secondes — ce que personne ne peut faire plus vite que l'agent n'agit.
Ce que font les fournisseurs – et pourquoi c'est important
- Amazon, Google et Cursor l'ont déjà corrigé.
- Anthropic (le créateur de Claude Code) affirme que les utilisateurs ne doivent approuver que ce qu'ils comprennent. Cela ignore la charge cognitive nécessaire pour repérer les liens symboliques et suppose que les utilisateurs peuvent auditer instantanément chaque chemin de fichier — une attente irréaliste.
- Cursor a également divulgué un problème distinct, baptisé DuneSlide, qui permettait à des attaquants d'exécuter du code sur une machine sans aucune invite d'approbation. L'entreprise a corrigé ce bug, montrant à quel point ces assistants peuvent rapidement devenir des vecteurs d'attaque lorsque les vérifications de permissions sont faibles.
La divergence des réponses soulève une question plus profonde : la sécurité doit-elle être une boîte de dialogue a posteriori, ou une limite prédéfinie que l'assistant ne franchit jamais ?
Permissions limitées (scoped) : une alternative pratique
Au lieu de demander une approbation pour chaque opération de fichier, les développeurs peuvent définir un périmètre (scope) pour l'assistant avant son exécution :
- Définir un arbre de répertoires (par exemple,
/src) que l'IA peut lire ou écrire. - Toute tentative d'accès à des fichiers en dehors de cet arbre — comme
~/.ssh/id_rsa— est bloquée par le système d'exploitation ou une couche de sandbox. - Le périmètre est établi une seule fois, réduisant le nombre de décisions qu'un humain doit prendre tout en limitant l'impact de l'assistant.
La limitation par périmètre fait passer le modèle de sécurité de « demander à chaque fois » à « n'autoriser que ce qui est nécessaire ». Cela reflète la manière dont les environnements d'exécution de conteneurs et les systèmes d'exploitation mobiles isolent (sandbox) les applications, limitant les dommages en cas de problème.
À surveiller ensuite
- Déploiements des fournisseurs : Gardez un œil sur les notes de mise à jour des six outils concernés.
L'essentiel
L'exploit GhostApproval prouve que se fier à une boîte de dialogue contextuelle donne un faux sentiment de sécurité. Tant que chaque assistant de codage IA ne résoudra pas les liens symboliques et n'affichera pas les chemins complets, les développeurs devraient imposer des permissions d'écriture limitées — en indiquant précisément à l'assistant où il peut travailler avant qu'il ne commence. Ce changement simple bloque la classe d'attaques la plus dangereuse sans ajouter de fatigue liée aux clics.
Source : dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1
