Skip to main content

La fonctionnalité de correction automatique de Snyk Code, Snyk Agent Fix, vient de s’améliorer

feature snyk apprisk globe

23 avril 2024

0 minutes de lecture

Snyk Agent Fix est une fonctionnalité basée sur l’IA qui propose des corrections en un clic, vérifiées du point de vue de la sécurité, dans Snyk Code, un outil SAST en temps réel conçu pour les développeurs. Parmi les premières fonctionnalités du marché à proposer des corrections de sécurité semi-automatisées directement dans l’IDE, la bêta publique de Snyk Agent Fix a été annoncée lors de Snyk Launch en avril 2023. Elle apportait des corrections aux problèmes de sécurité détectés par Snyk Code, en temps réel, directement dans le code et dans l’IDE. Depuis, nous nous sommes attachés à améliorer cette fonctionnalité puissante et révolutionnaire pour les utilisateurs de Snyk Code. Aujourd’hui, forts de près de 12 mois de retours d’utilisateurs de la bêta publique et d’améliorations itératives, nous sommes heureux d’annoncer de nouvelles améliorations du modèle qui alimente notre fonctionnalité de correction automatique, éprouvée sur le terrain. Snyk Agent Fix propose désormais les améliorations suivantes :

  • 8 langages pris en charge

  • Une technologie révolutionnaire, en instance de brevet, qui améliore considérablement la précision, non seulement de Snyk Agent Fix, mais aussi d’autres modèles sur lesquels nous l’avons testée, comme GPT-4, GPT-3.5 et Mixtral.

  • Une IA multimodale (notre célèbre approche hybride de l’IA) pour maximiser la robustesse grâce à la diversité des modèles.

Répondre au besoin de corrections automatiques fluides avec Snyk Agent Fix

Snyk Code analyse le code source sur lequel les développeurs travaillent à chaque étape du cycle de développement logiciel (SDLC), de l’IDE au SCM, en passant par les pipelines CI/CD. L’outil offre une précision et une rapidité inégalées, ainsi qu’une remédiation proactive pour identifier les problèmes de sécurité dans le domaine du SAST.

Selon les politiques de sécurité applicables, une fois les nouveaux problèmes de sécurité détectés, les développeurs cherchent à les corriger. Cependant, la correction des problèmes de sécurité n’est pas toujours simple. Il faut comprendre le contexte dans lequel le code s’inscrit dans l’ensemble de la base de code, connaître la nature du problème de sécurité et déterminer la meilleure façon de le corriger.

Snyk Code fournit aux développeurs des explications détaillées sur les problèmes de sécurité détectés et des exemples de corrections tirés de dépôts réels sous licence permissive, dont ils peuvent s’inspirer pour résoudre leurs problèmes. Avant Snyk Agent Fix, Snyk Code avait déjà permis de réduire considérablement la charge cognitive des développeurs. Ceux-ci devaient toutefois encore trouver eux-mêmes comment corriger les problèmes de sécurité.

C’est pourquoi nous avons voulu faciliter encore davantage la correction des vulnérabilités pour les développeurs avec Snyk Agent Fix, qui s’appuie sur la partie LLM de notre moteur DeepCode AI (qui combine l’IA symbolique et le machine learning, notamment notre LLM). Snyk Agent Fix a aidé les développeurs à sécuriser leurs projets en toute fluidité, en leur permettant de corriger automatiquement les problèmes de sécurité, d’abord dans les projets JavaScript et TypeScript. Toute personne utilisant Snyk Code dans Visual Studio Code ou Eclipse pouvait sélectionner ⚡Fix this issue à l’apparition de nouveaux problèmes de sécurité.

Les enseignements tirés de notre bêta précurseure

Lorsque Snyk a lancé Snyk Agent Fix en accès anticipé, de nombreuses entreprises de tailles et de secteurs variés l’ont adopté. Cette fonctionnalité offrait aux équipes une façon inédite de corriger les problèmes de sécurité : en traitant les problèmes directement dans l’IDE, avant que ces vulnérabilités ne soient mises en production, et en automatisant leur remédiation.

