Skip to main content

Comment SAS sécurise son code généré par l’IA

Écrit par
Headshot of Gerald Crescione

Gerald Crescione

feature snyk platform

15 avril 2024

0 minutes de lecture

Les assistants de codage reposant sur l’IA générative transforment notre vision du monde technique. Cette innovation a révolutionné la façon de travailler des développeurs, portant leur efficacité et leur productivité vers de nouveaux sommets. Cette accélération pose de nouveaux défis aux équipes de sécurité. Ces modèles d’assistance au codage sont entraînés à partir de code de qualité variable provenant du Web. Même fonctionnel, le code qu’ils génèrent introduit dans nos projets des problèmes de qualité et de sécurité externes. L’IA crée également de nouveaux vecteurs d’attaque susceptibles de causer des dommages considérables au sein des entreprises. Les équipes de sécurité doivent donc relever le défi et veiller à ce que cet outil puissant soit utilisé de manière sûre et responsable.

Face à ces nouvelles réalités, les équipes se demandent dans quels cas utiliser l’IA pour le développement logiciel, quelles précautions prendre pour limiter les résultats incohérents de ces outils et comment continuer à innover avec l’IA tout en se protégeant des risques émergents.

Snyk a récemment organisé un webinaire en direct sur ces sujets, animé par Clinton Herget, avec Brett Smith et Chris Knackstedt. Les intervenants ont évoqué les risques liés au code généré par l’IA pour les entreprises en 2024 et les mesures qu’elles prennent pour protéger leurs applications contre ces nouvelles menaces.

Les risques du code généré par l’IA

Smith et Knackstedt s’accordent à dire que l’IA générative a incontestablement révolutionné le développement logiciel, en faisant office de binôme de programmation pour les développeurs du monde entier. En proposant un point de départ pour écrire du code à partir de zéro, elle simplifie considérablement le processus de développement. Selon eux, dans un avenir proche, les développeurs pourront tirer parti de l’IA générative pour accélérer leur travail et gagner en efficacité globale.

Knackstedt se réjouit également des effets positifs des outils d’IA, qui proposent des solutions adaptées à des problèmes spécifiques. Il a déclaré : « Je suis extrêmement impressionné par les progrès réalisés par l’IA générative en seulement un an, en particulier par les nouveaux cas d’utilisation auxquels les gens réfléchissent pour certains de ces outils. »

Utilisée à bon escient, l’IA peut accélérer le travail. En revanche, une mauvaise utilisation peut entraîner de graves problèmes de sécurité. Les outils d’IA compliquent considérablement la tâche des équipes de sécurité, qui doivent suivre le rythme des avancées technologiques. Beaucoup tentent encore d’assimiler la dernière vague de transformation numérique et de se familiariser avec le DevOps, le cloud, la CI/CD et bien d’autres technologies et processus. Ces transformations numériques en cours sont accélérées par l’essor de l’IA générative. Il est donc plus important que jamais que les équipes de sécurité s’adaptent.

En plus d’accélérer la transformation numérique déjà en cours, le code généré par l’IA peut exposer les entreprises à des menaces de sécurité, et ce pour deux raisons principales.

Le code généré par l’IA n’est pas intrinsèquement sécurisé ni de qualité

Les outils d’IA générative s’appuient sur des données d’entraînement de qualité variable provenant d’Internet : du code bien écrit par des développeurs chevronnés, du code sujet aux erreurs écrit par des débutants, et même des exemples volontairement non fonctionnels publiés sur des forums comme Stack Overflow. Comme l’IA générative absorbe une telle variété de code, la qualité des résultats est comparable à celle du code produit par un développeur débutant.

Les intervenants ont également souligné l’importance de comprendre que les outils d’IA générative actuels ne détectent pas les vulnérabilités par défaut. Herget a évoqué une étude de Snyk qui le démontre. Notre équipe a créé une classe Java contenant plusieurs méthodes et a nommé l’une d’elles « SQL injection ». Nous avons ensuite demandé à plusieurs assistants de codage IA si le code comportait une vulnérabilité d’injection SQL : ils ont tous répondu « oui ». Après avoir simplement modifié le nom de la classe, sans changer quoi que ce soit à la fonctionnalité du code, les mêmes assistants ont répondu « non ». Cette expérience a prouvé que l’IA ne comprend toujours pas la portée symbolique de certains termes dans le code.

