LLMs : Une approche (im) parfaitement humaine du codage sécurisé ?

Une version de cet article a été publiée dans Lecture sombre. Il a été mis à jour et diffusé ici.
Dès les premiers remous suscités par les derniers outils d'IA révolutionnaires, les développeurs comme les curieux du codage les ont utilisés pour générer du code en appuyant simplement sur un bouton. Les experts en sécurité ont rapidement fait remarquer que, dans de nombreux cas, le code produit était de mauvaise qualité et vulnérable, et entre les mains de personnes peu sensibilisées à la sécurité, pourrait provoquer une avalanche d'applications non sécurisées et de développements Web qui toucheraient des consommateurs peu méfiants.
Et puis, il y a ceux qui ont suffisamment de connaissances en matière de sécurité pour les utiliser à des fins malveillantes. Pour chaque exploit époustouflant en matière d'IA, il semble qu'il existe un contre-coup de la même technologie utilisée pour à des fins néfastes. Hameçonnage, fausses vidéos d'escroquerie, création de logiciels malveillants, manigances généralisées pour les enfants... ces activités perturbatrices sont réalisables bien plus rapidement, avec moins de barrières à l'entrée.
Il existe certainement de nombreux appâts à cliquer qui présentent cet outillage comme révolutionnaire, ou du moins qu'il se classe en tête lorsqu'il est associé à des compétences humaines « moyennes ». Bien qu'il semble inévitable que la technologie d'IA de type LLM modifie la façon dont nous abordons de nombreux aspects du travail, et pas seulement le développement de logiciels, nous devons prendre du recul et envisager les risques au-delà des gros titres.
Et en tant que compagnon de codage, ses défauts sont peut-être son attribut le plus « humain ».
Des modèles de codage médiocres dominent ses solutions de prédilection
ChatGPT étant formé sur des décennies de code et de bases de connaissances existantes, il n'est pas surprenant que, malgré toutes ses merveilles et son mystère, il présente également les mêmes pièges courants auxquels les utilisateurs sont confrontés lorsqu'ils naviguent dans le code. Les modèles de codage médiocres sont la solution idéale, et il faut tout de même un pilote sensible à la sécurité pour générer des exemples de codage sécurisés en posant les bonnes questions et en fournissant la bonne ingénierie rapide.
Même dans ce cas, rien ne garantit que les extraits de code fournis soient exacts et fonctionnels du point de vue de la sécurité ; la technologie est sujette à des hallucinations, même création de bibliothèques inexistantes lorsqu'on lui demande d'effectuer certaines opérations JSON spécifiques, comme l'a découvert Mike Shema. Cela pourrait conduire à un « squattage par hallucination » de la part des acteurs de la menace, qui seraient bien trop heureux de lancer un malware déguisé en bibliothèque fabriquée recommandée en toute confiance par ChatGPT.
En fin de compte, nous devons faire face à la réalité : en général, nous ne nous attendions pas à ce que les développeurs soient suffisamment conscients de la sécurité et que nous ne les avions pas non plus préparés de manière adéquate à écrire du code sécurisé par défaut. Cela se reflétera dans l'énorme quantité de données de formation introduites dans ChatGPT, et nous pouvons nous attendre à des résultats de sécurité similaires, du moins dans un premier temps. Les développeurs devraient être en mesure d'identifier les bogues de sécurité et de les corriger eux-mêmes ou de concevoir de meilleures instructions pour un résultat plus fiable.
Le premier étude utilisateur à grande échelle l'examen de la façon dont les utilisateurs interagissent avec un assistant de codage basé sur l'IA pour résoudre diverses fonctions liées à la sécurité, mené par des chercheurs de l'université de Stanford, confirme cette idée, avec une observation concluant :
»Nous avons observé que les participants qui avaient accès à l'assistant d'IA étaient plus susceptibles d'introduire des failles de sécurité pour la majorité des tâches de programmation, mais également plus susceptibles de qualifier leurs réponses non sécurisées de sécurisées par rapport aux membres de notre groupe témoin.. »
Cela témoigne d'un niveau de confiance par défaut dans les résultats des outils de codage d'IA, qui produisent du code toujours intrinsèquement sécurisé, alors qu'en fait ce n'est pas le cas.
Face à cela et aux inévitables menaces véhiculées par l'IA qui vont imprégner notre avenir, les développeurs doivent plus que jamais perfectionner leurs compétences en matière de sécurité et placer la barre plus haut en matière de qualité du code, quelle que soit son origine.
La route qui mène à une catastrophe en matière de violation de données est pavée de bonnes intentions
Il n'est pas surprenant que les compagnons de programmation basés sur l'IA soient populaires, d'autant plus que les développeurs sont confrontés à des responsabilités croissantes, à des délais plus serrés et aux ambitions d'innovation d'une entreprise qui reposent sur leurs épaules. Cependant, même avec les meilleures intentions, un manque de sensibilisation à la sécurité exploitable lors de l'utilisation de l'IA pour le codage entraînera inévitablement des problèmes de sécurité flagrants. Tous les développeurs dotés d'outils AI/ML généreront davantage de code, et le niveau de risque de sécurité dépendra de leur niveau de compétence. Les organisations doivent être parfaitement conscientes du fait que des personnes non formées généreront certainement du code plus rapidement, mais qu'elles augmenteront également la vitesse de la dette de sécurité technique.
Même notre test préliminaire (avril 2023) avec ChatGPT a révélé qu'il générerait des erreurs très basiques qui pourraient avoir des conséquences dévastatrices. Lorsque nous lui avons demandé de créer une routine de connexion en PHP à l'aide d'une base de données MySQL, du code fonctionnel a été généré rapidement. Cependant, par défaut, il stockait les mots de passe en texte clair dans une base de données, stockait les informations d'identification de connexion à la base de données sous forme de code et utilisait un modèle de codage susceptible d'entraîner une injection SQL (bien qu'il ait effectué un certain niveau de filtrage sur les paramètres d'entrée et généré des erreurs de base de données). Toutes les erreurs commises par les débutants, peu importe la mesure :