Bien que nous ayons été parmi les premiers à proposer une fonctionnalité de correction automatique du code basée sur l’IA, toute fonctionnalité bêta est, par nature, encore en phase d’amélioration. Nous souhaitions donc continuer à perfectionner Snyk Agent Fix. Nous voulions notamment améliorer la cohérence et la fiabilité des corrections, affiner nos règles de langage, prendre en charge davantage de langages, élargir l’accessibilité (à l’époque, la fonctionnalité était uniquement disponible dans l’IDE) et améliorer l’expérience utilisateur.

Il y avait beaucoup de points à traiter. En nous appuyant étroitement sur les retours des utilisateurs, nous avons décidé de commencer par les améliorations suivantes, qui auraient le plus d’impact :

  • Améliorer la qualité des résultats

  • Prendre en charge davantage de langages.

La qualité et la sécurité des corrections sont essentielles pour une fonctionnalité comme Snyk Agent Fix. Nous avons donc redoublé d’efforts pour améliorer la profondeur et l’étendue des corrections proposées.

Créer une fonctionnalité de correction automatique fiable à l’ère de l’IA

Un nouveau modèle LLM pour gagner en rapidité et en précision

Lors de son lancement, Snyk Agent Fix utilisait une version du modèle T5 de Google, que les meilleurs experts en sécurité de Snyk avaient longuement affinée. Pourquoi avoir choisi ce modèle ? Pour remettre les choses en perspective, nous avions deux ans d’avance sur le secteur et travaillions sur Snyk Agent Fix depuis deux ans avant son lancement, à une époque où les LLM n’en étaient qu’à leurs débuts. Parmi les options alors disponibles, le modèle T5 nous semblait donc le mieux adapté à nos besoins. Nous l’avons affiné à partir de projets open source sous licence permissive dans lesquels des problèmes de sécurité avaient été corrigés, afin de lui apprendre comment remédier à ces problèmes.

Avant de proposer une correction de sécurité, le moteur d’IA hybride de Snyk, DeepCode AI, s’appuyait sur ses règles strictes et ses algorithmes d’IA symbolique fondés sur des connaissances pour réanalyser la correction du code en tenant compte de nos prédictions de sécurité. Cette étape réduit le risque d’hallucinations et de corrections inadaptées, auxquels tous les LLM, y compris Snyk Agent Fix, sont exposés. Nous continuons à vérifier le code proposé par Snyk Agent Fix, même après être passés à un modèle LLM différent et plus avancé pour Snyk Agent Fix (voir ci-dessous).

Au vu de ce que nous avions appris lors des premières étapes du développement de Snyk Agent Fix, nous avons décidé d’adopter des modèles LLM pour générer des corrections plus précises des problèmes de sécurité. Nous avons testé tous les LLM potentiellement intéressants et viables afin de déterminer lequel produisait les meilleurs résultats avec nos méthodes d’affinage. Compte tenu de sa précision et de sa rapidité, nous avons choisi StarCoder comme modèle de base et l’avons affiné à l’aide de nos jeux de données d’entraînement.

Les résultats se sont considérablement améliorés :

Des graphiques à barres comparent les résultats de juin et novembre 2023 pour AST, Interprocedural, Local, SecurityFlow et SecurityLocal, avec pass@1, pass@3 et pass@5.

Snyk Agent Fix peut corriger automatiquement différents types de problèmes de sécurité et de code. Comme indiqué dans les lignes de l’image ci-dessus, nous avons classé ces problèmes en 5 catégories — AST, interprocédural, local, SecurityLocal, et SecurityFlow* — pour résumer les résultats de l’évaluation. Pour chaque problème rencontré, Snyk Agent Fix génère 5 corrections possibles. Les 3 colonnes de l’image ci-dessus — pass@1, pass@3 et pass@5 — indiquent le pourcentage de résultats comprenant une correction exacte parmi respectivement 1, 3 et 5 propositions.

