Comment corriger les problèmes de sécurité Java pendant le codage dans IntelliJ IDEA
8 avril 2021
0 minutes de lectureAujourd’hui, les développeurs ne sont pas seulement responsables de la création de l’application. En plus de travailler sur les fonctionnalités, ils doivent veiller à sa maintenabilité, à son évolutivité, à sa fiabilité et à sa sécurité. Beaucoup ne savent pas par où commencer pour sécuriser leurs applications. De plus, la plupart des entreprises s’appuient encore sur une équipe de sécurité dédiée au lieu d’intégrer cette expertise au sein des équipes de développement.
Beaucoup de développeurs passent pratiquement toute leur journée dans leur environnement de développement intégré (IDE). Un bon IDE est un véritable couteau suisse : c’est l’outil auquel on fait appel pour presque tout. Pouvoir y trouver tout ce dont j’ai besoin pour créer, exécuter, tester, déboguer et sécuriser mon application en fait un outil indispensable pour de nombreux développeurs.
Le rapport Snyk Java Ecosystem de l’an dernier nous apprend qu’IntelliJ IDEA est l’IDE le plus populaire et le plus utilisé dans l’écosystème de la sécurité Java. Snyk a récemment lancé un nouveau plugin d’analyse des vulnérabilités pour les IDE IntelliJ. Voyons comment intégrer la sécurité et le développement sécurisé à cet IDE grâce à ce nouveau plugin.
Avant de commencer, voici un bref aperçu des sujets abordés dans cet article :

Je vous recommande de passer en plein écran pour mieux voir les exemples de code.
Snyk Vulnerability Scanner pour IntelliJ IDEA
Il n’existait pas déjà un plugin Snyk pour IntelliJ IDEA ?
Si, mais l’ancien plugin se concentrait exclusivement sur l’analyse de Snyk Open Source et aidait à détecter et à corriger les vulnérabilités dans les dépendances open source. Le nouveau plugin intègre également les fonctionnalités récemment lancées de Snyk Code, qui aident les développeurs à plusieurs niveaux.
Installer le plugin IDE de Snyk
La méthode recommandée pour installer le plugin consiste à passer par la marketplace d’IntelliJ IDEA. Il vous suffit de rechercher « snyk » dans la marketplace des plugins d’IntelliJ IDEA pour le trouver.

Après avoir installé le plugin et redémarré l’IDE, vous devez l’authentifier. Pour utiliser le plugin, vous devez disposer au minimum d’un compte Snyk gratuit. Si vous avez déjà un compte Snyk, il vous suffit de vous connecter. Si vous découvrez Snyk, le processus d’intégration vous guidera pour créer un compte gratuit.
Intégration de Snyk Code dans IntelliJ IDEA
Comme indiqué plus haut, la version précédente du plugin Snyk pour IntelliJ IDEA exploitait uniquement les fonctionnalités de Snyk Open Source. Elle vous permettait d’analyser vos projets à la recherche de vulnérabilités de sécurité dans vos dépendances open source. Avec le nouveau plugin, vous pouvez également utiliser les fonctionnalités de Snyk Code en complément de l’analyse Snyk Open Source. Snyk Code est un produit de sécurité qui analyse statiquement votre code pour détecter les constructions potentiellement vulnérables que vous ou votre équipe avez créées. Avec un seul plugin, vous pouvez ainsi sécuriser l’ensemble de votre application. Voyons cela en pratique.
Corriger les vulnérabilités de sécurité dans IntelliJ
Après avoir analysé mon application, plusieurs sections s’affichent à l’écran. La première présente l’analyse Snyk Open Source bien connue. Elle m’indique que j’inclus des bibliothèques, directes ou transitives, qui présentent des vulnérabilités connues. L’une d’elles est snakeyaml, version 1.24. Cette version est vulnérable aux attaques par déni de service. J’ai expliqué le fonctionnement de cette attaque et comment l’éviter dans l’article Prévenir les vulnérabilités liées à l’analyse YAML avec snakeyaml en Java.
La solution est très simple. Il suffit de passer à la version 1.26 ou à une version ultérieure pour corriger la vulnérabilité. Notez que la version qui corrige le problème n’est pas nécessairement la dernière version disponible. C’est la version la plus proche qui ne présente pas cette vulnérabilité. Après avoir mis à jour la version dans mon fichier pom et relancé l’analyse de l’application, la vulnérabilité a disparu. Les conseils pratiques de correction des vulnérabilités fournis par le plugin Snyk pour IntelliJ IDE indiquent très clairement comment résoudre le problème.

