Skip to main content

Snyk-Sicherheit mit dem Language Server Protocol

Artikel von
Headshot of Bastian Doetsch

Bastian Doetsch

feature dev challenge

6. September 2022

0 Min. Lesezeit

Snyk bietet Plugins und Erweiterungen für Visual Studio Code, JetBrains-IDEs wie IntelliJ, WebStorm, PHPStorm und GoLand sowie Visual Studio. Möchten Sie Snyk auch dann in Ihren Arbeitsalltag integrieren, wenn Vim, Emacs, Sublime oder Eclipse Ihr bevorzugter Editor oder Ihre bevorzugte IDE ist? Das wird bald möglich sein: Wir haben unser Eclipse-Plugin veröffentlicht, das auch das neue Snyk Language Server Protocol umfasst.

Eine Vielzahl von Editoren und IDEs

Aktuell bietet Snyk Plugins für Visual Studio Code, Visual Studio, Eclipse und die IntelliJ-Plattform. Diese Integrationen sind umfangreich, unterscheiden sich jedoch in ihrem Funktionsumfang, da sie alle separat entwickelt und gepflegt werden.

Die vier IDEs, die wir bereits unterstützen, decken den Großteil der Entwicklerinnen und Entwickler ab, die Snyk nutzen. Manche wünschen sich jedoch eine größere Auswahl an IDEs oder Editoren und möchten in einer anderen Umgebung entwickeln – und dabei bei ihren Entwicklungsaufgaben weiterhin umfassende Integrationen für alle Snyk-Produkte nutzen. Bislang konnten wir dafür keine integrierte Lösung anbieten und mussten auf die CLI verweisen. Das ändert sich jetzt mit dem Language Server.

Das Language Server Protocol

Das Language Server Protocol (LSP) wurde von Microsoft entwickelt und 2016 als Open Source veröffentlicht. Es wird intensiv von VSCode genutzt und definiert Standards für die Kommunikation mit einer IDE, um Code hervorzuheben und zu annotieren sowie Korrekturen und Programmierhilfen bereitzustellen – einschließlich der Möglichkeit, Probleme zu melden. Dadurch ist eine umfassende Programmiererfahrung in nahezu jeder Umgebung möglich. Funktionsreiche Language Server gibt es für praktisch jede Programmiersprache.

Bei Snyk haben wir darüber gesprochen, wie wir dieses Protokoll nutzen können, um Snyk-Analysen in verschiedenen IDEs bereitzustellen. Dabei kamen wir zu dem Schluss, dass LSP unseren Bedarf abdeckt, Probleme und Schwachstellen sichtbar zu machen. Statt für jede IDE eigene Integrationen entwickeln zu müssen, können wir die vorhandene LSP-Unterstützung in zahlreichen Entwicklungsumgebungen nutzen. Viele bieten diese Funktion bereits standardmäßig – denn Eclipse, VSCode, Visual Studio, Sublime, Vim, Atom und viele weitere Editoren unterstützen dieses Protokoll. Auch das neue Produkt JetBrains Fleet unterstützt LSP.

Darüber hinaus lässt sich LSP bei Bedarf um neue Funktionen erweitern, und immer mehr IDEs unterstützen das Protokoll.

Der Snyk Language Server

Architekturdiagramm, das zeigt, wie Snyk-Plug-ins und Language-Server-Protokolle in mehreren IDEs über ein nicht lokales Netzwerk mit der Snyk API, CLI und S

Als wir damit begannen, die Snyk-Produkte über das Language Server Protocol verfügbar zu machen, entschieden wir uns für Eclipse als erste IDE, die das Protokoll als Snyk-Backend verwenden sollte. Der Grund dafür war, dass das Snyk Eclipse-Plugin weniger Funktionsumfang als die Plugins für andere Plattformen hatte und für Eclipse bereits ein Language-Server-Plugin verfügbar war. Die LSP-Integration LSP4e ermöglicht die Anbindung an Eclipse. Sie musste lediglich für unsere Zwecke erweitert und konfiguriert werden.

Unser Snyk Language Server ist in Go implementiert. So können wir eigenständige Binärdateien für zahlreiche Plattformen bereitstellen. Wir haben ihn gerade für unser Eclipse-Plugin allgemein verfügbar gemacht und arbeiten daran, ihn auch in die anderen von uns unterstützten IDE-Plugins zu integrieren. So können wir Verbesserungen schneller in allen Entwicklungsumgebungen bereitstellen.

Das neue Eclipse-Plugin 2.0

Die Eclipse-IDE zeigt JavaScript-Quellcode mit einem Snyk-Bereich für Sicherheitslücken an, der vor einer Warnung mittlerer Schwere zu CWE-770 und Lösungsvorschlägen warnt.