Pour garantir la précision de Snyk Agent Fix, nous vérifions toutes les prédictions à l’aide de règles et d’une base de connaissances créées par nos équipes (notre IA symbolique). Une prédiction réussit les vérifications si elle produit du code syntaxiquement correct et analysable, et corrige le problème de sécurité concerné sans en introduire de nouveaux. C’est un facteur de différenciation propre à Snyk : nous utilisons notre propre analyseur de code et notre base de connaissances, tous deux alimentés par l’IA symbolique (découvrez ici pourquoi c’est important), pour filtrer les corrections incorrectes et les hallucinations générées par le LLM qui alimente Snyk Agent Fix, avant que ces erreurs ne parviennent à nos clients.

Snyk Agent Fix est ainsi plus robuste et plus sûr que les autres solutions de correction automatique par analyse de code qui s’appuient uniquement sur les LLM pour corriger les problèmes, voire pour les vérifier et les corriger. Vous trouverez des informations détaillées sur nos évaluations et les catégories de problèmes dans l’article de recherche consacré à la technologie CodeReduce de Snyk (voir ci-dessous).

Une technologie révolutionnaire, en instance de brevet, qui améliore considérablement la précision, même de GPT-4

Nous avons également travaillé à améliorer la qualité des résultats en optimisant la façon dont les données de l’utilisateur (c’est-à-dire le code concerné) étaient intégrées à l’invite envoyée au LLM qui alimente Snyk Agent Fix. Cette technologie propriétaire de Snyk, appelée « CodeReduce », fait désormais l’objet d’une demande de brevet. CodeReduce s’appuie sur l’analyse de programme pour concentrer le mécanisme d’attention du LLM uniquement sur les portions de code nécessaires à la correction concernée. Le LLM peut ainsi se focaliser sur un extrait de code plus court, qui contient le défaut signalé ainsi que le contexte de code nécessaire.

Autrement dit, Snyk élimine une nouvelle fois le bruit et simplifie le processus pour obtenir des résultats efficaces et à fort impact. CodeReduce réduit ainsi considérablement la quantité de code que Snyk Agent Fix doit traiter, ce qui contribue à améliorer la qualité et la fiabilité des corrections générées par tous les modèles testés (notamment GPT-3.5, GPT-4 et Mixtral), tout en réduisant le risque d’hallucinations. En fait, nous avons amélioré la précision de GPT-4 jusqu’à un impressionnant 20 % (voir l’image ci-dessous). Nous vous expliquerons bientôt plus en détail le fonctionnement de CodeReduce. Restez à l’écoute !

Graphique à barres comparant DeepCode AI Fix à CodeReduce et GPT-4 selon les métriques pass@5 et exact@5, pour cinq contextes de code.
À l’exception de pass@5 pour AST et de exact@5 pour Local, Snyk affiche de meilleurs résultats sur tous les indicateurs, avec un écart pouvant atteindre 20 %.

Prise en charge de 8 langages et améliorations générales des règles et des données

Outre le changement du modèle de base et l’amélioration de la capacité de Snyk Agent Fix à cibler le code pertinent pour obtenir de meilleurs résultats, nous voulions également élargir et approfondir les corrections proposées. Pour cela, nous avons collaboré avec notre équipe d’annotation afin d’améliorer la qualité de notre base de données de corrections et de vérifier l’exactitude des résultats générés par Snyk Agent Fix, ce qui nous permet d’améliorer notre modèle en continu.

Grâce à notre approche multidimensionnelle pour améliorer la fonctionnalité de correction automatique de Snyk Code, nous sommes passés de plusieurs centaines de règles, prises en charge uniquement pour JavaScript/TypeScript (que nous comptons comme un seul langage), à un nombre bien plus élevé de règles couvrant 7 langages supplémentaires, avec une fiabilité accrue pour chacune d’elles. Nous prenons désormais en charge les menaces du Top 10 de l’OWASP dans les langages suivants :

  • JavaScript/TypeScript

  • Java

  • Python

  • C/C++

  • C# (prise en charge limitée)

  • Go (prise en charge limitée)

  • APEX (prise en charge limitée)