Des instructions supplémentaires ont permis de corriger les erreurs, mais il faut des connaissances approfondies en matière de sécurité pour corriger la situation. L'utilisation généralisée et incontrôlée de ces outils n'est rien de mieux que de laisser de jeunes développeurs participer à vos projets. Si ce code permet de créer une infrastructure sensible ou de traiter des données personnelles, nous avons affaire à une bombe à retardement.
Bien entendu, tout comme les développeurs juniors améliorent sans aucun doute leurs compétences au fil du temps, nous nous attendons à ce que les capacités d'IA/ML s'améliorent. Dans un an, il ne commettra peut-être pas d'erreurs de sécurité aussi évidentes et simples. Cependant, cela aura pour effet d'augmenter considérablement les compétences en matière de sécurité requises pour détecter les erreurs de sécurité les plus graves, cachées et non négligeables qu'elle risque toujours de produire.
Nous sommes encore mal préparés pour détecter et corriger les failles de sécurité, et l'IA creuse l'écart
Bien que l'on parle beaucoup de « virage vers la gauche » depuis de nombreuses années, il n'en demeure pas moins que, pour la plupart des organisations, il existe un manque important de connaissances pratiques en matière de sécurité au sein de la cohorte de développement, et nous devons redoubler d'efforts pour fournir les outils et la formation appropriés pour les aider sur la bonne voie.
Dans l'état actuel des choses, nous ne sommes pas préparés aux bugs de sécurité auxquels nous sommes habitués, sans parler des nouveaux problèmes liés à l'IA, tels que l'injection rapide et le squatting par hallucination, qui représentent des vecteurs d'attaque entièrement nouveaux qui sont prêts à décoller comme une traînée de poudre. Les outils de codage basés sur l'IA représentent l'avenir de l'arsenal de codage des développeurs, mais la formation nécessaire pour utiliser ces armes de productivité en toute sécurité doit être dispensée dès maintenant.
.png)
Govern AI-driven development before it ships
Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.
Explore more blogs
Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

One Culture of Security: How Sage built their security champions program with agile secure code learning
Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.
.webp)
Why most CISOs are navigating AI adoption blindfolded (and how they can remove it)
Today, Secure Code Warrior issued an all-new white paper covering a prescriptive, directional AI adoption model that security leaders can use to identify their adoption stage and make real progress in bringing the AI security risks within their organization under control.
Secure AI-driven development before it ships
See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.


