Les outils d'autocomplétion de code alimentés par l'IA comme GitHub Copilot,
co-développés par GitHub et OpenAI, n'ont probablement pas besoin d'être présentés. Les développeurs adoptent rapidement cette technologie en évolution pour les aider dans leur travail.


Copilot et d'autres assistants de codage basés sur les grands modèles de langage (LLM) suggèrent des lignes de code et des fonctions entières, économisant beaucoup de temps pour rechercher des formulations spécifiques ou aider à structurer des éléments courants dans le code. C'est également excellent pour aider une équipe à rédiger
de la documentation.

Aussi bénéfique qu'il puisse être, Copilot s'accompagne également de préoccupations importantes en matière de sécurité et de confidentialité dont les développeurs individuels et les organisations doivent être conscients.

Comment GitHub Copilot est entraîné ?

Pour mieux comprendre ce contre quoi il faut se protéger, il est important de se rappeler comment les données finissent dans ces LLM. GitHub Copilot ingère une grande quantité de données d'entraînement provenant d'une grande variété de sources. Ce sont ces données qu'il référence lorsqu'il répond aux requêtes des utilisateurs. Ces sources d'entraînement incluent le code de tous les dépôts GitHub publics et, essentiellement, l'ensemble
d'e l'Internet public.

Il est important de noter que Copilot apprend également des requêtes que les utilisateurs saisissent lorsqu'ils posent des questions. Si l’on copie/colle du code ou des données dans n'importe quel LLM public, on encourage l'IA à partager son travail. Pour les projets
open-source ou les informations publiques, il n'y a pas beaucoup de danger ici, car il s'est probablement déjà entraîné dessus. Mais le danger commence réellement pour le code et les données internes et privés.

Voici quelques-uns des problèmes dont il faut être conscient et qu'il faut surveiller lorsque l’on utilise un outil d'assistance au code dans son flux de travail de développement.

Fuite potentielle de secrets et de code privé

GitHub Copilot peut suggérer des extraits de code contenant des informations sensibles,
y compris des clés pour nos données et ressources machine. Cela signifie qu'un attaquant peut potentiellement exploiter Copilot pour obtenir un point d'entrée initial.

Bien que certaines mesures de protection soient en place, une reformulation astucieuse des prompts peut produire des suggestions contenant des identifiants valides. C'est une voie très attrayante pour les attaquants à la recherche de moyens d'obtenir un accès
à des fins malveillantes.

Les attaquants recherchent également des indices sur les applications et environnements. S'ils apprennent qu’une entreprise utilise une version obsolète d'un logiciel, en particulier un composant d’une application avec une faille connue et facilement exploitable, c'est probablement une voie d'attaque qu'ils tenteront d'exploiter. Bien que plus long à exécuter que l'utilisation d'une clé API découverte, c'est toujours une préoccupation sérieuse pour toute entreprise.

Suggestion de code non sécurisé

Bien que nous aimerions dire que ChatGPT et Copilot ne suggèrent jamais que du code et des configurations complètement sécurisés, la réalité est que les suggestions ne seront jamais meilleures que les données sur lesquelles ils sont entraînés. Par définition, Copilot est une moyenne de tout le travail partagé des développeurs. Malheureusement, toutes les failles de sécurité ajoutées à toutes les bases de code publiques connues font partie du corpus sur lequel il base ses suggestions.

Les données sur lesquelles il est entraîné vieillissent également rapidement et ne peuvent pas suivre les dernières avancées en matière de menaces et de vulnérabilités. Du code qui aurait été correct il y a même quelques années, grâce à de nouveaux CVE et de nouvelles techniques d'attaque, n'est parfois tout simplement pas à la hauteur des défis modernes.

Données empoisonnées avec du code malveillant

Récemment, une équipe de recherche a découvert une méthode d'injection d'échantillons de code malveillant difficiles à détecter utilisés pour empoisonner les assistants IA de complétion de code pour suggérer du code vulnérable. Les attaquants qui cherchent à inciter les développeurs à utiliser du code intentionnellement non sécurisé ne sont pas un phénomène nouveau, mais les attaquants en viennent à compter sur le fait que les développeurs font simplement confiance aux suggestions de code de leur assistant Copilot et ne les examinent pas suffisamment pour détecter les failles de sécurité.

Squatting des hallucinations de paquets

L'un des problèmes les plus inquiétants de toutes les IA est qu'elles inventent simplement des choses. Lorsqu'on pose des questions triviales, ces hallucinations peuvent parfois être assez divertissantes. Lors de l'écriture de code, ce problème peut être assez ennuyeux et, de plus en plus, assez dangereux.

Dans le meilleur des scénarios, le paquet que Copilot suggère n'existe tout simplement pas, et l’on devra trouver une alternative. Un chercheur a rapporté que jusqu'à 30 % de tous les paquets suggérés par ChatGPT étaient hallucinés.

Les attaquants sont bien conscients de ce problème et ont commencé à l'exploiter pour trouver des hallucinations couramment suggérées et enregistrer ces paquets eux-mêmes. Les plus astucieux d'entre eux pourraient cloner des paquets similaires qui exécutent la fonctionnalité décrite par Copilot, puis y cacher du code malveillant, comptant sur le fait que le développeur ne regardera pas de trop près. Cette pratique est similaire au typosquatting ; c'est pourquoi la communauté de sécurité a surnommé ce problème "squatting d'hallucination". 

