Dans la bibliothèque d'ateliers clients SecRel de Snyk, nous en avons un appelé Breaking AI. Cet atelier explique comment les assistants d'IA générative, comme copilot et codium, peuvent aider les développeurs à écrire du code plus rapidement. Le point fort de l'atelier est que les assistants IA sont comme des développeurs juniors fraîchement sortis de leurs camps d'entraînement de codage : super enthousiastes et serviables, mais - vous vraiment voulez vérifier leur code (aucune ombre aux développeurs juniors - nous j'en ai besoin, et ils sont géniaux !). Dans l'atelier, nous montrons comment la combinaison des assistants IA et de Snyk vous donne un super pouvoir : écrire du code rapidement et en toute sécurité.
Pour citer un célèbre chef, Snyk a désormais «passé à la vitesse supérieure» avec sa capacité Deep Code AI Fix. Snyk Code a toujours donné de bons conseils de remédiation lorsqu'il détecte une faille de sécurité. Cela vous donnerait même trois bonnes références d'autres projets open source présentant la même vulnérabilité et vous montrerait comment ces projets l'ont corrigée. Désormais, grâce aux données soigneusement sélectionnées de l'équipe de recherche en sécurité de Snyk, un modèle d'IA hybride qui combine la puissance de l'IA générative et symbolique, ainsi que des modèles d'apprentissage automatique, Snyk peut désormais corriger automatiquement de nombreuses vulnérabilités de sécurité courantes depuis le confort de votre ordinateur. IDE préféré.
Dans ce blog, je vais vous montrer comment vous pouvez tirer le meilleur parti de Deep Code AI Fix (DCAIF) dans un exemple de projet Java que nous utilisons dans nos ateliers. Le code source peut être trouvé ici. REMARQUE : ce projet est volontairement vulnérable de plusieurs manières et ne convient pas à une utilisation dans un environnement de production.
Si vous avez déjà assisté à une conférence technique ou pris la parole lors d'une conférence, vous savez que l'un des aspects les plus difficiles est de créer et de présenter le calendrier.
L'application de référence en est une version épouvantable (je ne suis PAS un bon développeur front-end !), mais elle est utile pour montrer comment le code peut techniquement fonctionner tout en n'étant pas sécurisé.
Il s'agit d'une application Spring Boot utilisant le moteur de modèles Thymeleaf. Au démarrage, il génère des locuteurs aléatoires, des titres de discussions et des données de description de discussions à l'aide de la célèbre bibliothèque de falsification. Les titres et descriptions des exposés proviennent tous du texte du livre Le Guide du voyageur galactique. REMARQUE : Les titres et les descriptions peuvent ne pas être tous sûrs à 100 % pour le travail. Vous êtes prévenu !
Chaque conférencier généré pour l'événement dispose également d'une page dédiée où vous pouvez voir une liste de leurs conférences lors de la conférence. Nous allons nous concentrer sur cette partie de l'application.
Pour compiler et exécuter l'application, exécutez ce qui suit :
mvn clean install mvn spring-boot:run
Lorsque vous exécutez l'application, en plus de la bannière Spring Boot habituelle et d'autres résultats, vous verrez quelque chose comme ceci :
Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane Access talks for micah at: http://localhost:8081/talks?username=micah
REMARQUE : Ce ne sera pas exactement comme ça, car les intervenants et leurs discours sont générés aléatoirement à chaque fois que vous démarrez l'application.
Si vous cliquez ou copiez/collez l'un des liens, vous verrez une page d'intervenant avec une liste de leurs interventions :
Jetez un œil à TalkController.java. C’est ainsi que la page d’un orateur est rendue. Pouvez-vous repérer la vulnérabilité ?
Nous ne voulons pas que vous ayez à compter sur vos yeux ! Nous voulons que les développeurs agissent rapidement ET écrivent du code sécurisé.
J'utilise IntelliJ Idea pour écrire mes applications Java. J'utilise également l'extension IDE de Snyk. La bonne nouvelle est qu'il existe des extensions Snyk IDE pour tous les IDE populaires, prenant en charge un large éventail de langages de programmation.
Si vous souhaitez suivre et n'avez pas de compte Snyk, vous pouvez en créer un gratuitement ici.
Ai-je mentionné que cette application présente de nombreuses vulnérabilités ? C’est parce que nous l’utilisons dans nos ateliers. Celui sur lequel je veux me concentrer est celui de TalkController.java :
Ce sont toutes des informations très utiles pour résoudre le problème. Cependant, remarquez une petite icône en forme d'éclair (⚡️) à gauche de la vulnérabilité sur le n°1. Cela indique que cette vulnérabilité peut être corrigée automatiquement.
Si vous passez votre souris sur le ondulé rouge, vous verrez l'option permettant de Résoudre ce problème :
Avant d’examiner le résultat de Deep Code AI Fix, voyons ce que le copilote ferait pour nous.
Voici l'invite que j'ai donnée au copilote sur la ligne 42 et le code qu'elle injecte :
// guard against XSS username = username.replaceAll("", ">");
Ceci peut fonctionner contre les attaques naïves, mais fonctionnera-t-il contre tous les types d'attaques XSS ? Je n'en suis pas si sûr. En fait, lorsque je relance l'analyse Snyk, la vulnérabilité XSS est toujours là.
Jetons un coup d'œil au correctif Snyk :
String usernameStr = "" HtmlUtils.htmlEscape(username) "'s talks"; ================================================
Maintenant, ce j'aime bien. Il utilise une approche idiomatique et attendue avec une bibliothèque Spring Boot intégrée : HtmlUtils. Je suis convaincu que cela nettoiera complètement l'entrée : nom d'utilisateur. Une nouvelle analyse Snyk montre que la vulnérabilité n'existe plus.
Bravo, en effet ! Non seulement le correctif automatique Snyk a résolu la vulnérabilité, mais il l'a fait d'une manière qui correspond au framework utilisé - Spring Boot dans ce cas.
Dans cet article, je vous ai montré comment le correctif Deep Code AI de Snyk va au-delà des simples conseils de remédiation et peut apporter un correctif en votre nom. Vous pouvez également confirmer l'avantage du correctif en constatant que la vulnérabilité de sécurité d'origine n'est plus là.
Chez Snyk, nous adorons les assistants IA, mais ils ne sont pas très bons en sécurité. Nos recherches montrent que les Gen AI ont tendance à générer du code non sécurisé à peu près au même rythme que les humains – environ 40 %. Cela est logique dans la mesure où les solutions purement Gen AI comme Copilot entraînent leurs modèles principalement sur le code existant. L'approche hybride de Snyk, qui comprend l'IA symbolique, la Gen AI, l'apprentissage automatique et une formation organisée par notre équipe de sécurité, donne aux résultats une approche axée sur la sécurité.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3