Skip to main content

Sécurité Snyk avec le Language Server Protocol

Écrit par
Headshot of Bastian Doetsch

Bastian Doetsch

feature dev challenge

6 septembre 2022

0 minutes de lecture

Snyk propose des plug-ins ou des extensions pour Visual Studio Code, les IDE JetBrains comme IntelliJ, WebStorm, PHPStorm et GoLand, ainsi que Visual Studio. Mais avez-vous déjà voulu intégrer Snyk à votre quotidien alors que votre éditeur ou IDE préféré est Vim, Emacs, Sublime ou Eclipse ? Cela sera bientôt possible : nous avons publié notre plug-in Eclipse, qui intègre le nouveau Snyk Language Server Protocol.

Une multitude d’éditeurs et d’IDE

Snyk propose actuellement des plug-ins pour Visual Studio Code, Visual Studio, Eclipse et la plateforme IntelliJ. Ces intégrations sont riches en fonctionnalités, mais celles-ci diffèrent d’un plug-in à l’autre, car ils sont tous développés et maintenus séparément.

Les quatre IDE que nous prenons déjà en charge couvrent la majorité des développeurs qui utilisent Snyk. Mais certains aimeraient avoir davantage de choix pour leur IDE ou leur éditeur et développer dans un autre environnement, tout en bénéficiant d’intégrations riches pour tous les produits Snyk dans le cadre de leurs tâches d’ingénierie. Jusqu’à présent, nous ne pouvions pas proposer de solution intégrée et devions orienter les utilisateurs vers la CLI. Mais cela change avec le Language Server.

Présentation du Language Server Protocol

Le Language Server Protocol (LSP) a été créé par Microsoft et rendu open source en 2016. Il est largement utilisé par VSCode et définit des normes de communication avec un IDE pour mettre en évidence et annoter du code, proposer des correctifs et fournir de l’aide au développement, notamment en signalant les problèmes. Il a permis d’offrir une expérience de programmation riche dans presque tous les environnements, grâce à des serveurs de langage riches en fonctionnalités pour pratiquement tous les langages de programmation.

Chez Snyk, nous avons étudié comment tirer parti de ce protocole pour fournir les analyses Snyk dans différents IDE. Nous avons conclu que le LSP pouvait répondre à notre besoin de signaler les problèmes et les vulnérabilités. Plutôt que de développer des intégrations pour chaque IDE individuellement, nous pouvons tirer parti de la prise en charge du LSP déjà offerte dans de nombreux environnements de développement. Beaucoup intègrent cette fonctionnalité par défaut : Eclipse, VSCode, Visual Studio, Sublime, Vim, Atom et de nombreux autres éditeurs prennent en charge ce protocole. Même le nouveau produit JetBrains Fleet prend en charge le LSP.

De plus, le LSP peut être étendu lorsque de nouvelles fonctionnalités sont nécessaires, et de plus en plus d’IDE le prennent en charge.

Le Snyk Language Server

Schéma d’architecture montrant les plugins Snyk et les protocoles de serveur de langage dans plusieurs IDE, connectés via un réseau distant à l’API Snyk, à la CLI et à S

Lorsque nous avons commencé à encapsuler les produits Snyk derrière le Language Server Protocol, nous avons décidé de commencer par Eclipse comme premier IDE à utiliser ce protocole comme backend pour Snyk. En effet, le plug-in Snyk pour Eclipse était moins riche en fonctionnalités que ceux d’autres plateformes, et un plug-in Language Server était déjà disponible pour Eclipse. L’intégration LSP LSP4e est déjà compatible avec Eclipse ; il nous suffisait de l’étendre et de la configurer selon nos besoins.

Notre Snyk Language Server est développé en Go, ce qui nous permet de fournir des binaires autonomes pour de nombreuses plateformes. Nous l’avons récemment mis à disposition de tous les utilisateurs de notre plug-in Eclipse et nous travaillons à son intégration dans les autres plug-ins IDE que nous prenons en charge, afin d’apporter plus rapidement des améliorations à tous les environnements de développement.

Le nouveau plug-in Eclipse 2.0

L’IDE Eclipse affiche du code source JavaScript avec un panneau Snyk présentant un avertissement CWE-770 de gravité moyenne et des correctifs suggérés.

