Skip to main content

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

feature-snyk-apprisk-globe

23 avril 2024

0 minutes de lecture

DeepCode AI Fix est une fonctionnalité basée sur l’IA qui fournit des correctifs de sécurité en un clic dans Snyk Code, un outil SAST en temps réel au service des développeurs. Il s’agit de l’un des premiers outils de correction de sécurité semi-automatisés intégrés dans l’IDE du marché, et sa bêta publique a été annoncée dans le cadre de l’événement Snyk Launch d’avril  2023. Il corrige les problèmes de sécurité détectés par Snyk Code en temps réel, directement dans l’IDE. Depuis, nous n’avons cessé d’améliorer cette fonctionnalité aussi puissante que révolutionnaire. Pendant 12 mois, nous avons écouté les retours des testeurs de notre bêta publique et fait évoluer notre solution. Nous sommes heureux d’annoncer aujourd’hui de nouvelles améliorations de notre modèle. DeepCode AI Fix présente désormais les caractéristiques suivantes :

  • Prise en charge de 7 langages

  • Technologie révolutionnaire en attente de brevet qui améliore considérablement la précision de DeepCode AI Fix, mais aussi des autres modèles sur lesquels nous l’avons testée, notamment GPT-4, GPT-3.5 et Mixtral.

  • IA multimodale (notre célèbre IA hybride) pour une efficacité maximale grâce à la diversité des modèles

DeepCode AI Fix, une solution de correction automatique parfaitement fluide

Snyk Code analyse le code source produit par les développeurs à chaque étape du cycle de vie du développement logiciel, que ce soit dans l’IDE, le SCM ou le pipeline CI/CD. Notre solution SAST apporte une précision, une vitesse et une proactivité inégalées en matière de correction des problèmes de sécurité.

En fonction des politiques de sécurité en place, les développeurs cherchent à corriger les nouveaux problèmes de sécurité détectés. Mais ce processus n’est pas toujours simple. Vous devez savoir comment le code fonctionne au sein de la base de code, comprendre le problème de sécurité et identifier le meilleur moyen de le résoudre.

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 correctifs tirés de dépôts dont la licence l’autorise qui leur inspirent une solution. Avant l’arrivée de DeepCode AI Fix, Snyk Code constituait déjà un progrès considérable en réduisant la charge mentale des développeurs. Malheureusement, ceux-ci devaient encore trouver par eux-mêmes les correctifs aux problèmes détectés.

Nous avons donc cherché à simplifier encore ce processus avec DeepCode AI Fix, un outil basé sur le LLM de DeepCode AI (qui mêle IA symbolique et machine learning avec notre LLM). DeepCode AI Fix aide les développeurs à coder de manière simple et sécurisée en leur permettant de corriger automatiquement les problèmes de sécurité, une fonctionnalité réservée dans les premiers temps aux projets JavaScript et TypeScript. Toute personne utilisant Snyk Code dans Visual Studio Code ou Eclipse pouvait cliquer sur ⚡Fix this issue lorsque de nouveaux problèmes de sécurité survenaient.

Enseignements tirés de notre phase de bêta

Lorsque Snyk a proposé DeepCode AI Fix en accès anticipé, de nombreuses entreprises de tailles et de secteurs très différents l’ont adopté, car cet outil proposait à leurs équipes un moyen unique de corriger automatiquement les problèmes de sécurité directement dans l’IDE, avant que ces problèmes n’arrivent en production. 

Nous avions de l’avance sur la concurrence, mais les fonctions en bêta sont par nature imparfaites, et nous voulions continuer à améliorer DeepCode AI Fix. Nous avons travaillé pour proposer plus souvent des correctifs appropriés, améliorer les règles des différents langages, prendre en charge des langages supplémentaires, élargir l’accessibilité de cette fonction (elle n’était alors disponible que dans l’IDE) et optimiser l’expérience utilisateur.

Comme vous pouvez le constater, la liste est longue, et nous avons donc commencé par nous concentrer sur les éléments les plus importants en nous appuyant sur les retours de nos utilisateurs :

  • Amélioration de la qualité des résultats

  • Ajout de langages supplémentaires

La qualité et la sécurité des correctifs sont essentielles pour une fonction comme DeepCode AI Fix. Par conséquent, nous avons redoublé d’efforts pour proposer des correctifs plus complets et plus variés.

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

Un nouveau LLM pour plus de rapidité et de précision

Lors de sa publication, DeepCode AI Fix utilisait le modèle T5 de Google, grandement personnalisé par les experts en sécurité de Snyk. Pourquoi sommes-nous partis de ce modèle ? Remettons la situation en perspective. À l’époque, nous étions en avance sur nos concurrents et avions travaillé deux années entières sur DeepCode AI Fix, alors que les LLM en étaient encore à leurs balbutiements. À ce moment-là, nous avons donc estimé que le modèle T5 offrait la plus intéressante des options viables à notre disposition. Nous l’avons affiné à l’aide de projets open source dont la licence était suffisamment permissive et qui avaient corrigé des problèmes de sécurité. Avant que DeepCode AI Fix ne propose un correctif de sécurité, DeepCode AI, le moteur d’IA hybride de Snyk, appliquait ses règles strictes et ses algorithmes d’IA symbolique basés sur nos connaissances en sécurité pour réanalyser le correctif du code. Il pouvait ainsi intégrer nos prédictions de sécurité pour réduire le risque d’hallucinations et de correctifs incorrects que tous les LLM, y compris celui de DeepCode AI Fix, peuvent proposer. Nous continuons aujourd’hui de vérifier le code proposé par DeepCode AI Fix, même si nous sommes passés à un nouveau modèle, plus sophistiqué : un LLM (voir ci-dessous).