Analyser le code à la recherche de vulnérabilités de sécurité
La section suivante présente les vulnérabilités de code détectées par le plugin Snyk. Les fonctionnalités de Snyk Code signalent les défauts de mon code susceptibles d’entraîner des vulnérabilités de sécurité spécifiques.
Le premier problème est une « traversée de chemin ». Le plugin Snyk pour IntelliJ IDEA m’indique où se trouve le problème et quel est le flux de données. Pour le moment, j’écris un fichier sur le disque sans vérifier son nom réel. Si le nom de fichier contient quelque chose comme « ../../../textfile.txt », mon code n’enregistrera pas le fichier au bon endroit. Ce nom de fichier remonte dans l’arborescence et sort du dossier de destination. Le fichier se retrouve donc quelque part sur mon système où je ne souhaite pas qu’il soit. Plus important encore, selon les privilèges du processus, il peut écraser des fichiers existants en dehors du dossier de destination, n’importe où sur le système.

Pour éviter cela, je peux vérifier que le chemin canonique du nouveau fichier commence par le chemin de la destination souhaitée, comme ci-dessous.
La traversée de chemin ne fonctionnera alors plus, car le fichier ne pourra pas être enregistré en dehors de mon dossier de destination. Après avoir relancé l’analyse de mon application, je constate que Snyk Code confirme mon constat.
Prenons un autre exemple. D’après l’inspection du code, j’ai créé une vulnérabilité d’injection SQL à la ligne 33 de mon fichier MessageController.java. En examinant le flux de données, je constate que l’injection SQL se trouve en réalité dans MessageRepo.java. Il est extrêmement utile que Snyk Code puisse analyser plusieurs fichiers pour détecter ce problème inter-fichiers, car peu d’outils en sont capables. À cause de MessageController, l’injection SQL est accessible depuis l’extérieur et constitue une menace immédiate que je dois éliminer.

Maintenant que je connais le problème, je vais corriger le code dans MessageRepo.java. Je ne vais plus concaténer directement le paramètre à la chaîne de requête, mais utiliser une requête préparée avec des paramètres. Si j’implémente la requête préparée comme ci-dessous et que je relance l’analyse de mon application, notre plugin ne signalera plus cette vulnérabilité.
Pour en savoir plus sur la prévention des injections SQL, consultez également notre très pratique antisèche sur la prévention des injections SQL.
Qualité du code
En plus d’analyser les vulnérabilités de sécurité dans vos dépendances open source et dans votre propre code, le plugin Snyk pour IntelliJ IDEA peut également vous aider à améliorer la qualité de votre code.
Dans l’exemple ci-dessous, le plugin Snyk signale que je ne ferme pas certaines connexions. Cela peut entraîner des fuites de ressources. Pour les éviter, il faut fermer les ressources dans un bloc finally.

Intégrez dès aujourd’hui la sécurité à IntelliJ IDEA
Le Snyk Vulnerability Scanner pour IntelliJ IDEA est en quelque sorte un outil tout-en-un pour les développeurs Java. En associant la puissance de l’analyse Snyk Open Source à celle de Snyk Code, il met à votre disposition un nouvel outil performant pour éviter les erreurs de sécurité dans vos applications. La fonctionnalité dédiée à la qualité du code est également un excellent atout pour l’équipe. Notez que vous pouvez configurer le plugin selon vos préférences, par exemple si vous ne souhaitez pas exécuter l’analyse de la qualité du code.
Quoi qu’il en soit, les développeurs Java comme vous et moi doivent assumer la responsabilité des applications qu’ils créent, notamment en évitant les problèmes de sécurité. Avec le plugin Snyk pour IntelliJ IDEA, vous pouvez le faire facilement depuis votre IDE préféré. Pourquoi ne pas l’essayer ?
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