Nous avons testé le Language Server en interne, sans intégration personnalisée, avec NeoVim, Sublime et d’autres éditeurs. Mais le plug-in Snyk pour Eclipse est la première intégration officiellement prise en charge par Snyk à proposer ces fonctionnalités.

Le nouveau plug-in Eclipse prend en charge non seulement Snyk Open Source, mais aussi Snyk IaC (Infrastructure as Code) et les résultats de Snyk Code, ainsi que des options de configuration étendues. Auparavant, seul Snyk Open Source était pris en charge.

Authentification et téléchargement

L’authentification et le téléchargement des binaires nécessaires sont désormais déclenchés à la demande. La progression de l’analyse et les notifications destinées aux utilisateurs sont également affichées. Si vous ne souhaitez pas que les binaires soient gérés automatiquement, vous pouvez désactiver cette option, puis sélectionner et utiliser des chemins personnalisés pour garder le contrôle total.

Fenêtre des préférences d’Eclipse affichant les paramètres Snyk, les fonctionnalités bêta activées, les chemins d’accès au serveur de langage et à l’interface de ligne de commande, ainsi que les options de télémétrie

L’intégration est par ailleurs beaucoup plus riche qu’auparavant. Le plug-in Snyk pour Eclipse met désormais en évidence les problèmes dans l’éditeur de code, signale les fichiers concernés dans les vues Project Explorer et Package Explorer, ainsi que les éléments dans la vue Outline. De plus, les problèmes détectés par Snyk sont ajoutés à la vue Problems d’Eclipse, où vous pouvez les filtrer.

Les analyses sont lancées automatiquement au démarrage du plug-in, ainsi qu’à l’ouverture et à l’enregistrement des documents. Vous pouvez également les déclencher manuellement depuis le menu contextuel du projet.

Annotations et mise en évidence

Si Snyk détecte un problème, la ligne correspondante est mise en évidence dans l’éditeur en étant soulignée et marquée à gauche, à côté des numéros de ligne.

Extrait de code affichant les dépendances JSON pour adm-zip version 0.4.7 et body-parser version 1.17.1

Vue Problems

La vue Problems d’Eclipse affiche une liste de tous les problèmes détectés.

Résultats Snyk dans un éditeur de code, signalant des vulnérabilités d’exécution de code arbitraire, d’injection de code et d’injection de commandes dans des packages.

Project Explorer

Les fichiers concernés par des problèmes sont également mis en évidence dans les vues Project Explorer et Package Explorer :

Arborescence de fichiers montrant un dossier routes contenant un fichier index.js

Infobulles

Lorsque vous survolez un problème — ici, un problème détecté par Snyk Code — des informations complémentaires s’affichent pour vous aider à le comprendre et à le corriger.

Analyse Snyk Code affichant une vulnérabilité CWE-770 de gravité moyenne, causée par une opération sur un fichier sans limitation de débit.

Code Lenses

Les Code Lenses permettent d’interagir avec le code depuis l’éditeur et d’envoyer des commandes au serveur de langage. Elles s’affichent au-dessus d’une ligne de code à laquelle une Code Lens est associée. Dans notre cas, nous affichons le flux de données de Snyk Code à l’aide de Code Lenses, afin de vous permettre d’accéder en un clic aux différents emplacements du flux.

Éditeur de code affichant une déclaration de fonction exports.import avec un marqueur d’avertissement à la ligne 241.

Actions sur le code

Pour Snyk Open Source et Snyk IaC, le plug-in permet d’ouvrir dans un navigateur une description détaillée des problèmes mis en évidence :

Éditeur de code affichant une version de la dépendance adm-zip et des suggestions de sécurité sous forme de fenêtres contextuelles concernant des vulnérabilités de traversée de répertoires et d’écriture arbitraire de fichiers.

Désormais, Eclipse prend automatiquement en charge tous les produits Snyk proposés par le Snyk Language Server.

Snyk à portée de main, pour travailler comme vous le souhaitez

Grâce au LSP, Snyk est intégré à toute une série de nouveaux IDE et éditeurs. Avec Eclipse, nous avons ajouté un outil majeur, mais pratiquement tous les environnements de développement importants prennent en charge le LSP. Essayez gratuitement Snyk dès aujourd’hui dans votre environnement préféré en cliquant ici et en installant le plug-in qui vous convient. Développez en toute sécurité.

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.