Les enseignements que nous avons tirés des premières utilisations de DeepCode AI Fix nous ont poussés à opter pour des LLM afin de générer des correctifs de sécurité plus précis. Nous avons testé tous les LLM susceptibles d’être viables et intéressants pour déterminer lequel offrait les meilleurs résultats une fois associés à nos méthodes d’affinage. Pour mener cette évaluation, nous nous sommes appuyés sur des critères de précision et de rapidité. C’est StarCoder qui s’est montré le plus performant, et nous l’avons donc entraîné sur nos ensembles de données.

L’amélioration des résultats nous a impressionnés :

blog-deepcode-ai-fix-graph-2023

DeepCode AI Fix peut corriger automatiquement divers types de problèmes de sécurité et de codage. Comme le montrent les différentes lignes de l’image ci-dessus, nous avons classé ces problèmes en 5 catégories, AST, Interprocedural, Local, SecurityLocal et SecurityFlow* pour synthétiser les résultats de notre évaluation. Pour chaque problème, DeepCode AI Fix génère 5 correctifs possibles. Les 3 colonnes de l’image ci-dessus, pass@1, pass@3 et pass@5, font référence au pourcentage de sorties contenant 1 correctif correct parmi respectivement 1, 3 et 5 correctifs candidats. Pour préserver la précision de DeepCode AI Fix, toutes les prédictions sont évaluées selon nos règles (créées par des humains) et notre base de connaissances (incarnée par notre IA symbolique). Une prédiction passe les vérifications si elle produit du code dont la syntaxe est correcte, qui peut être analysé et qui corrige le problème de sécurité sans en introduire de nouveaux. Il s’agit de l’atout maître de Snyk : nous utilisons notre propre analyseur de code et notre propre base de connaissances, qui intègrent tous deux notre IA symbolique (un point essentiel, découvrez pourquoi dans cet article), pour éliminer les correctifs incorrects et hallucinations du LLM de DeepCode AI Fix avant que ceux-ci ne soient proposés à nos clients. Cette stratégie nous assure que DeepCode AI Fix est plus efficace et sûr que les autres solutions de correction automatique qui analysent le code et s’appuient uniquement sur les LLM pour corriger, ou même vérifier et corriger, les problèmes. Vous trouverez des informations détaillées sur nos évaluations et les catégories de problèmes dans l’article de recherche sur la technologie de CodeReduce de Snyk (voir ci-dessous).

Une technologie révolutionnaire en attente de brevet qui améliore significativement la précision des LLM, GPT-4 compris

Nous avons aussi travaillé sur l’amélioration de la qualité des résultats en optimisant le traitement des données de l’utilisateur (à savoir le code à analyser) intégré au prompt du LLM de DeepCode AI Fix. Cette technologie imaginée par Snyk, appelée « CodeReduce » est en attente de brevet. CodeReduce utilise l’analyse de programme pour cadrer l’attention du LLM sur les seules portions de code qui contiennent le problème signalé et le contexte nécessaire pour créer un correctif. En d’autres termes, Snyk élimine encore une fois les informations inutiles et simplifie les choses pour obtenir des résultats plus efficaces. CodeReduce réduit considérablement la quantité de code que DeepCode AI Fix doit traiter, ce qui permet d’améliorer la qualité et les normes de génération de correctifs de tous les modèles que nous avons testés (dont GPT-3.5, GPT-4 et Mixtral) et réduit le risque d’hallucinations. En vérité, la précision de GPT-4 a même augmenté de 20 % (voir l’image ci-dessous). Nous présenterons bientôt plus de détail sur le fonctionnement de CodeReduce. Restez à l’affût !

blog-deepcode-ai-fix-graph
Hormis pour pass@5 pour AST et exact@5 pour Local, Snyk excède tous les indicateurs avec une surperformance pouvant atteindre 20 %.

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

En plus de modifier le modèle sous-jacent et d’améliorer la concentration de DeepCode AI Fix pour optimiser les résultats, nous voulions aussi travailler sur leur exhaustivité et leur variété. Pour ce faire, nous avons travaillé avec notre équipe d’étiquetage pour améliorer la qualité de notre base de données de correctifs et vérifier si les résultats proposés par DeepCode AI Fix étaient précis ou non pour améliorer en continu notre modèle.

