IA générativeIA générative
IA générative10 min de lecture

Les dangers cachés de l’IA pour coder : ce que vous devez savoir

Si vous codez avec ChatGPT ou Copilot, vous créez peut-être de graves failles de sécurité !

Audio de la vidéo française

Écouter l’article

Source

Les Dangers de la Programmation avec l’IA Générative

Les dangers cachés de l’IA pour coder : ce que vous devez savoir
Sommaire

À retenir

  • C’est particulièrement utile et important pour les grandes entreprises ou lorsque vous travaillez avec plusieurs développeurs afin de construire une base de code fiable et précieuse.
  • Demandez simplement à n’importe quel étudiant au baccalauréat en génie logiciel ce qu’il pense de Copilot ou de ChatGPT, et vous verrez.
  • Nous pouvons maintenant automatiser les tâches répétitives, analyser le code en temps réel et suggérer des améliorations.

Si vous codez avec ChatGPT ou Copilot, vous créez peut-être de graves failles de sécurité !

Une récente étude de Stanford a conclu que, dans 4 tâches sur 5, les participants assistés par l’IA écrivaient du code moins sécuritaire que ceux qui ne l’utilisaient pas. Cela représente une augmentation de 80 % par rapport aux programmeurs ayant la même expérience, mais sans assistance d’IA générative. Pire encore, ils étaient beaucoup plus susceptibles de surestimer la sécurité de leur code, soit une fausse confiance envers sa sécurité 3,5 fois plus élevée.

Ces failles de sécurité prenaient surtout la forme d’erreurs d’authentification, d’injections SQL, de débordements de mémoire tampon plus fréquents et de vulnérabilités liées aux liens symboliques. Elles pouvaient servir à faire planter le programme, à exécuter du code arbitraire ou à le tromper pour qu’il lise ou écrive à un endroit non prévu.

Voyons comment éviter ces menaces tout en profitant des gains de l’IA générative pour coder. Mais d’abord, permettez-moi d’aborder une question que certains d’entre vous se posent peut-être encore : d’où vient l’IA générative appliquée au code, et ses avantages surpassent-ils vraiment les risques ?

Pourquoi les IA sont-elles bonnes pour coder ? Quels outils existent ? (ChatGPT, GitHub Copilot, autres…)

L’IA appliquée au code est passée de simples outils d’autocomplétion à des outils sophistiqués de génération de code. Au départ, l’IA proposait des suggestions de syntaxe de base, mais les progrès en apprentissage automatique ont mené à des outils comme GitHub Copilot, propulsé par OpenAI Codex. Lancé en 2021, Codex peut générer des fonctions complètes et traduire du langage naturel en code dans plusieurs langages, ce qui augmente considérablement la productivité des développeurs. Nous pouvons maintenant automatiser les tâches répétitives, analyser le code en temps réel et suggérer des améliorations. Les développeurs peuvent ainsi se concentrer sur la résolution de problèmes complexes tout en maintenant une grande qualité de code​ (The GitHub Blog)​​ (GitHub Resources)​​ (OpenAI)​. Et ce n’est que le début grâce aux agents et aux systèmes complexes qui ont pleinement accès à votre code, à Internet et aux fonctions de débogage des IDEs.

Pourquoi utiliser l’IA pour coder ?

Comme vous pouvez le voir, utiliser l’IA pour coder sert surtout à augmenter la productivité en automatisant les tâches répétitives. Elle peut générer automatiquement des fonctions ou des lignes simples que nous savons produire et pouvons demander clairement, mais que nous ne voulons pas réécrire manuellement pour un nouveau projet. Elle code pour nous.

C’est cool, parce que cela démocratise la programmation en combinant la recherche et l’adaptation d’exemples de code. C’est semblable à ce que les développeurs font sur Stack Overflow ou GitHub avec du code open source : ils cherchent des problèmes ou des bogues comparables et copient le code, mais l’IA le fait plus efficacement puisqu’elle adapte déjà le code à votre problème et à vos variables actuelles.

Elle vous aide même à apprendre facilement de nouveaux langages de programmation en traduisant vos idées en lignes de code dans des langages que vous connaissez peu, ce qui vous permet de devenir rapidement compétent. La sécurité, elle, est loin d’être garantie.

Grâce à cela, le code assisté par l’IA transforme complètement les parcours professionnels en développement logiciel et devient une partie intégrante des programmes d’études et de formation professionnelle. Demandez simplement à n’importe quel étudiant au baccalauréat en génie logiciel ce qu’il pense de Copilot ou de ChatGPT, et vous verrez.

Le problème est le suivant : est-ce que cela créera un excès de confiance qui pourrait vous pousser à créer des failles de sécurité ? La réponse est oui, pour une raison simple. Comme avec le code open source, vous ne l’avez pas écrit. Quelqu’un d’autre, ou dans ce cas quelque chose d’autre, l’a fait.

Les risques de coder avec l’IA

De telles failles de sécurité peuvent arriver à n’importe qui, ou à n’importe quoi. Comprendre les risques liés à l’utilisation de l’IA pour coder est la première étape pour les corriger. Vous ne chercherez pas de failles ou de bogues si vous faites entièrement confiance au système, comme les participants trop confiants de l’étude de Stanford. Avant de plonger dans les solutions, jetons donc un coup d’œil rapide aux principaux risques de l’IA générative appliquée au code…

Je tiens à remercier rapidement le commanditaire de cet article, Sema AI, dont nous reparlerons plus tard. Leur aide a été très utile pour cerner les différents risques de l’utilisation de l’IA générative pour coder que nous allons maintenant examiner, ainsi que les solutions pour les prévenir. Je vous en dirai plus sur eux dans quelques minutes.

Le risque le plus évident est que les systèmes d’IA actuels génèrent souvent du code à partir d’information dépassée, puisque le système a peut-être été entraîné sur des données maintenant obsolètes. Ce n’est rien de nouveau : le même problème existait avec le code provenant de Stack Overflow.

Même s’il est souvent assez bon, le code généré par l’IA qui n’est pas vérifié peut manquer de documentation adéquate, employer des noms de variables déroutants et utiliser des algorithmes ou des design patterns sous-optimaux, ce qui peut nuire à la qualité globale du code.

L’utilisation d’outils d’IA générative peut exposer les entreprises à des risques de propriété intellectuelle (PI), notamment concernant les secrets commerciaux et les droits d’auteur. On voit constamment OpenAI et d’autres entreprises faire l’objet de poursuites.

Elle peut aussi nuire à la crédibilité technique de l’entreprise pendant des fusions, des acquisitions ou des investissements, un risque qui ne peut pas être négligé. Dans le cadre de la vérification diligente technique, la présence de code généré par l’IA est examinée comme celle de composants open source, avec des conséquences possibles sur la sécurité de la PI et la viabilité commerciale. Si ce travail est mal fait, toute l’entreprise peut en souffrir.

Un dernier risque, qui vous concernera sûrement si ce n’est pas déjà le cas, est de développer une dépendance excessive à l’IA pour les tâches de programmation. Cela réduira la capacité d’un développeur à coder de manière autonome et à innover avec créativité, ce qui nuira à sa maîtrise globale de la programmation. Bien sûr, nous aurons désormais toujours accès à l’aide de l’IA générative, mais nous devons quand même nous assurer de comprendre et de suivre ce qui se passe. Sinon, qui nous aidera à déboguer le tout ?

Comment atténuer ces risques tout en utilisant l’IA pour coder plus efficacement ?

Les premières étapes pour atténuer tous ces risques sont (1) de continuer à apprendre et à comprendre ce qui se passe en révisant et en comprenant chaque ligne de code, écrite ou générée, et (2) de faire preuve d’une transparence totale sur ce qui est généré ou non lorsque vous partagez le code avec vos collègues et vos gestionnaires. La transparence sera essentielle pour prévenir de nombreux problèmes, surtout ceux liés à la PI ou à la sécurité.

Au-delà de ces premières étapes, il est crucial de combiner le code généré par l’IA à une supervision humaine. Demandez à l’IA d’expliquer ses modifications. Prenez le temps de comprendre pleinement son output afin de vérifier qu’il respecte les objectifs du projet et les normes de sécurité. Testez les fonctionnalités et voyez ce qui brise. Ne présumez pas que tout fonctionnera parce que le code semble bon. Souvent, il ne fonctionne pas, et l’IA ne vous le dira pas. Comme toujours, elle hallucinera, et ce problème ne disparaîtra pas. En passant, je viens de publier un livre avec notre équipe de Towards AI qui enseigne à peu près tout ce qu’il faut savoir pour réduire les hallucinations. En apprendre davantage sur les LLMs et mieux comprendre comment atténuer les hallucinations représente donc une très bonne prochaine étape.

Justement, travaillez sur vos techniques de prompting. C’est simple, mais très utile. Précisez clairement les instructions de la tâche, incluez des déclarations de fonctions détaillées et des fonctions auxiliaires, puis donnez davantage de contexte. Nous avons maintenant des fenêtres de contexte de millions de tokens, alors vous êtes correct de ce côté. La plupart des approches d’IA générative utilisent le RAG, que j’ai présenté dans une vidéo, pour examiner votre code, ce qui simplifie encore plus le processus. Il vous suffit d’utiliser des prompts clairs et précis pour obtenir ce que vous voulez. Vous pouvez aussi jouer avec des paramètres comme la température de l’IA, qui peuvent avoir un effet important sur la sécurité et l’exactitude du code, réduisant les risques et améliorant la fiabilité.

Ensuite, une fois que vous avez fait le maximum pour réduire les hallucinations et les risques de bogues, je pense que la dernière étape consiste à traiter le code généré par l’IA avec la même rigueur que celui écrit par des développeurs humains. Et pas n’importe quel développeur : traitez-le comme lorsque vous révisez la PR d’un collègue aux compétences en programmation discutables. Ajoutez-y un peu d’esprit critique. Demandez-vous si cette ligne est vraiment utile ou si cette fonction est excessive. Lorsque quelque chose vous semble étrange, vous pouvez commencer par demander à l’IA à quoi cela sert, si elle peut simplifier cette partie, ou simplement retourner à la documentation pour confirmer que c’est la bonne fonction à utiliser.

Pour les entreprises, il est aussi très important d’établir des lignes directrices organisationnelles claires sur l’utilisation du code généré par l’IA. Définissez des politiques transparentes qui précisent comment et où l’IA peut, ou même devrait, être utilisée. Assurez-vous que toute l’équipe comprend et suit ces lignes directrices, et que les gens se sentent à l’aise de l’utiliser sans être jugés. Parce qu’ils vont l’utiliser.

Enfin, l’une des choses les plus importantes à faire, comme toujours avec l’IA, est de la surveiller. Surveiller l’utilisation du code généré par l’IA avec un système comme AI Code Monitor de Sema peut fournir de précieux insights sur la quantité et l’impact du code généré par l’IA dans vos projets. De tels outils aident les équipes à suivre les métriques d’utilisation de l’IA, à cerner les problèmes potentiels et à améliorer leur façon d’intégrer l’IA au code. Par exemple, Sema vient de lancer une fonctionnalité qui détecte automatiquement l’IA pendant la révision des Pull Requests.

C’est particulièrement utile et important pour les grandes entreprises ou lorsque vous travaillez avec plusieurs développeurs afin de construire une base de code fiable et précieuse.

En passant, ils offrent un essai gratuit de deux semaines d’AI Code Monitor, et mes spectateurs obtiennent un rabais sur les trois premiers mois s’ils choisissent une licence.

Conclusion

Même si les outils d’IA offrent des avantages importants pour améliorer l’efficacité de la programmation, ils introduisent aussi différents risques, comme une vulnérabilité accrue aux failles de sécurité et une dépendance excessive aux systèmes automatisés.

Des outils comme AI Code Monitor de Sema peuvent aider à cerner et à corriger les vulnérabilités, assurant ainsi une meilleure qualité et une plus grande sécurité du code. Mais rien ne remplace une double vérification et la certitude de comprendre le code généré que vous utilisez.

Merci de m’avoir lu. On se retrouve dans le prochain !

Discussion

Commentaires

Chargement

Aucun compte requis. Votre nom et votre commentaire seront publics, alors n'incluez pas de renseignements privés. Consultez la page de confidentialité pour les détails.

Continuez à apprendre

Vous voulez le côté pratique de l'IA, sans le brouillard marketing ?

Je partage ce qui est utile sur YouTube, Substack et dans mes guides d'ingénierie IA.

FAQ

Pourquoi les outils d’IA pour coder sont-ils utiles ?

Ils peuvent automatiser le travail répétitif, expliquer du code inconnu, proposer des implémentations et aider les développeurs à explorer rapidement différentes options.

Quels risques de sécurité le code généré peut-il introduire ?

Les suggestions peuvent contenir des patterns vulnérables, des secrets exposés, des dépendances non sécuritaires ou des hypothèses erronées sur le système environnant.

Les développeurs peuvent-ils coller du code propriétaire dans n’importe quel chatbot ?

Non. Ils doivent vérifier la façon dont le service traite les données et la politique de leur organisation avant de partager du code source sensible.

Comment les équipes devraient-elles réviser le code généré par l’IA ?

Utilisez la révision humaine, les tests, l’analyse statique, l’analyse des dépendances et les mêmes contrôles de sécurité que pour les autres contributions.

Quel est le rôle le plus sécuritaire pour un assistant d’IA qui code ?

Traitez-le comme un collaborateur rapide dont les suggestions doivent être vérifiées, et non comme une source autonome de code de production fiable.

Pourquoi les assistants d’IA pour coder peuvent-ils créer une fausse confiance ?

Le code généré paraît souvent soigné et plausible même lorsqu’il cache une erreur d’authentification, un risque d’injection ou une hypothèse dangereuse. Cette qualité en surface rend la révision encore plus importante.