Les modèles d’IA peuvent être exploités par des menaces externes

En plus d’amplifier les problèmes existants, l’IA introduit également un risque de nouveaux vecteurs d’attaque. Les acteurs malveillants peuvent exploiter l’IA générative au moyen d’injections de code, de l’empoisonnement des données, d’injections de prompts et du détournement de modèles. Ces attaques peuvent inciter le modèle à effectuer des actions malveillantes (par exemple, écrire volontairement du code non sécurisé) ou permettre aux attaquants de voler des données d’entraînement sensibles.

Les hallucinations, lorsque des outils d’IA génèrent des références, des bibliothèques de code ou des fonctions inexistantes, constituent un autre problème de sécurité. Les acteurs malveillants peuvent exploiter ces hallucinations à l’aide de techniques comme le squattage de bibliothèques. Par exemple, si l’IA invente une bibliothèque de code inexistante, un attaquant peut créer une véritable bibliothèque portant ce nom et y intégrer du code malveillant. Le code généré par l’IA qui fait référence à cette bibliothèque appellera alors ce code malveillant dans l’application.

Comment utiliser le code généré par l’IA en toute sécurité

Malgré les risques de sécurité qu’elle pose, l’IA générative reste essentielle pour beaucoup de développeurs et n’est pas près de disparaître. Elle aide précieusement les équipes de développement à surmonter le syndrome de la page blanche et joue le rôle d’assistant de programmation débutant. Les développeurs peuvent ainsi coder plus vite que jamais.

Mais cette vitesse sans précédent a des conséquences directes pour les équipes de sécurité, qui doivent sécuriser davantage de code en moins de temps. Elles doivent donc mettre en œuvre des stratégies pour mieux sécuriser le code généré par l’IA sans freiner l’innovation technique. Voici quelques conseils pour répondre aux cycles de développement actuels, rapides et soutenus par l’IA :

Faire de la formation des développeurs une priorité

Tout d’abord, les équipes de développement doivent comprendre ce que chaque outil d’IA peut faire, et ce qu’il ne peut pas faire. Smith a déclaré : « Ce n’est pas une solution miracle qui va résoudre tous vos problèmes. Ce n’est pas un programme pour développeur senior. C’est un programme pour assistant débutant capable de produire 170 lignes… Vos développeurs doivent comprendre qu’ils n’écrivent pas du code meilleur ou plus sécurisé qu’avant. Ils ont simplement un outil de saisie semi-automatique très intelligent. »

Les entreprises doivent également apprendre aux développeurs à protéger la propriété intellectuelle et la confidentialité lorsqu’ils saisissent des prompts liés au code dans un outil d’IA. Les équipes de développement doivent comprendre que l’IA générative utilise les prompts comme données d’entraînement et que ces données pourraient mettre des ressources sensibles en danger si elles servent à répondre aux prompts d’autres utilisateurs.

L’analyse comportementale joue un rôle essentiel dans l’évaluation de l’efficacité de ces initiatives de formation. Knackstedt a déclaré : « Nous devrons adopter des processus et des principes qui s’appuient davantage sur l’analyse comportementale : pas seulement celle du code, mais aussi celle des personnes qui le développent et de celles qui utilisent les solutions à partir desquelles il est créé… Nous pourrons ainsi dresser un tableau plus complet de l’usage prévu de l’IA et de son utilisation réelle. »

Renforcer les mesures de sécurité éprouvées

Intégrer des tests de sécurité au cycle de développement est depuis longtemps important dans une démarche DevSecOps. Mais, avec l’accélération considérable de l’injection de code due à l’IA, il est plus crucial que jamais que les entreprises envisagent d’intégrer des tests de sécurité à leurs pipelines de code.

Smith a expliqué que son équipe utilise l’analyse statique du code pour faire face au volume sans précédent de problèmes de code engendrés par le développement assisté par l’IA. Il a déclaré : « Avec l’essor de l’IA générative, de plus en plus de code vulnérable tente d’entrer dans notre pipeline à une vitesse inédite. Chaque fois que vous envoyez du code, il est analysé par Snyk, et vous ne pouvez pas le fusionner tant que les contrôles ne sont pas réussis. Intégrer Snyk Code (SAST) à nos contrôles automatisés nous permet de lutter contre les aspects néfastes de l’IA générative. Si vous ne pouvez pas forcément distinguer ce qui est généré par une machine de ce qui est écrit par un humain, testez tout. Testez plus souvent et utilisez des outils conçus pour suivre le rythme du DevSecOps moderne, sans ralentir qui que ce soit. »

