Bien coder en utilisant l’intelligence artificielle. Les développeurs sont tentés d’utiliser largement les assistants de codage en IA. Cette pratique comporte des règles à respecter.
computer language source codeLe rapport conjoint de l’ANSSI et du BSI analyse les opportunités et les risques liés à l’utilisation des assistants de codage basés sur l’IA.
Bien coder en utilisant l’intelligence artificielle
Les développeurs ont bien compris les avantages de solliciter l’IA pour coder plus vite et mieux. L’ANSSI souligne les avantages en termes de productivité et de simplification de tâches de développement, mais met également en lumière les dangers liés à la fuite d’informations sensibles, à la qualité et à la sécurité du code généré, ainsi qu’aux nouvelles failles de sécurité introduites par ces outils.
Quelles sont les bonnes pratiques à respecter pour une utilisation responsable et sécurisée de ces assistants ?Quelles mesure prendre pour réduire ou éliminer ces risques ?
Opportunités et Risques des Assistants de Codage IA
Les assistants de codage basés sur l’IA, utilisant des modèles de langage (LLM), offrent un potentiel de transformation du développement logiciel. Ils présentent à la fois des opportunités et des risques importants.
Le premier risque est celui d’une utilisation non maitrisée. La direction technique doit définir la politique en matière d’utilisation d’IA pour les développeurs et définir les règles d’emploi.
Opportunités:
- Génération de Code: Les assistants de codage peuvent générer du code source pour des méthodes, des classes et des prototypes, automatisant les tâches répétitives et aidant les développeurs à créer des blocs de code et des fonctions courants. Ils peuvent également aider à la complétion de code.
- Débogage: L’IA peut détecter et corriger automatiquement les erreurs dans le code source, réduisant potentiellement le temps consacré au débogage et à la maintenance.
- Génération de Cas de Test: Les assistants peuvent proposer automatiquement des cas de test et des tests unitaires, y compris des cas limites, ce qui augmente la couverture du code et simplifie le développement piloté par les tests (TDD).
- Explication du Code: L’IA peut fournir des explications en langage naturel sur le code source, ce qui facilite la familiarisation avec le code existant et les audits de code source. Cette documentation du code est importante pour la maintenance future.
- Formatage, Commentaire et Documentation du Code: Les assistants peuvent automatiser le formatage du code, la génération de commentaires et la création de blocs de documentation, améliorant la standardisation, la lisibilité et la maintenabilité du code.
- Traduction Automatique du Code: L’IA a le potentiel de traduire du code existant écrit dans des langages de programmation anciens vers des langages plus modernes, ce qui facilite la maintenance et la mise à jour des systèmes existants.
- Augmentation de la Productivité et Satisfaction des Employés: L’utilisation d’assistants de codage IA augmente la productivité des développeurs et améliore leur satisfaction au travail en réduisant les tâches répétitives et en fournissant un accès rapide à l’information.
Risques:
- Confidentialité des Entrées: Les informations sensibles saisies dans les assistants de codage IA peuvent être divulguées, car elles peuvent être utilisées pour la formation des modèles ou être accessibles à des tiers.
- Biais d’Automatisation: La confiance excessive dans les sorties des assistants de codage IA peut conduire à l’acceptation de code erroné ou non sécurisé.
- Manque de Qualité et de Sécurité des Sorties: Les assistants de codage IA peuvent générer du code incorrect, non sécurisé ou inefficace, y compris des vulnérabilités de sécurité et des pratiques obsolètes.
- Attaques de la Chaîne d’Approvisionnement et Code Malveillant: Les assistants de codage IA peuvent être manipulés pour générer du code malveillant, appeler des bibliothèques malveillantes ou divulguer des informations sensibles via des attaques telles que les hallucinations de paquets, les injections indirectes de prompts et l’empoisonnement des données et des modèles.
- Utilisation Abusive à des Fins d’Attaques: Les attaquants peuvent utiliser les capacités de génération de code des LLM pour créer, modifier ou améliorer du code malveillant, ou pour décompiler des binaires.
Recommandations sur l’usage de l’IA pour les développeurs
Les entreprises et les développeurs doivent adopter une approche responsable lors de l’utilisation des assistants de codage IA, en tenant compte des risques potentiels et en mettant en œuvre des mesures d’atténuation appropriées.
Ia mapGestion:
- Effectuer une analyse systématique des risques.
- Mettre en place des directives de sécurité et des mesures d’atténuation.
- Sensibiliser les employés aux risques et les former à l’utilisation des outils d’IA.
- Fournir des offres contrôlées aux développeurs pour prévenir les risques liés au Shadow IT.
- Adapter les équipes d’assurance qualité aux gains de productivité potentiels.
Développement:
- Examiner et comprendre le code généré.
- Être conscient des limites et des problèmes de sécurité des systèmes.
- Suivre une formation sur l’utilisation efficace des assistants de codage IA.
- Échanger les meilleures pratiques avec les collègues.
Recommandations pour l’Utilisation Sécurisée des Assistants de Codage IA
Les assistants de codage IA, basés sur des modèles de langage (LLM), présentent des avantages potentiels mais aussi des risques pour la sécurité. La plupart des outils LLM sont des services cloud qui vont ensuite utiliser le code uploadé pour alimenter leur modèle. Utiliser sans contrôle un outil d’IA générative de code c’est montrer son code en public.
Recommandations pour la direction technique
- Comprendre que les assistants de codage IA ne remplacent pas les développeurs expérimentés. L’utilisation non maîtrisée de ces outils peut avoir de graves conséquences sur la sécurité.
- Mettre en place des offres contrôlées pour les développeurs afin d’éviter le Shadow IT. Il est préférable d’utiliser un hébergement local et souverain de modèles open-source pour prévenir la fuite d’informations sensibles, ou des comptes d’entreprise contrôlés et configurables avec des conditions contractuelles claires lors de l’utilisation de services cloud. Il est crucial de vérifier les conditions contractuelles du fournisseur, notamment en ce qui concerne l’utilisation des données.
- Réaliser une analyse systématique des risques avant d’introduire des outils d’IA. Cette analyse devrait examiner attentivement la gestion actuelle des secrets (clés API, etc.) et comment les protéger contre les fuites à l’avenir.
- S’assurer que les équipes d’assurance qualité (AppSec, DevSecOps, etc.) bénéficient de gains de productivité similaires grâce à l’IA ou que leurs effectifs soient augmentés. Il est important d’adapter ces équipes à l’augmentation potentielle de la production de code grâce aux assistants IA.
- Sensibiliser les employés aux risques liés à l’utilisation des outils d’IA et les former à leur utilisation. Il est crucial d’expliquer les risques et les bonnes pratiques aux développeurs.
- Fournir des directives claires aux employés sur les outils qu’ils sont autorisés à utiliser, avec quelles données et à quelles fins. Ces directives doivent être précises pour éviter toute confusion.
- Mettre en place une phase d’évaluation avec un suivi des indicateurs clés (nombre de nouveaux codes validés, charge de travail de l’équipe de sécurité, etc.), des objectifs mesurables et des contrôles de réussite correspondants. Cette phase d’évaluation permettra de mieux comprendre l’impact de la technologie et de réagir aux problèmes éventuels.
Recommandations pour les développeurs:
- Utiliser les assistants de codage IA de manière responsable et en étant conscient de leurs limites et des problèmes de sécurité. L’utilisation de ces outils doit être réfléchie, en accordant une attention particulière à la protection des informations sensibles.
- Vérifier et reproduire systématiquement le code source généré. Un examen critique doit être effectué, notamment en ce qui concerne les hallucinations et les risques de sécurité. Lire le code à plusieurs par exemple.
- Suivre les directives de l’entreprise concernant l’utilisation des outils, des données et les finalités. Les développeurs doivent comprendre et respecter les règles de l’entreprise.
- Participer à des formations sur l’utilisation efficace des assistants de codage IA (ingénieur prompt). Il est important de se former pour utiliser ces outils de manière optimale et sécurisée.
- Échanger activement avec les collègues sur le sujet pour garantir une utilisation efficace et sécurisée des assistants de codage IA dans l’entreprise. Le partage des meilleures pratiques et l’apprentissage collaboratif sont essentiels.
Principales Failles de Sécurité des Assistants de Codage IA
Les assistants de codage IA, présentent des failles de sécurité importantes qu’il est crucial de comprendre et de maitriser.
1. Manque de Confidentialité des Entrées:
- Fuite d’informations sensibles: Les données saisies par les utilisateurs, y compris le code source, les identifiants de connexion et les clés API, peuvent être divulguées. Ces informations peuvent être utilisées pour entraîner les modèles d’IA ou être accessibles à des tiers non autorisés.
- Stockage et utilisation des données: Certains fournisseurs affirment ne pas stocker systématiquement ni utiliser directement les données des utilisateurs pour améliorer leurs modèles, mais cela dépend souvent du modèle de monétisation choisi par les utilisateurs. Il faut bien lire les clauses d’utilisation du service et se faire conseiller par un juriste.
- Attaques de la chaîne d’approvisionnement: Des attaquants peuvent extraire des informations sensibles via des attaques de la chaîne d’approvisionnement, ciblant les points faibles de la chaîne de développement et de distribution du logiciel.
2. Biais d’Automatisation et Manque de Qualité/Sécurité des Sorties:
- Confiance excessive: Les assistants de codage IA peuvent générer du code qui semble correct et convaincant, mais qui contient en réalité des erreurs, des vulnérabilités de sécurité ou des pratiques obsolètes.
- Qualité du code: Les assistants de codage IA peuvent générer du code incorrect, non sécurisé ou inefficace, en raison de la présence de données d’entraînement obsolètes ou biaisées.
- Hallucinations: Les assistants peuvent générer du code qui fait référence à des packages ou des bibliothèques inexistants (hallucinations de paquets), ce qui peut conduire à des attaques de confusion de paquets.
3. Attaques par code Malveillant:
- Injections indirectes de prompts: Des attaquants peuvent insérer des instructions malveillantes dans des sources externes, comme la documentation des packages, qui peuvent influencer le comportement des modèles d’IA et générer du code malveillant ou divulguer des informations sensibles.
- Empoisonnement des données et des modèles: Les attaquants peuvent compromettre les ensembles de données utilisés pour entraîner les assistants de codage IA, ou les poids des modèles eux-mêmes, afin de générer du code malveillant.
- Extensions malveillantes: Les extensions pour assistants de codage peuvent être compromises et utilisées pour accéder à des ressources internes et mener des attaques.
En conclusion
Les assistants de codage IA présentent de nombreux avantages. Mais aussi se sont des failles de sécurité qui touchent à la confidentialité des données, à la qualité du code généré et à la possibilité d’attaques malveillantes.
Il est essentiel de prendre des mesures de mitigation appropriées pour minimiser ces risques et utiliser ces outils de manière responsable et sécurisée. Former les développeurs, Définir une gouvernance des outil et de leurs usage. Renforcer le contrôle qualité. regarde le code à plusieurs et ne pas faire d’excès de confiance en l’IA.
Source
Rapport conjoint BSI et ANSSI sur l’utilisation des outils de codage en LLM
Les 10 meilleurs outils de codage par IA 2024
The post Bien coder en utilisant l’intelligence artificielle first appeared on XY Magazine.