Wir haben den Language Server intern bereits ohne spezielle Integration mit NeoVim, Sublime und anderen Editoren getestet. Das Snyk Eclipse-Plugin ist jedoch die erste von Snyk offiziell unterstützte Integration, die diese Funktionen bereitstellt.

Das neue Eclipse-Plugin unterstützt nicht nur Snyk Open Source, sondern auch Snyk IaC (Infrastructure as Code) und Findings von Snyk Code. Zudem bietet es erweiterte Konfigurationsoptionen. Zuvor wurde nur Snyk Open Source unterstützt.

Authentifizierung und Download

Die Authentifizierung und der Download der erforderlichen Binärdateien werden jetzt bei Bedarf gestartet. Außerdem werden der Scan-Fortschritt und Benachrichtigungen angezeigt. Wenn Sie die automatische Verwaltung der Binärdateien nicht wünschen, können Sie sie deaktivieren und eigene Pfade auswählen und verwenden. So behalten Sie die volle Kontrolle.

Eclipse-Einstellungsfenster mit Snyk-Einstellungen, aktivierten Beta-Funktionen, Pfaden für Language Server und CLI sowie Telemetrieoptionen

Darüber hinaus bietet die Integration jetzt deutlich mehr Funktionen. Das Snyk Eclipse-Plugin hebt Probleme im Code-Editor hervor, kennzeichnet betroffene Dateien in der Projekt- und Paket-Explorer-Ansicht sowie Elemente in der Gliederungsansicht. Außerdem werden Snyk-Probleme in der Eclipse-Problemansicht angezeigt und lassen sich dort filtern.

Scans werden automatisch beim Start des Plugins sowie beim Öffnen und Speichern von Dokumenten ausgeführt. Sie können sie auch manuell über das Kontextmenü des Projekts starten.

Anmerkungen und Hervorhebungen

Wenn Snyk ein Problem findet, wird die entsprechende Zeile im Editor unterstrichen und links neben der Zeilennummer markiert.

Codeausschnitt mit JSON-Abhängigkeiten für adm-zip Version 0.4.7 und body-parser Version 1.17.1

Problemansicht

In der Eclipse-Problemansicht werden alle Probleme zusammengefasst angezeigt.

Snyk-Ergebnisse in einem Code-Editor, die Schwachstellen für beliebige Codeausführung, Code-Injection und Command-Injection in Paketen auflisten.

Projekt-Explorer

Dateien mit Problemen werden auch in der Projekt- und Paket-Explorer-Ansicht hervorgehoben:

Dateibaum mit einem Ordner „routes“, der eine Datei „index.js“ enthält

Hover-Informationen

Wenn Sie auf ein Problem zeigen – in diesem Beispiel ein Problem von Snyk Code –, werden zusätzliche Informationen angezeigt, die Ihnen helfen, das Problem zu verstehen und zu beheben.

Snyk-Code-Scan mit einer Schwachstelle mittlerer Schwere gemäß CWE-770, verursacht durch einen Dateivorgang ohne Ratenbegrenzung.

Code Lenses

Code Lenses ermöglichen die Interaktion mit dem Code und das Senden von Befehlen an den Language Server direkt im Editor. Sie werden über der Codezeile angezeigt, der sie zugeordnet sind. In unserem Fall zeigen wir den Datenfluss von Snyk Code mithilfe von Code Lenses an. So können Sie mit einem Klick zu den verschiedenen Stellen im Datenfluss navigieren.

Code-Editor mit einer exports.import-Funktionsdeklaration und einem Warnhinweis in Zeile 241.

Code-Aktionen

Für Snyk Open Source und Snyk IaC können Sie mit dem Plugin detaillierte Beschreibungen hervorgehobener Probleme in einem Browserfenster öffnen:

Code-Editor mit einer adm-zip-Abhängigkeitsversion und Sicherheitsvorschlägen zu Schwachstellen, die Directory Traversal und beliebiges Schreiben von Dateien ermöglichen.

Eclipse unterstützt ab sofort automatisch alle Snyk-Produkte, die über den Snyk Language Server bereitgestellt werden.

Snyk immer griffbereit

Dank LSP ist Snyk jetzt in einer Vielzahl neuer IDEs und Editoren integriert. Mit Eclipse haben wir ein weiteres wichtiges Tool hinzugefügt – doch praktisch alle wichtigen Entwicklungsumgebungen unterstützen LSP. Testen Sie Snyk noch heute kostenlos in Ihrer bevorzugten Umgebung: Klicken Sie hier und installieren Sie das passende Plugin. Bleiben Sie sicher.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.