Nous avons également amélioré la collecte et le traitement des données. Ces améliorations ont considérablement renforcé la fiabilité de la précision de notre LLM, qui atteint désormais 80 % en moyenne. Notre IA symbolique peut ainsi vérifier plus facilement la sécurité des corrections suggérées par le LLM, comme expliqué ci-dessus. Qu’est-ce que cela signifie pour les utilisateurs ? Ils peuvent s’attendre à ce que les suggestions de DeepCode AI Fix résolvent les vulnérabilités concernées dans 100 % des cas, et plus rapidement qu’auparavant.

Et maintenant ?

Malgré les progrès considérables réalisés pour créer une fonctionnalité de correction automatique fiable, nous comptons continuer à améliorer, à optimiser et à faire évoluer le LLM de Snyk Agent Fix. Nous allons également travailler sur l’expérience utilisateur dans l’IDE et au-delà. Qu’est-ce que cela signifie ?

Des améliorations du modèle pour des corrections encore plus rapides et efficaces

Les LLM évoluent rapidement et de nouveaux modèles, ou des versions améliorées, sont constamment proposés. StarCoder 2, une nouvelle version de StarCoder, est désormais disponible et nous allons la tester. Si nos tests révèlent qu’il est possible d’améliorer davantage les résultats, nous passerons probablement à StarCoder 2. En plus du LLM lui-même, nous investissons également dans les domaines suivants :

  • Proposer des corrections plus rapides en optimisant notre modèle neuronal et notre serveur, afin de ramener le délai de génération d’une correction de 12 secondes environ en moyenne à moins de 6 secondes.

  • Étendre la couverture des règles et améliorer la qualité des corrections pour nos principaux langages : JavaScript/TypeScript, Java, Python, C/C++ et C#.

Une expérience IDE simplifiée pour corriger les problèmes sans effort

Désormais, les développeurs qui utilisent Snyk Agent Fix peuvent consulter plus facilement les corrections proposées, choisir parmi différentes suggestions celle qui correspond le mieux à leur contexte et prévisualiser les modifications potentielles de leur code, le tout dans le même flux, avant l’application de la correction proposée.

Panneau de sécurité Snyk Code mettant en évidence une vulnérabilité liée à la transmission de données en clair et un correctif généré par l’IA qui remplace HTTP par HTTPS en JavaScript.

Toutes ces fonctionnalités aident les développeurs à coder plus vite, plus facilement et plus sûrement. Mais ce qui leur est vraiment utile (outre la précision de Snyk Agent Fix), c’est la compréhension du contexte du code par notre LLM. Contrairement à certains outils de sécurité qui ne comprennent le code que comme du texte brut, Snyk Agent Fix comprend le code des développeurs. Il peut ainsi le corriger comme le ferait un développeur : en apportant des modifications qui ont les meilleures chances de compiler et en appliquant la correction la plus efficace et la plus pertinente pour résoudre les problèmes de sécurité.

Les utilisateurs de tous les IDE actuellement pris en charge, notamment VS Code et Eclipse, pourront profiter d’une correction des vulnérabilités simplifiée et automatique. Nous étendrons également l’accès aux utilisateurs des IDE JetBrains.

Une expérience de correction automatique prête à l’emploi, d’une précision inégalée, hautement sécurisée et largement applicable

