L’intelligence artificielle est sans aucun doute le sujet du moment. Avec la démocratisation de ChatGPT, les gens ont pu commencer à explorer toutes les possibilités offertes par l’outil - mais qui dit nouvelles opportunités, dit également nouveaux risques. Depuis quelque mois, des outils de génération de code et des assistants de codage automatisé sur base d’IA ont commencé à émerger, faisant passer le codage dans une nouvelle ère. Aimés ou détestés par les développeurs, ces outils semblent là pour durer – il est donc particulièrement important de savoir comment les utiliser efficacement pour accompagner les développeurs, tout en continuant à fournir le niveau maximum de sécurité pour encadrer les risques liés à ces nouvelles pratiques.

Les assistants de codage automatisés à base d’IA : quésaco ?

Les assistants de codage automatisés sous IA sont des outils qui utilisent la compréhension des langages de programmation afin d’aider les développeurs à créer et à analyser des logiciels. Ils permettent notamment d’écrire du code, de le remanier, de générer de la documentation, et bien plus encore. Un des exemples les plus célèbres est celui de GitHub Copilot, outil d’intelligence artificielle basé sur le cloud développé par GitHub et OpenAI. Il s’agit d’un outil de codage indépendant qui utilise OpenAI Codex pour pouvoir faire des suggestions en temps réel qui sont ensuite intégrées dans l’environnement de développement d’un développeur via un plugin. L’achèvement de code est par exemple le plus simple des cas d’utilisation qui puisse être utilisé par les développeurs.

Assistants à base d’IA : capacités, gestion des risques et biais d’automatisation

La génération actuelle des assistants de codage automatisés est capable de réaliser toute une variété de tâches que les développeurs ont l’habitude d’effectuer quotidiennement. Ils peuvent par exemple compléter des blocs de code, des fonctions, voire même des programmes entiers. Il s’agit principalement de tâches réalisées à petite échelle - il reste donc à voir si ces outils pourront offrir des performances similaires avec un développement à plus grande échelle. Il y a en effet toujours un certain nombre de défis et de complexités qui doivent être résolus avant que des outils automatisés ne puissent générer des résultats intéressants avec un nombre acceptables d’erreurs.

Mais comme avec tout nouvel outil à intégrer, l’utilisation d’assistants de codage automatisés via l’IA comporte un certain nombre de risques. En effet, il n’y a aucune garantie à ce que ces outils puissent produire un contenu complètement sécurisé. Le résultat généré a été créé sur la base d’un code écrit par un humain, et la qualité du code varie donc considérablement. D’autre part, des risques supplémentaires sont susceptibles d’émerger étant donné que le développeur sera potentiellement amené à se fier aux résultats de l’outil plutôt qu’à sa propre expérience. Cela peut signifier qu’il sera moins susceptible de repérer de potentiels problèmes dans un code donné, pouvant potentiellement conduire à des failles de sécurité.

Un autre risque, et non des moindres, est à prendre en compte en matière d’intelligence artificielle. Il s’agit du biais d’automatisation, qui pose un débat aux allures quasiment philosophiques, opposant l’intelligence artificielle aux capacités de réflexions et d’observation des êtres humains. C’est un phénomène qui apparaît quand les humains ont tendance à favoriser les suggestions des systèmes automatisés, même lorsque ces dernières vont à l’encontre de leurs propres observations. Dans le cadre précis d’un assistant de codage fonctionnant grâce à l’intelligence artificielle, ce biais pourrait conduire les développeurs à accepter par défaut les suggestions fournies par l’outil. Ainsi, des vulnérabilités potentielles pourraient donc se glisser dans le code, pouvant déclencher des conséquences.

Comment atténuer les risques liés à cette nouvelle génération d’outils

Bien que les assistants de codage automatisés soient relativement nouveaux, de nombreux outils et processus existent déjà afin de faire face aux nouveaux risques qu’ils peuvent entraîner. Il est important de noter qu’aucun outil ou processus ne pourra complètement annihiler ces risques, mais la mise en œuvre d’une stratégie efficace pourra les réduire tout en laissant les développeurs utiliser leurs outils de prédilection. Il est ainsi préférable de considérer les contributions générées par ces assistants comme celle d’un contributeur tiers. Une examination approfondie du code généré devrait être systématiquement réalisée afin de prévenir les risques potentiels.

En conclusion, les assistants de codage automatisés basés sur l’IA sont une nouvelle génération d’outils que nous commençons à peine à appréhender. C’est forcément un domaine amené à connaitre une expansion rapide au cours des deux prochaines années, car les grandes entreprises technologies rivalisent d’ingéniosité afin de continuer à innover au sein de ce nouveau prisme technologique. Quoi qu’il en soit, ces outils n’offrent pour le moment pas de sécurité par défaut, et continueront à générer du code pouvant présenter des menaces en matière de sécurité. Mais rien n’est encore joué : avec la bonne combinaison d’outils et de processus, il sera tout à fait possible de faire face à ces risques, tout en continuant à faire confiance à l’identification humaine des menaces par les développeurs eux-mêmes. Ainsi, intelligence artificielle et humaine ne sont pas amenées à s’affronter ou à se supplanter, mais bien à se compléter.

Par Nathan Hamiel, Senior Director of Research chez Kudelski Security