Manque d'attribution et de licence

L'un des problèmes les plus souvent négligés avec le code suggéré par n'importe quel LLM est la compréhension de la licence du code suggéré. Lorsque Copilot génère du code, il ne fournit pas toujours une attribution claire à la source originale. Cela ne pose pas de problème pour les licences permissives comme Apache ou MIT. Mais que se passe-t-il si l’on injecte un bout de code sous licence copyleft, comme la GPL, qui exige que l'inclusion de ce code rende l'ensemble de la base de code open-source ? Que disent les équipes juridiques et de conformité à ce sujet ?

Partage de code privé

GitHub Copilot collecte des données sur les interactions des utilisateurs, y compris le code que les utilisateurs écrivent et la façon dont les utilisateurs répondent aux suggestions qu'il génère. Bien que l'objectif soit d'aider à affiner le modèle et à offrir à tous une meilleure expérience, pour les développeurs travaillant sur des projets sensibles ou propriétaires, cela soulève de très sérieuses préoccupations en matière de confidentialité. Une organisation peut ne pas vouloir que son code ou ses pratiques de développement soient analysés ou stockés par GitHub, même si c'est pour améliorer les performances de l'IA.

Conservation des données utilisateur

La communauté a de nombreuses questions sur la durée pendant laquelle les LLM conservent les données des utilisateurs, comment elles sont stockées et ce qui s'y trouve spécifiquement. Les entreprises déploient de grands efforts pour sécuriser les données des utilisateurs et les garder en sécurité. Utiliser des données réelles pour construire une requête est une tentation pour les développeurs, surtout si vous pouvez simplement télécharger un dossier .zip et demander à l'IA de générer le code nécessaire pour exécuter des analyses ou le transformer pour une autre utilisation. Le partage de ces données pourrait également violer directement des réglementations comme le RGPD ou le CCPA.

Malgré toutes ces préoccupations, GitHub Copilotreste un outil précieux s'il est utilisé avec prudence. Voici quelques suggestions pour éviter ces risques courants de sécurité
et de confidentialité.

Examiner attentivement les suggestions de code

Tout comme l’on ne lancerait probablement pas de code aléatoire non testé, même localement, on doit examiner attentivement tout code suggéré par Copilot ou tout autre outil d'assistance IA. N’oublions pas de traiter les suggestions de Copilot comme des suggestions. Lisez attentivement ce qui est là pour voir si cela a du sens et avec l'intention de l'utiliser comme un outil d'apprentissage. Le mieux est de toujours vérifier si le code suggéré répond aux normes de codage et aux directives de sécurité de son organisation.

Éviter d'utiliser des secrets dans votre code

Officiellement, GitHub Copilot for Business n'est pas entraîné sur votre code privé. Ceci n'est pour autant pas une raison pour être moins vigilant quant à la possible inclusion de vos secrets dans votre code. Si vous avez intégré Copilot dans votre IDE ou éditeur, il lit toujours votre code et essaie d'anticiper ce dont vous aurez besoin ensuite. La seule vraie façon d'empêcher toute fuite de secrets dans un outil d'assistance au code, ou ailleurs, est d'éliminer toutes les informations d'identification en texte clair du code.

Ajuster vos paramètres de confidentialité Copilot

GitHub fournit des paramètres qui permettent aux utilisateurs de contrôler certains aspects du partage de données avec Copilot. Examinez et configurez ces paramètres pour minimiser le partage de données lorsque possible, en particulier dans les environnements où la confidentialité est une préoccupation importante.

Former les développeurs aux meilleures pratiques de sécurité

Les développeurs sont en première ligne, livrant des fonctionnalités et des applications à un rythme toujours plus soutenu. Il est crucial de veiller à ce que tout développeur utilisant Copilot soit conscient des menaces potentielles et formé aux meilleures pratiques de sécurité de l'organisation. Les développeurs, en particulier ceux moins expérimentés, doivent comprendre les risques liés à une dépendance excessive au code généré par l'IA.

Nous devons trouver un juste équilibre, sans pour autant décourager complètement l'utilisation de Copilot, car les outils d'assistance par IA sont là pour rester et leur adoption devrait s'accélérer dans un futur proche. L'équipe de sécurité ne doit pas être perçue comme celle qui dit toujours "non", mais plutôt comme celle qui permet aux développeurs de travailler de manière plus sûre et efficace dans l'ensemble de l'organisation.

Les bonnes pratiques de Copilot sont de bonnes pratiques de code

GitHub Copilot est un outil de plus en plus précieux qui peut considérablement accélérer l'expérience de codage et réduire certaines des tâches fastidieuses auxquelles les développeurs sont confrontés quotidiennement. Nous devons nous rappeler qu'il n'est pas sans défis en matière de sécurité et de confidentialité. Les développeurs et les organisations doivent réfléchir à la façon dont ils adoptent et utilisent Copilot. Comme pour toute nouvelle technologie, la clé réside dans l'équilibre entre les avantages et les inconvénients potentiels, en prenant des décisions éclairées et en priorisant la sécurité et la confidentialité à chaque étape.

Comme pour tout code, vous devez toujours faire attention à ne pas inclure d'informations sensibles, comme des données clients ou des identifiants en texte clair dans vos requêtes. C'est particulièrement vrai lors de l’utilisation des LLM publics.

Par Thomas Segura, spécialiste cybersécurité chez GitGuardian