Au cours de l’année écoulée, nous avons travaillé sans relâche pour répondre aux retours des utilisateurs sur Snyk Agent Fix. Nous avons considérablement amélioré la portée et la profondeur des résultats, ainsi que la qualité globale des corrections automatiques de DeepCode AI. Les utilisateurs bénéficient désormais d’une applicabilité plus large, de corrections automatiques plus précises et plus sûres, directement dans leur IDE :

  • 8 langages pris en charge.

  • Notre technologie CodeReduce, en instance de brevet, améliore la précision des corrections automatiques, non seulement pour Snyk Agent Fix, mais aussi pour d’autres modèles d’IA comme GPT-4.

  • Plusieurs modèles d’IA nous permettent de réduire les risques inhérents aux LLM et à l’homogénéité des modèles. Nous vérifions également les résultats de notre LLM à l’aide de notre moteur d’analyse statique et d’analyses symboliques fondées sur les connaissances, qui écartent les corrections incorrectes et les hallucinations générées par le modèle avant qu’elles ne parviennent à l’utilisateur final.

Une fonctionnalité de correction automatique testée en version bêta aussi longtemps que la nôtre offre une expérience utilisateur supérieure, en théorie comme en pratique. Et si nous sommes fiers de nos réussites, nous n’avons pas l’intention de nous reposer sur nos lauriers. Nous continuerons d’investir pour améliorer les résultats de Snyk Agent Fix et l’expérience de nos utilisateurs.

Les clients Snyk Code peuvent essayer Snyk Agent Fix dans leur IDE en activant les suggestions de correction de Snyk Code dans les paramètres de Snyk Preview (voir l’image ci-dessous). Pour en savoir plus, consultez notre documentation.

Page des paramètres de Snyk Preview affichant des fonctionnalités expérimentales avec des boutons d’activation, notamment les suggestions de correction de Snyk Code

Vous n’avez pas Snyk Code, mais souhaitez commencer à corriger automatiquement votre code de manière fiable, à la vitesse de l’IA ? Créez un compte Snyk ici et découvrez dès aujourd’hui un workflow plus proactif, plus simple et plus fluide.

Prenez en main la sécurité de l’IA avec Snyk

Découvrez comment Snyk aide à sécuriser le code généré par l’IA de vos équipes de développement, tout en offrant aux équipes de sécurité une visibilité et des contrôles complets.

*Pour analyser le code, Snyk Agent Fix utilise Snyk Code. Dans la version de septembre 2023, Snyk Code implémente 156 contrôles différents. Nous les avons répartis en cinq catégories selon le type d’analyse requis et selon qu’ils vérifient ou non des propriétés de sécurité :

AST : La plupart des contrôles AST ne peuvent être effectués que sur l’arbre syntaxique abstrait. Nombre de ces règles vérifient des propriétés propres aux extensions VueJS ou React du langage et portent notamment sur l’absence de balises, les noms de variables en double et les modèles qui ne dépendent généralement pas de l’analyse du flux de contrôle ou de données du programme.

Interprocédural : Les contrôles interprocéduraux reposent également sur une analyse interprocédurale. Contrairement aux contrôles locaux, les propriétés vérifiées concernent toujours différentes fonctions ou méthodes du programme. Ces règles détectent notamment les incohérences entre la signature d’une méthode, son implémentation ou son utilisation. (Veuillez noter que dans notre étude publiée sur la nouvelle technologie CodeReduce, la catégorie « Interprocédural » est appelée « Filewide ».)

Local : Les contrôles locaux utilisent l’analyse interprocédurale pour détecter les valeurs incorrectes transmises à des méthodes qui ne les acceptent pas, les ressources qui ne sont pas libérées et les expressions qui n’ont aucun effet ou produisent toujours des résultats à la sémantique inattendue.

SecurityLocal : Comme les contrôles locaux, les contrôles SecurityLocal détectent les utilisations incorrectes d’API du point de vue de la sécurité, ainsi que d’autres types de mauvaises configurations de sécurité. Ils suivent généralement l’ensemble des appels de méthodes effectués sur un objet ou les valeurs transmises en paramètres aux appels de méthodes ou de fonctions.

SecurityFlow : Les contrôles SecurityFlow sont généralement les plus complexes pris en charge par l’analyseur statique sélectionné. Cette catégorie comprend toutes les règles d’analyse de taint qui impliquent une analyse interprocédurale du flux de données à partir d’une source de données, ainsi que la détection de différents modèles de désinfection des données.