Nouveaux enjeux de sécurité des assistants de codage IA : voici le rapport de l’ANSSI et de la BSI
L'ANSSI et le BSI (Bundesamt für Sicherheit in der Informationstechnik) ont publié ce vendredi 4 octobre 2024 un rapport qui référence les risques liés aux assistants de programmation basés sur l’IA. Voyons ensemble ce que contient ce document.
Alors que l’adoption de l'IA progresse rapidement, les assistants de programmation basés sur l'IA se sont déjà largement implantés dans le secteur public et privé où ils aident à générer du code, à corriger les erreurs et à produire des tests ou de la documentation. Toutefois, leur usage croissant entraîne également des risques de sécurité. L'agence française (ANSSI) et l'agence allemande (BSI) ont donc publié un rapport détaillant ces opportunités et risques, avec des recommandations pour une utilisation sécurisée.
Sommaire
Assistants de programmation basés sur l’IA : Qu'est-ce que c'est ?
Les assistants de codage IA ou AI Coding Assistants, permettent de générer automatiquement du code à partir des instructions textuelles dans lesquelles le développeur décrit précisément la fonctionnalité qu'il veut générer, ainsi que le langage à utiliser (Python, C, PowerShell, etc.). Ces modèles n'ont pas seulement été entrainés à partir de textes littéraires, de conversations ou d'encyclopédies, mais également à partir d'un grand volume de codes source divers et variés.
Il s'agit d'une utilisation très spécifique et orientée des LLM (Large Language Model) dont ChatGPT est l'une des versions les plus avancées aujourd'hui. Après tout, le code est un langage comme un autre !
Dans les IDE et solutions de développement, ces assistants IA peuvent à présent être importés en tant que module, et donc directement intégré au développement, comme on peut le voir dans l'image suivante :
Cependant, leur intégration soulève des préoccupations croissantes en matière de sécurité, notamment sur la qualité et la fiabilité du code généré, mais aussi sur sa confidentialité.
Que disent l'ANSSI et le BSI à propos des AI Coding Assistants ?
Présentation des usages et enjeux
Pour répondre à ces enjeux et aider les entités publiques et privées à mieux utiliser ces assistants, l'ANSSI (France) et le BSI (Allemagne) ont publié un rapport conjoint, intitulé "AI Coding Assistants", analysant les risques des assistants IA et proposant des recommandations et bonnes pratiques pour les utilisateurs.
Le document commence par présenter les opportunités et les contextes d'utilisation actuels des assistants de développement basés sur l'intelligence artificielle. Cette partie du document permet surtout de mieux comprendre comment tirer parti de l'IA dans le domaine du développement. On peut notamment citer la génération de code bien entendue, mais aussi :
- le debugging
- la génération de cas de tests ou tests unitaires
- l'explication de code (pratique quand le gourou de l'équipe est en congés)
- le formatage, documentation et l'ajout de commentaire
- la "traduction" de code dans un autre langage
- l'automatisation de tâches chronophages ou inintéressantes
Ces différents exemples, déjà traités par les assistants IA actuels, permettent notamment de mettre en lumière le niveau d'avancement de ces IA pour les lecteurs non aguerris, mais aussi le niveau d'informations auxquelles elles ont accès.
Quels sont les risques liés aux AI Coding Assistants ?
Le document présente ensuite les risques associés à l'utilisation d'assistants de développement basés sur l'IA. Le premier risque est bien sûr la confidentialité du code, un assistant IA ou un chatbot n'est pas juste un plugin, il a forcément besoin d'être en échange constant à une plateforme beaucoup plus puissante pour fonctionner : celle-ci est mécaniquement dans des clouds externes gérés par d'autres entreprises. Ainsi, le code analysé, généré ou reformaté est forcément transmis à l'éditeur de l'assistant, qui peut alors avoir accès aux identifiants, clé API ou informations sensibles qu'il contient.
Le rapport met également en lumière ce qui est appelé "Automation Bias" ou les biais de l'automatisation. Cette partie du document est pour moi la plus intéressante, en voici un extrait traduit :
Pour les débutants, les assistants de codage IA peuvent fournir des ressources d'apprentissage précieuses en offrant des informations sur des solutions éprouvées, mais ils présentent également le risque d'une dépendance excessive et d'une acceptation non critique du code généré, car même les solutions défectueuses sont bien formulées.
(Source: AI Coding Assistants - BIS/ANSSI)
C'est ici une notion très importante qui me passe souvent par l'esprit quand je vois les progrès de l'IA : l'humain risque de perdre en compétence si l'IA fait tout ou partie du travail à sa place, jusqu'à ne plus pouvoir comprendre ce qui généré et le considérer comme parfait.
Les autres risques cités portent sur la faible qualité du code généré (et sa sécurité) ainsi que le risque d'utilisation de l'IA comme vecteur d'introduction de vulnérabilité (par manipulation externe ou hallucination du modèle). Cette partie du document est très intéressante à lire et permet de mieux comprendre la surface d'attaque d'un modèle IA (dans le contexte du développement, mais pas uniquement).
Quelles bonnes pratiques et recommandations ?
Après avoir identifié plusieurs vulnérabilités, telles que l'injection de code malveillant, le vol de données sensibles, et les biais des modèles IA. Le document insiste sur la nécessité d'une supervision humaine et d'une évaluation régulière des outils utilisés.
Concernant le risque portant sur la confidentialité, l'ANSSI met notamment l'accent sur un point très important qu'elle suggère d'interdire : l'utilisation d'assistants de développement basés sur l'IA par les développeurs sans consentement explicite de leur entreprise. Je pense que ce comportement est très fréquent et ne se limite pas uniquement au domaine du développement : les développeurs se mettent à utiliser ces assistants sans que cela ne soit géré ou encadré par leur entreprise, en passant par des comptes ou outils personnels par exemple (shadow IT). L'autre principale recommandation sur ce thème étant bien sûr d'être très vigilant et conscient de ce que l'on partage avec ces assistants.
Les autres mesures préconisées portent aussi sur le risque des attaques par Supply-Chain et l'introduction/injection de code malveillant par le biais de ces assistants IA (hallucination, prompt injection, empoisonnement des sources de données, etc.).
Pour aller plus loin et connaitre toutes les recommandations de l'ANSSI et du BSI sur ces sujets, je vous recommande vivement la lecture de ce document de 16 pages, assez synthétique et très intéressant :
- ANSSI - AI Coding Assistants
À noter que ce rapport s’inscrit dans un ensemble de travaux plus larges des deux organismes, incluant des publications sur les systèmes IA générative et les LLM et leur sécurité. Les autres documents déjà parus sont :
- ANSSI - Security recommendations for a generative AI system
- BSI - Generative AI Models Opportunities and Risks for Industry and Authoritie
Si vous utilisez déjà ces assistants, dites-nous comment vous envisagez d'intégrer ces recommandations dans vos pratiques de développement dans les commentaires ou sur notre serveur Discord !