if ( !emtpy($headline_subheadline ) ) : ?>
Les chercheurs ont réussi à faire en sorte que GitHub Copilot CLI lise les fichiers locaux sensibles et envoie leur contenu à un point de terminaison externe.
endif; ?>
GitHub Copilot CLI peut être configuré pour lire des fichiers sensibles sur la machine d’un développeur et envoyer leur contenu à un attaquant à partir d’une seule page Web.
Les chercheurs en sécurité d’Adversa AI ont déclaré que la nouvelle technique d’attaque, baptisée Cryptographic Context Injection (CCI), cache des instructions malveillantes dans le contenu crypté. Ces instructions sont traitées comme un contexte de confiance lorsque Copilot CLI déchiffre le contenu à l’aide de son propre environnement d’exécution de code, ce qui leur permet d’influencer ce que fait ensuite l’agent.
Lors d’une démonstration, les chercheurs d’Adversa ont demandé à Copilot de lire un fichier « .env.prod » contenant des secrets et d’envoyer son contenu à un point final contrôlé par un attaquant. « Chaîne complète : 28 secondes, aucune confirmation et aucun point dans la transcription nommant l’hôte de destination ou indiquant que le contenu du fichier a quitté la machine », a déclaré le chercheur dans un article de blog.
Selon Adversa, l’attaque n’est pas une compromission universelle en un seul clic, car elle nécessite que Copilot CLI s’exécute en mode pilote automatique et qu’un modèle soit prêt à exécuter les instructions décryptées. GitHub a validé la découverte mais a refusé de la traiter comme une vulnérabilité, affirmant que l’utilisateur avait explicitement demandé à Copilot de récupérer le contenu contrôlé par l’attaquant tout en lui accordant toutes les autorisations pour agir de manière autonome.
« Ils ont indiqué qu’ils pourraient rendre la fonctionnalité plus stricte à l’avenir, mais n’avaient rien à annoncer, et ont jugé le rapport inéligible au programme de prime aux bogues de GitHub », a déclaré Adversa. Les chercheurs ont contesté cette évaluation, arguant qu’elle n’explique pas pourquoi Copilot rejette les mêmes instructions lorsqu’elles sont présentées en texte clair, mais les accepte après qu’elles ont été chiffrées et déchiffrées dans son environnement d’exécution.
Le cryptage rend l’attaque possible
Une attaque pourrait commencer par un utilisateur exécutant Copilot CLI et lui demandant de récupérer une URL, ont expliqué les chercheurs. La page contiendrait des instructions chiffrées que l’agent serait ensuite invité à déchiffrer à l’aide de deux clés candidates.
Bien que l’une de ces clés soit une clé légitime, l’autre est un modèle qui ne peut être complété qu’en lisant des fichiers depuis la machine locale. La chaîne d’attaque se poursuit, l’agent tentant de préparer les deux clés en lisant les fichiers ciblés et en ajoutant leur contenu au modèle.
Cette lecture du fichier lui-même constitue le véritable vol.
La clé reconstruite échoue au déchiffrement, bien qu’elle remplisse son objectif, après quoi Copilot utilise la clé légitime. Les instructions déchiffrées lui demandent ensuite d’effectuer une autre requête Web, transportant le contenu du fichier précédemment collecté vers le point final de l’attaquant.
Le modèle décide si l’attaque fonctionne
La sélection du modèle par Copilot peut cependant changer le résultat.
Les chercheurs ont déclaré que le modèle mai-code-1.1-flash de Microsoft exécutait la chaîne complète dans 50 % de leurs exécutions, tandis que deux modèles GPT-5.6 proposés via Copilot refusaient systématiquement la même charge utile. Avec la sélection du modèle définie sur Auto, Adversa indique que le modèle vulnérable a été attribué dans certaines sessions sans que l’utilisateur ne choisisse ou ne voie quel modèle gérait le flux de travail.
Bien que GitHub refuse de qualifier cela de faille ou de corriger le comportement sous-jacent, Adversa conseille aux défenseurs de rechercher toute séquence d’actions suspecte autour d’une charge utile chiffrée : un contenu Web non fiable entre dans l’agent, le code s’exécute, les fichiers locaux sont lus et l’agent établit ensuite une connexion sortante sans rapport.