Mettre en place des tests à plusieurs niveaux

Les équipes devraient également envisager de vérifier le code généré par l’IA en le confrontant à la bonne combinaison d’outils automatisés et de vérifications manuelles. Selon Knackstedt : « Le codage génératif doit s’accompagner de garde-fous et d’une réflexion approfondie. Il faut fondamentalement qu’un humain intervienne dans le processus, sans accepter aveuglément ce que produisent ces solutions d’IA générative, et qu’on examine soigneusement le code. »

Smith a expliqué comment SAS effectue ces vérifications approfondies, en combinant des contrôles automatisés du code avec Snyk SAST et deux étapes de validation humaine. Il a déclaré : « Nous avons défini dans GitHub des règles qui exigent que deux personnes examinent le code avant sa fusion — dont le propriétaire du code — avant de pouvoir le fusionner… De mon point de vue, un humain doit l’examiner avant son intégration, et le code doit réussir les contrôles automatisés. »

Miser sur la cohérence

Pour Smith, sécuriser les processus d’IA exige une sécurité cohérente à tous les niveaux du développement, du code d’infrastructure au code source et à la documentation. Il a déclaré : « Nous essayons de tout traiter de la même manière… Si nous accordons la même importance à chaque élément, nous appliquons le même niveau de diligence à leurs méthodes de sécurisation. »

Knackstedt a également insisté sur l’importance de la cohérence, expliquant qu’il est essentiel « de standardiser les outils utilisés pour créer le code et de veiller à ce qu’ils soient protégés au sein de l’entreprise. Il faut comprendre quelles données servent à affiner les modèles ou à leur apporter un contexte supplémentaire dans votre entreprise. »

La suite pour le code généré par l’IA

À mesure que les équipes de développement adoptent l’IA générative, quelques tendances émergentes en matière de sécurité devraient se dessiner. Nous devrions notamment voir davantage de composants d’IA intégrés aux outils de sécurité pour traiter les problèmes tout au long du SDLC. Knackstedt explique qu’il s’agit de « combattre le feu par le feu et de trouver des occasions d’intégrer l’IA et l’IA générative à certaines mesures de protection. Ainsi, vous pouvez comprendre les problèmes au même rythme et appliquer le même type de raisonnement. »

Par ailleurs, votre équipe de développement n’est pas la seule à utiliser l’IA générative pour écrire du code. Il y a de fortes chances que vos fournisseurs tiers s’intéressent eux aussi à cette technologie. Smith a expliqué : « À mesure que nous adoptons des fournisseurs en ligne, nous utilisons de plus en plus de logiciels en tant que service dans notre SDLC… Comment savoir s’ils utilisent l’IA de manière responsable ? » Les bonnes pratiques de sécurité de la chaîne d’approvisionnement logicielle sont plus importantes que jamais, compte tenu des vulnérabilités potentielles liées à l’utilisation de fournisseurs SaaS.

Enfin, la réussite de la sécurisation du code généré par l’IA reposera sur un modèle de responsabilité partagée, comme celui qui existe entre l’utilisateur et le fournisseur pour la sécurité du cloud. Knackstedt a déclaré : « L’utilisation généralisée de l’intelligence artificielle dans toute une entreprise exige une meilleure intégration de certaines pratiques de gestion des risques, afin de garantir une approche globale et responsable du déploiement, de la gestion, de la surveillance et du maintien de la visibilité sur l’intelligence artificielle. »

Cette discussion avec Clinton Herget, Brett Smith et Chris Knackstedt ne fait qu’effleurer l’impact de l’IA générative sur le développement de code aujourd’hui et les moyens d’utiliser cette technologie émergente en toute sécurité. Pour en savoir plus sur la sécurisation du code généré par l’IA, consultez notre rapport 2023 sur le code généré par l’IA, la sécurité et la confiance dans le développement moderne.

Commencez à sécuriser le code généré par l’IA

Créez gratuitement votre compte Snyk pour commencer à sécuriser le code généré par l’IA en quelques minutes. Vous pouvez aussi réserver une démonstration avec un expert pour découvrir comment Snyk répond à vos besoins en sécurité des développeurs.

Publié dans: