L’IA peut-elle écrire du code sécurisé ?
Frank Fischer
3 mai 2023
0 minutes de lectureL’IA progresse à une vitesse fulgurante : de nouveaux outils et cas d’usage sont découverts et annoncés chaque semaine, de l’écriture de poèmes à la sécurisation des réseaux.
Les chercheurs ne savent pas encore exactement de quoi les nouveaux modèles d’IA, comme GPT-4, sont capables. C’est pourquoi des personnalités comme Elon Musk et Steve Wozniak, ainsi que des chercheurs en IA, ont appelé à une pause de six mois dans l’entraînement de modèles plus puissants, afin de se consacrer à l’élaboration de protocoles de sécurité et de réglementations.
L’une des principales préoccupations concernant GPT-4 est que les chercheurs ne savent toujours pas exactement ce qu’il peut faire. De nouveaux exploits, jailbreaks et comportements émergents seront découverts au fil du temps. La nature de boîte noire des LLM rend leur prévention difficile. OpenAI le reconnaît dans son livre blanc sur GPT-4 :
OpenAI a mis en place différentes mesures et procédures de sécurité tout au long du développement et du déploiement de GPT-4, réduisant sa capacité à générer du contenu préjudiciable. Toutefois, GPT-4 reste vulnérable aux attaques adverses, aux exploits et aux « jailbreaks », et le contenu préjudiciable n’est pas la seule source de risque. Le réglage fin peut modifier le comportement du modèle, mais les capacités fondamentales du modèle pré-entraîné, comme la possibilité de générer du contenu préjudiciable, restent latentes.
GPT-4 vient tout juste d’être lancé, mais nous disposons déjà de nombreuses données sur son prédécesseur, GPT-3, qui alimentait Chat-GPT. Depuis son lancement, ChatGPT a fait grand bruit, au point que d’autres géants de la tech, dont Google et Adobe, se sont empressés de faire valoir leur présence dans le domaine de l’IA.
De l’optimisation de la productivité à la création de contenu, les possibilités de ChatGPT sont nombreuses. Cependant, l’utilisation de cet outil par les développeurs pour produire du code suscite des inquiétudes liées à la confidentialité, aux risques de cybersécurité et à ses effets potentiels sur la posture de sécurité des applications.

Risques liés à la confidentialité et à la propriété intellectuelle lors de l’utilisation d’outils d’IA pour coder
Depuis le lancement de ChatGPT à la fin de l’année dernière, les consommateurs et les professionnels sont nombreux à s’inquiéter des risques pour la confidentialité liés à l’utilisation de données internes d’entreprise dans l’outil.
Un récent rapport de Cyberhaven a révélé que 3,1 % des travailleurs avaient transmis des informations confidentielles à Chat-GPT, soulignant l’importance de définir des politiques encadrant l’utilisation des outils d’IA en interne. Samsung a récemment dû adresser un avertissement interne à ses employés concernant l’utilisation de l’IA, après que du code source sensible et des notes de réunion ont été saisis dans Chat-GPT. Ces données sont désormais entre les mains d’Open-AI à des fins d’entraînement, et il est difficile de savoir si elles peuvent être récupérées.
L’IA au service de la cybersécurité
Tout n’est pas si sombre pour les professionnels de la sécurité. Malgré les inconvénients de l’IA et les préoccupations liées à la confidentialité, elle offre aussi aux équipes de sécurité davantage d’outils pour faire face aux menaces émergentes.
Les équipes rouges d’OpenAI ont utilisé GPT-4 avec succès pour la découverte et l’exploitation de vulnérabilités, ainsi que pour l’ingénierie sociale, ce qui permettra aux équipes rouges de détecter et de signaler de nouvelles vulnérabilités.
Les entreprises de sécurité continuent de trouver de nouvelles façons d’intégrer l’IA à leurs produits existants. Nous avons récemment annoncé la nouvelle fonctionnalité Auto-Fix, qui exploite une technologie hybride d’IA pour recommander des correctifs de vulnérabilités générés par l’IA et validés par le moteur Snyk Code.
Risques pour la sécurité des applications liés au code généré par l’IA
ChatGPT peut aider à écrire du code, mais ne traite généralement que de petits extraits à la fois. Si les développeurs l’utilisent pour produire une grande quantité de code, ils s’exposent à des risques, car le logiciel ne prend pas en compte les problèmes entre plusieurs fichiers ou à plusieurs niveaux. Bien souvent, l’IA ne comprend même pas ces situations et ne peut pas résoudre les problèmes associés.
La qualité des produits de génération de code dépend entièrement des données utilisées pour les entraîner. Il est presque impossible de produire du code exempt à 100 % de bugs ou de vulnérabilités. Les outils de génération de code incluent donc souvent du code vulnérable dans leurs suggestions. C’est d’autant plus préoccupant lorsqu’on sait, selon une statistique communiquée par Microsoft, que 40 % du code soumis par les développeurs est désormais généré par l’IA et n’est pas modifié. Les équipes AppSec ont de quoi s’inquiéter : les organisations doivent s’assurer que leurs logiciels sont aussi sécurisés que possible.
L’outil de programmation IA Copilot de Github est entraîné sur du code provenant de sources publiques, notamment des dépôts publics sur GitHub. Il formule donc des suggestions proches du code existant. Si les données d’entraînement contiennent du code non sécurisé, les suggestions risquent également d’introduire des vulnérabilités courantes. Un chercheur d’Invicti l’a vérifié en créant une application Python et une application PHP avec Copilot, puis en recherchant les vulnérabilités qu’elles contenaient. Il a relevé des problèmes tels que des failles XSS, des injections SQL et des vulnérabilités de fixation de session.
GitHub est tout à fait conscient des problèmes de sécurité soulevés et a ajouté une fonctionnalité de filtrage des vulnérabilités dans une récente mise à jour :
Les identifiants codés en dur, les injections SQL et les injections de chemin figurent parmi les motifs de code vulnérables les plus courants ciblés par le modèle. Avec GitHub Copilot, cette solution constitue une avancée majeure pour aider les développeurs à écrire du code plus sécurisé.
La mise à jour de GitHub Copilot intègre le filtrage des vulnérabilités de sécurité | InfoWorld
Discussions sur Reddit à propos de la programmation avec ChatGPT
Après avoir étudié Copilot, nous avons voulu déterminer si ChatGPT suivait la même voie.
Pour cela, nous nous sommes tournés vers Reddit. Les professionnels de la tech, notamment les développeurs, consultent régulièrement ce site d’actualités et de discussions pour recueillir l’avis d’autres professionnels de leur domaine.
C’est donc l’endroit idéal pour voir comment les gens utilisent ChatGPT pour programmer : cherchent-ils des conseils ? Avertissent-ils les autres de ne pas l’utiliser à cette fin ? Ou le recommandent-ils comme une ressource fiable ?
Nous avons commencé par analyser un fil Reddit sur la programmation et ChatGPT, qui comptait près de 350 publications. Nous avons ensuite évalué le sentiment des commentaires, en examinant le contenu complet des publications Reddit plutôt que leur seul titre.
Positif
En excluant les publications sans description ou sans rapport avec le sujet, 17,9 % exprimaient un sentiment positif. Un utilisateur a publié une image d’un code sur lequel il travaillait et a précisé : « … J’étais sur le point d’abandonner. J’avais passé la dernière demi-heure à chercher une solution et, en dernier recours, j’ai demandé à GPT. Cinq secondes plus tard, il me donne la réponse parfaite… »
Un autre utilisateur s’est montré particulièrement élogieux : « Quand je rencontre un problème complexe, comme remanier du code ou manipuler des tableaux ou des listes de manière inhabituelle, j’aime pouvoir demander à ChatGPT comment faire. Après 20 ans à me creuser les méninges chaque fois que ces problèmes se présentent, je peux enfin déléguer cette tâche ennuyeuse à une IA ! Quel genre de programmeur cela fait-il de moi ? »
Cependant, parmi les commentaires positifs, un thème revenait souvent : ChatGPT passe à côté des détails :
« … Bien sûr, c’est extrêmement impressionnant. Il a écrit très rapidement du code plausible et relativement exact. Mais il a lamentablement échoué sur tous les petits détails… »
« … J’aime beaucoup ChatGPT (la plupart du temps) pour programmer. Il ne donne pas toujours la bonne réponse, mais ce n’est pas grave. En général, il n’en est pas loin. C’est comme avoir toujours à disposition un développeur junior très intelligent, mais imparfait… »
« … ChatGPT semble savoir où se trouvent les problèmes dans son code, mais ne propose parfois pas la bonne solution pour les corriger… »
Les commentaires positifs, nuancés par les critiques sur les détails qui échappent à ChatGPT, mettent en évidence les risques pour la sécurité. Si une personne inexpérimentée utilise l’outil d’IA pour créer du code, elle ne repérera pas ces erreurs.
Négatif
Dans l’ensemble, nous avons constaté qu’il y avait moins de publications négatives sur l’utilisation de ChatGPT pour programmer que de publications positives. Au total, 10,3 % des descriptions exprimaient un sentiment négatif, de nombreux utilisateurs faisant part de leur frustration face aux inexactitudes.
Un utilisateur a précisé : « … Je trouve que les suggestions de ChatGPT sont particulièrement peu fiables. Les requêtes qu’il génère provoquent erreur après erreur… »
Un autre utilisateur a souligné un problème similaire en cherchant des requêtes précises pour l’aider à programmer : « Quand je demande une modification du code, ChatGPT renvoie le code complet, même si une seule ligne a changé. J’ai essayé des requêtes telles que “Veuillez fournir uniquement le code des lignes modifiées”, mais il n’en tient pas compte et renvoie quand même le code complet. C’est une perte de temps. J’aimerais trouver une requête efficace pour qu’il ne me donne que les lignes de code modifiées. »
Recherche d’aide et de conseils
Nous avons constaté que la majorité des publications Reddit sur ChatGPT et la programmation visaient à obtenir de l’aide et des conseils (44,6 %).
Les demandes vont des utilisateurs qui veulent savoir si le code fourni par ChatGPT présente des lacunes importantes à ceux qui souhaitent traduire du code d’un langage à un autre.
En approfondissant l’analyse, nous avons constaté que ces publications portaient sur des ressources d’apprentissage (51,4 %), des demandes d’entraide entre pairs (14,3 %), des questions sur la qualité (14,3 %), des créations d’utilisateurs (11,4 %), des prédictions (5,7 %) et l’expérience utilisateur (2,9 %).
Ce que nous tirons de ces données
Les personnes qui comprennent vraiment leur code repèrent encore de petits ajustements et des détails à modifier. Dans son état actuel, Chat-GPT est très utile pour les tâches les plus simples, mais ne produira pas toujours un code parfaitement adapté à vos besoins.
Les personnes qui ne comprennent pas leur code sont très impressionnées et enthousiastes, car elles peuvent générer du code qui atteint leurs objectifs sans avoir besoin d’autant de connaissances.
Il est peu probable que ces deux groupes soient conscients des problèmes de sécurité générés par les outils d’IA, en particulier les personnes qui débutent dans le développement. Les développeurs qui utilisent des outils d’IA sans tenir compte de la sécurité risquent donc d’introduire dans leur base de code des vulnérabilités issues des suggestions de l’IA.
C’est d’autant plus important au vu des tendances en matière d’utilisation de l’IA. 42 % des entreprises interrogées par IBM l’année dernière cherchent des moyens d’utiliser l’IA au sein de leur organisation. Il est donc essentiel de prendre en compte la sécurité lorsqu’on utilise des outils d’IA.
Points essentiels pour la sécurité des applications à l’ère de l’IA
Les outils d’IA comme Chat-GPT et Copilot peuvent accélérer le développement, mais ils doivent être associés à des outils de sécurité complets pour garantir la sécurité du code qu’ils génèrent. Les LLM ne peuvent pas remplacer un compilateur ou un interpréteur pendant le développement, pas plus qu’ils ne peuvent remplacer des outils de sécurité spécialisés.
Il convient de mettre en place des politiques internes régissant l’utilisation des outils d’IA. Elles doivent notamment porter sur les points suivants :
Définition claire des cas d’usage autorisés : définissez les cas d’usage acceptables pour les outils d’IA et les types de décisions qui peuvent être prises à l’aide de ces outils.
Sélection et utilisation des données : précisez le type et la qualité des données pouvant être utilisées dans les modèles d’IA, ainsi que les sources de données appropriées.
Confidentialité et sécurité des données : veillez à ce que les données utilisées dans les modèles d’IA soient correctement protégées et à ce que des mesures adaptées soient prises pour préserver leur confidentialité et leur sécurité.
Exigences de conformité : veillez à ce que l’utilisation des outils d’IA respecte toutes les exigences légales, réglementaires et éthiques.
Mises à jour régulières : actualisez régulièrement les politiques au fil du développement de nouveaux outils d’IA et de l’évolution des besoins de l’entreprise.
Cette liste de politiques relatives à l’utilisation de l’IA dans votre organisation n’est pas exhaustive, mais elle peut constituer un point de départ.
Les équipes de sécurité doivent suivre les évolutions de l’IA, qui offrent davantage d’outils aux équipes de sécurité comme aux acteurs malveillants. Les outils d’IA pourraient jouer un rôle clé dans la lutte contre la hausse des exploits, en permettant aux équipes de sécurité de travailler plus efficacement, notamment alors que les entreprises peinent encore à recruter des experts en sécurité. Nous nous attendons à voir de nouveaux cas d’usage des outils d’IA émerger tout au long de l’année. Il est donc essentiel de rester au fait des dernières évolutions. Les équipes de sécurité doivent également suivre l’utilisation de l’IA par les équipes de développement, la part du code ajouté à leur base de code qui est générée par l’IA, et vérifier qu’elles disposent des contrôles de sécurité nécessaires pour la gérer.
La sécurité du code n’est qu’un aspect du développement. Le développement logiciel repose sur une combinaison de personnes, de processus et de technologies. L’IA peut contribuer au volet technologique, mais les autres facteurs restent indispensables. La qualité est essentielle en matière de programmation : le facteur humain restera toujours important.
Les conseils de Snyk pour choisir les meilleures solutions de sécurité des applications
Que votre code soit entièrement écrit par des humains ou généré en grande partie par l’IA, il est essentiel de maîtriser les fondamentaux de la sécurité pour réduire votre surface d’attaque. Évaluer la sécurité de vos applications est indispensable pour protéger votre code contre celles et ceux qui pourraient chercher à l’exploiter. Réaliser une évaluation de la sécurité des applications consiste à tester les applications pour détecter les menaces et à élaborer des stratégies pour s’en défendre. Ce processus permet aux organisations d’évaluer le niveau de sécurité actuel de leurs applications et de repérer comment renforcer la protection de leurs logiciels contre de futures attaques. Les développeurs doivent évaluer régulièrement la sécurité de leurs applications afin de s’assurer que les mesures de sécurité restent à jour et efficaces.
Cinq étapes pour évaluer la sécurité de vos applications :
Identifier les acteurs malveillants potentiels
Déterminer quelles données sensibles protéger
Cartographier la surface d’attaque de l’application
Évaluer les points de friction des processus AppSec actuels
Élaborer une feuille de route de sécurité pour éliminer les points faibles
Les outils d’IA comme ChatGPT peuvent passer à côté de failles et de vulnérabilités, mais Snyk, plateforme de sécurité conçue pour les développeurs, est bien mieux armée pour les détecter. Avec Snyk, vous pouvez détecter et corriger automatiquement les vulnérabilités dans votre code, les dépendances open source, les conteneurs et les environnements cloud.
La plateforme peut même s’intégrer directement aux outils de développement, aux pipelines d’automatisation et aux workflows de programmation pour assurer une sécurité fluide et efficace.
Accélérez le développement sécurisé
Snyk rapproche les développeurs et les équipes de sécurité pour allier rapidité et sécurité à grande échelle.