Cette approche multidimensionnelle nous a permis de passer de plusieurs centaines de règles applicables à JavaScript/TypeScript (nous considérons ces deux langages comme un seul) à un nombre bien supérieur de règles pour 6 langages supplémentaires, avec un niveau de confiance plus élevé pour chaque règle. Nous prenons désormais en charge, pour le top 10 des menaces OWASP :

  • JavaScript/TypeScript

  • Java

  • Python

  • C/C++/C#

  • C# (prise en charge partielle)

  • Go (prise en charge partielle)

  • APEX (prise en charge partielle)

Nous avons également travaillé sur d’autres améliorations de notre stratégie d’obtention et de traitement des données, avec à la clé une hausse considérable de la fiabilité des correctifs, qui atteint désormais 80 % en moyenne

Et ensuite ?

Malgré les grandes avancées réalisées en matière de fiabilité, nous ne comptons pas nous arrêter là et allons poursuivre l’amélioration, l’optimisation et la mise à jour du LLM de DeepCode AI Fix. De plus, nous allons nous pencher sur l’expérience utilisateur dans l’IDE, mais pas seulement. Et concrètement ?

Des améliorations du modèle pour des correctifs encore plus rapides et pertinents

Les LLM évoluent encore à toute allure, et de nouveaux modèles et améliorations sont publiés régulièrement. StarCoder 2, une mise à jour de StarCoder, est désormais disponible et nous comptons bien la tester. Si nos tests indiquent que nous pouvons aller encore plus loin avec cette nouvelle version, nous l’adopterons probablement. En dehors du LLM à proprement parler, nous travaillons également sur les axes suivants :

  • Accélérer les correctifs en optimisant notre modèle de neurones et notre serveur pour faire passer la latence de 12 secondes en moyenne à moins de 6 secondes

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

Une expérience simplifiée dans l’IDE pour corriger toujours plus facilement les problèmes

Désormais, les développeurs qui utilisent DeepCode AI Fix peuvent voir plus facilement les correctifs proposés, choisir le plus approprié à leur contexte et prévisualiser les modifications potentielles de leur code dans un même processus avant que le correctif proposé ne soit appliqué.

blog-deepcode-ai-fix-index-js

Toutes ces fonctionnalités les aident à coder plus rapidement, plus simplement et de manière plus sécurisée. Mais ce qui fait vraiment avancer les développeurs, au-delà de la précision de DeepCode AI Fix, c’est la compréhension qu’a notre LLM du contexte du code. À la différence d’autres outils de sécurité qui interprètent le code comme du texte classique, DeepCode AI Fix comprend le code comme le ferait un développeur et propose des modifications qui ont toutes les chances de pouvoir être compilés sans erreurs et en appliquant LE correctif le plus performant et le plus efficace pour chaque problème de sécurité. 

Les utilisateurs de l’ensemble des IDE que nous prenons en charge, VS Code et Eclipse compris, bénéficieront d’une correction des vulnérabilités parfaitement fluide, et les utilisateurs de l’IDE de JetBrains les rejoindront très bientôt.

Une correction automatique ultra précise, très sécurisée et polyvalente

Au cours de l’année passée, nous n’avons pas ménagé nos efforts pour tenir compte des retours de nos utilisateurs sur DeepCode AI Fix. Nous sommes ainsi parvenus à élargir considérablement l’étendue et l’exhaustivité des correctifs, ainsi que leur qualité globale. Les utilisateurs bénéficient désormais de corrections automatiques pour plus de vulnérabilités et de correctifs plus précis et sûrs, le tout directement depuis leur IDE :

  • 7 langages pris en charge (JavaScript et Typescript étant comptés comme un seul langage).

  • Notre technologie CodeReduce, en attente de brevet, améliore la précision des correctifs pour DeepCode AI Fix, mais aussi pour d’autres modèles d’IA comme GPT-4.

  • Plusieurs modèles d’IA pour réduire les risques inhérents aux LLM et l’homogénéité des modèles, et vérification des sorties des LLM par notre moteur d’analyse statique et des analyses par IA symbolique basées sur nos connaissances pour éliminer les correctifs incorrects et hallucinations avant qu’ils ne soient vus par l’utilisateur.

Fonction de correction automatique testée sur le terrain en phase bêta pour offrir une expérience utilisateur véritablement supérieure. Nous sommes fiers du chemin parcouru, mais nous ne comptons pas en rester là. Nous allons poursuivre notre travail sur l’amélioration des résultats et de l’expérience offerts par DeepCode AI Fix. 

Les clients de Snyk Code peuvent essayer DeepCode AI Fix dans leur IDE en activant les suggestions Snyk Code Fix dans les paramètres Snyk Preview (voir image ci-dessous). Vous trouverez plus d’informations dans notre documentation.

blog-deepcode-ai-fix-snyk-preview

Vous n’avez pas Snyk Code, mais voulez profiter des corrections fiables, automatiques et rapides assurées par l’IA ? Créez un compte Snyk ici pour profiter d’un workflow plus proactif, simple, rapide et fluide sans attendre. 

Local : les contrôles de la catégorie Local s’appuient sur une analyse interprocédurale pour détecter si des valeurs incorrectes peuvent être transmises à des méthodes qui ne les acceptent pas, ou détecter les ressources non désattribuées ou les expressions qui n’ont aucun effet ou génèrent toujours des résultats présentant une sémantique inattendue.