CamoLeak : la faille de GitHub Copilot a permis un vol de données furtif

Une faille de GitHub Copilot Chat permettait à des attaquants de dérober du code privé par injection de prompt. Découvrez le fonctionnement de CamoLeak et comment vous prémunir contre les risques liés à l’IA.

Écrit par
Ken Underhill
Ken Underhill
Oct 10, 2025
5 minute read
eSecurity Planet Le contenu et les recommandations de produits sont indépendants de la rédaction. Nous pouvons gagner de l'argent lorsque vous cliquez sur des liens vers nos partenaires. En savoir plus

Une vulnérabilité critique de GitHub Copilot Chat (CVSS 9,6) permettait à des attaquants d’aspirer des secrets et du code source depuis des dépôts privés, et même de guider les réponses de Copilot au moyen d’instructions malveillantes.

GitHub a déjà publié un correctif pour cette vulnérabilité.

En identifiant la fuite, le chercheur en sécurité Omer Mayraz a déclaré que la vulnérabilité « … permettait l’exfiltration furtive de secrets et de code source depuis des dépôts privés ».

Quand l’assistance devient dangereuse

Copilot Chat s’exécute avec les autorisations de l’utilisateur qui pose les questions. 

Cela signifie qu’une injection de prompt réussie peut lire des dépôts privés, suggérer du code compromis et faire fuiter des données, sans déclencher les contrôles traditionnels du trafic sortant. 

Pour les organisations logicielles qui adoptent des assistants IA pour la revue de code et le triage des demandes de fusion, il s’agit d’un risque direct pour la propriété intellectuelle et les identifiants cloud.

Au cœur de l’attaque

L’attaque a commencé par la dissimulation d’un prompt contrôlé par l’attaquant dans la description d’une demande de fusion, à l’aide de la fonctionnalité de « commentaires invisibles » de GitHub. 

Bien que ce contenu ne soit pas visible dans l’interface utilisateur normale, Copilot Chat ingère tout de même le contexte du dépôt et de la demande de fusion (y compris les métadonnées masquées) lors de la génération de ses réponses. 

Comme Copilot répond en utilisant les autorisations de l’utilisateur qui l’interroge, toute instruction intégrée à ce contexte invisible pouvait influencer le comportement de l’assistant pour n’importe quel développeur ayant ouvert la demande de fusion ou interrogé Copilot à son sujet. 

En bref, un attaquant pouvait influencer les réponses de l’assistant destinées à d’autres utilisateurs sans que ceux-ci ne voient jamais le texte malveillant.

Advertisement

Accès aux données

Copilot tient compte du contexte et fonctionne avec les privilèges de la personne qui l’utilise. Il peut donc accéder au contenu de dépôts privés lorsqu’un utilisateur autorisé lui demande de l’aide. 

L’attaque exploitait ce modèle de privilèges : le prompt injecté demandait à Copilot de rechercher des éléments sensibles (par exemple des clés ou des descriptions de vulnérabilités) dans les dépôts accessibles à la victime, puis d’intégrer ces informations à sa sortie ou de les encoder afin de pouvoir les exfiltrer.

Contourner le proxy Camo

La fuite directe de données vers un domaine externe arbitraire au moyen d’une balise <img> ou d’un script standard est généralement bloquée par la politique de sécurité du contenu (CSP) de GitHub. 

GitHub atténue le risque lié à l’inclusion d’images tierces en acheminant les requêtes d’images externes via un proxy Camo : lorsqu’un contenu Markdown ou autre contenu de dépôt référence une image externe, GitHub réécrit l’URL de l’image en une URL camo.githubusercontent.com qui inclut une signature cryptographique. 

Le service Camo ne récupère le contenu en amont que lorsque l’URL signée est validée comme provenant de GitHub, ce qui empêche les attaquants de créer librement des adresses forçant un navigateur à contacter un serveur qu’ils contrôlent.

Plutôt que de tenter de publier directement des URL externes arbitraires, l’attaquant avait préparé un ensemble d’URL de proxy pré-signées que GitHub accepterait. 

Chaque URL pré-signée pointait vers un pixel transparent 1×1 inoffensif, hébergé sur une infrastructure contrôlée par l’attaquant. 

En constituant un dictionnaire de telles URL de proxy signées — une par caractère ou symbole que l’attaquant prévoyait d’utiliser — l’adversaire a créé des briques pouvant être combinées en séquence dans la sortie générée par Copilot.

Encoder les données

Le prompt injecté contraignait Copilot à produire une sortie référençant les URL de proxy pré-signées dans un ordre particulier, afin d’encoder le contenu du dépôt. 

En substance, Copilot « dessinait » du texte en émettant un flux de références d’images ; lorsque le navigateur de la victime affichait la réponse de l’assistant, il récupérait les images via le proxy Camo de GitHub. 

Advertisement

Comme chaque récupération via le proxy aboutissait finalement sur l’hébergement de l’attaquant, le schéma et l’ordre des requêtes transmettaient effectivement les données volées à l’attaquant — une petite requête par caractère — sans laisser de données dans les journaux de serveur classiques ni dans des éléments visibles de l’interface.

Technique d’évasion

Pour éviter la mise en cache et faire en sorte que chaque récupération corresponde à des données fraîches, les attaquants ajoutaient des paramètres de requête éphémères aux URL pré-signées afin que chaque requête soit récupérée plutôt que servie depuis le cache. 

L’utilisation de fragments d’URL ou de lectures côté client plutôt que de paramètres de requête classiques réduisait encore le risque de voir le contenu exfiltré apparaître dans les journaux d’accès traditionnels des serveurs, car les fragments sont traités au niveau du client (le navigateur) et non envoyés à l’origine dans les requêtes HTTP.

La technique combinait plusieurs failles défensives : l’ingestion par Copilot du contexte masqué du dépôt, les privilèges d’exécution de l’assistant, la réécriture par un CDN ou un proxy de confiance (qui faisait ressembler les requêtes à une activité GitHub normale) et la propension du navigateur à récupérer de nombreuses petites ressources invisibles. 

Ensemble, ces éléments produisaient un canal discret capable d’exfiltrer du contenu sensible sans afficher de sortie manifestement malveillante au développeur. 

Réduire les risques des attaques assistées par l’IA

Pour réduire le risque de vulnérabilités similaires assistées par l’IA, les organisations devraient adopter une approche à plusieurs niveaux combinant contrôle des accès, protection des identités, supervision et formation des développeurs.

  • Restreindre les accès et les autorisations : Limitez l’utilisation de Copilot aux équipes et dépôts nécessaires, appliquez le principe du moindre privilège, et désactivez les fonctionnalités non vérifiées comme le rendu d’images ou de HTML.
  • Renforcer la gestion des identités et des secrets : Imposez l’authentification multifacteur, faites régulièrement tourner les secrets et surveillez les accès non autorisés ou l’utilisation abusive de clés.
  • Superviser, détecter et réagir : Suivez l’activité de Copilot, examinez les anomalies et intégrez les scénarios de compromission de l’IA à vos plans de réponse aux incidents.
  • Formez les développeurs et sécurisez les processus de travail des développeurs : Apprenez aux développeurs à considérer le contenu des demandes de fusion comme non fiable, à vérifier le code généré par l’IA et à bloquer le rendu externe non vérifié.
Advertisement

Ensemble, ces mesures aident les organisations à réduire leur exposition, à renforcer leur supervision et à garantir que le développement assisté par l’IA reste à la fois innovant et sécurisé.

Quand l’IA devient une surface d’attaque

CamoLeak illustre une évolution plus large : à mesure que les outils d’IA fusionnent avec les plateformes de développement, le contexte devient une surface d’attaque. 

Des contrôles autrefois limités au rendu Markdown ou aux proxys d’images peuvent devenir des canaux d’exfiltration de données lorsqu’ils sont orchestrés par un agent. 

Les entreprises devraient évaluer les assistants IA comme n’importe quelle intégration privilégiée — cartographier les flux de données, limiter les capacités (en particulier l’utilisation d’outils et le rendu) et donner la priorité aux mesures d’atténuation rapides pilotées par les fournisseurs. 

À mesure que les plateformes d’IA évoluent, même des fonctionnalités de présentation apparemment limitées peuvent devenir des vecteurs de compromission à fort impact si elles ne sont pas rapidement verrouillées.

L’IA continue de brouiller la frontière entre automatisation de confiance et menace potentielle. En effet, les mêmes technologies qui améliorent la productivité des développeurs alimentent aussi une nouvelle vague de tromperie — notamment avec l’essor des hypertrucages générés par l’IA.

Ken Underhill

Ken Underhill is an award-winning cybersecurity professional, bestselling author, and seasoned IT professional. He holds a graduate degree in cybersecurity and information assurance from Western Governors University and brings years of hands-on experience to the field.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Propriété de TechnologyAdvice. © 2026 TechnologyAdvice. Tous droits réservés

Divulgation publicitaire : Certains des produits qui apparaissent sur ce site proviennent d'entreprises dont TechnologyAdvice reçoit une compensation. Cette compensation peut influencer la façon dont les produits apparaissent sur ce site, notamment l'ordre dans lequel ils apparaissent. TechnologyAdvice n'inclut pas toutes les entreprises ou tous les types de produits disponibles sur le marché.