Skip to main content

4 Schritte zum Umgang mit anfälligen Abhängigkeiten

Artikel von

7. Juli 2016

0 Min. Lesezeit

Vor einigen Wochen haben wir die enge GitHub-Integration von Snyk veröffentlicht. Bei ihrer Entwicklung wollten wir es so einfach wie möglich machen, bekannte Sicherheitslücken zu beheben, und haben nach den einfachsten und klarsten Maßnahmen gesucht, die Sie dafür ergreifen müssen. Schließlich konnten wir den Prozess auf 4 Schritte reduzieren, die sich in allen Umgebungen bewährt haben – von npm und Maven bis hin zu Infrastructure-as-Code-Tools wie Chef und Puppet.

In diesem Beitrag erklären wir die Schritte und zeigen, wie Sie sie mit Snyk für npm umsetzen. Die Snyk-Beispiele konzentrieren sich zwar auf das Testen von Anwendungen mit GitHub, doch Sie können diese Schritte auch mit der Snyk CLI durchführen.

Die Schritte

Unabhängig von Ihren Tools oder Ihrer Umgebung sollten Sie die folgenden Schritte ausführen, um bekannte Sicherheitslücken in Ihren Abhängigkeiten zu beheben:

  1. Finden Sie die anfälligen Abhängigkeiten

  2. Beheben Sie die Sicherheitslücken

  3. Verhindern Sie das Hinzufügen neuer anfälliger Pakete

  4. Reagieren Sie schnell und effizient auf neu bekannt gewordene Sicherheitslücken.

Mit den ersten beiden Schritten erreichen Sie einen Zustand ohne Sicherheitslücken. Beide sind notwendig: Probleme zu finden, ohne sie zu beheben, bringt wenig. Doch Sie können keine Probleme beheben, von denen Sie nichts wissen. Es ist entscheidend, das Beheben einfach zu machen, denn Warnungen, auf die sich nicht leicht reagieren lässt, werden nur allzu leicht ignoriert. Tools müssen daher nicht nur das Beheben unterstützen, sondern es auch besonders einfach machen.

Wenn keine Sicherheitslücken mehr vorhanden sind, helfen Ihnen die nächsten 2 Schritte dabei, diesen Zustand beizubehalten, während sich Ihr Code weiterentwickelt und neue Sicherheitslücken bekannt werden. Sowohl Ihre Anwendung als auch der öffentliche Kenntnisstand zu Sicherheitslücken entwickeln sich ständig weiter. Deshalb brauchen Sie eine kontinuierliche Lösung für dieses Problem.

1) Sicherheitslücken in Ihren Repositories finden

Im ersten Schritt testen Sie alle Ihre Projekte auf bekannte Sicherheitslücken.

Bei Snyk erhalten Sie dafür eine zentrale Ansicht, in der Sie alle Ihre Repositories testen können. Klicken Sie einfach auf „Meine Repositories testen“ auf dieser Blogseite oder auf unserer Testseite. Anschließend sehen Sie eine Übersicht der Sicherheitslücken in allen Ihren Repositories, die npm verwenden.

Für jedes Repository, das npm verwendet, erfasst Snyk die Abhängigkeiten und gleicht sie mit unserer Open-Source-Datenbank für Sicherheitslücken ab. Sicherheitslücken werden zur einfachen Priorisierung als kritisch, mittel oder niedrig eingestuft. Über die Links können Sie detaillierte Testberichte aufrufen.

GitHub-Repository-Dashboard mit Repository-Liste, Anzahl der Sicherheitslücken, Testergebnissen und Monitor-Schaltflächen

2) Sicherheitslücken beheben

Bei Projekten mit anfälligen Abhängigkeiten besteht der nächste Schritt ganz klar darin, diese zu beseitigen. Probleme zu finden, hilft Ihnen zwar dabei, Ihr aktuelles Risiko einzuschätzen, doch letztlich möchten Sie die Probleme beheben. Es ist entscheidend, in Tools zu investieren, die das Beheben vereinfachen. Andernfalls stumpfen Sie schnell gegenüber diesen Fehlern ab und ignorieren sie. Dasselbe passiert bei Linting, Performance-Tests und anderen Qualitätstests.

Bei Snyk konzentrieren wir uns vor allem darauf, das Beheben einfach zu machen. Mit einer einfachen Schaltfläche „Beheben“ werden automatisch die erforderlichen Codeänderungen erstellt, um die Sicherheitslücken zu beseitigen. Klicken Sie dazu im oben erwähnten Bildschirm auf „Überwachen“ für ein Repository und rufen Sie anschließend die Snyk-Projektseite auf (über „Projekt anzeigen“). Oben rechts finden Sie die Schaltfläche „Sicherheitslücken beheben“. Sie erstellt einen Pull Request mit den minimal erforderlichen Änderungen, damit Sie das Problem beheben und wieder Code schreiben können.

Um Probleme zu beheben, sucht Snyk zunächst nach dem kleinsten direkten Upgrade, mit dem Sie eine nicht anfällige Version des betreffenden Pakets erhalten. Gibt es kein solches Upgrade, versucht Snyk, die Sicherheitslücke mithilfe von Open-Source-Patches aus unserer Vulnerability DB zu beheben.

GitHub-Pull-Request vom Snyk-Bot mit vorgeschlagenen Fixes für acht Pfade mit anfälligen npm-Abhängigkeiten

"features-alert.png3) Das Hinzufügen anfälliger Pakete verhindern

Sicherheit ist wie Qualität ein kontinuierlicher Prozess. Sobald keine Sicherheitslücken mehr vorhanden sind, müssen Sie dafür sorgen, dass bei der Weiterentwicklung Ihres Projekts keine neuen anfälligen Abhängigkeiten hinzukommen. Und wie bei jedem anderen Qualitätsproblem gilt: Je früher Sie einen solchen Fehler entdecken, desto einfacher und kostengünstiger lässt er sich beheben.

Probleme frühzeitig zu erkennen bedeutet, sie in Ihre kontinuierlichen Tests aufzunehmen. Das heißt in der Regel, Tests während der CI oder als Teil eines GitHub-Pull-Requests auszuführen.

Wenn Sie ein GitHub-Projekt mit Snyk integrieren (indem Sie auf die oben erwähnte Schaltfläche „Überwachen“ klicken), fügt Snyk seine Tests auch zu den Prüfungen Ihrer Pull Requests hinzu. Wenn Entwickler einen Pull Request erstellen, testet Snyk ihre Änderungen und prüft, ob dadurch die Anwendung anfällig wird. Ist das der Fall, schlägt der Test eindeutig fehl und zeigt, was Sie dagegen tun können.

Pull-Request-Prüfungen zeigen, dass alle Prüfungen aufgrund eines anfälligen Pfads fehlgeschlagen sind, während der Branch keine Konflikte mit dem Basis-Branch aufweist.

Tests in Pull Requests machen anfällige Pakete gut sichtbar, ohne den Arbeitsablauf zu behindern (Sie können den Schwellenwert konfigurieren). So können Teammitglieder versehentliche Fehler früh erkennen. Außerdem können Open-Source-Projekte damit sicherstellen, dass Beiträge keine Sicherheitsprobleme enthalten. Pull-Request-Tests blockieren in der Regel nicht. Wenn Sie es eilig haben und die Konsequenzen bedacht haben, können Sie eine Änderung mit Sicherheitslücken also trotzdem zusammenführen.

4) Auf neue Sicherheitslücken reagieren

Bei diesem letzten Schritt unterscheidet sich Sicherheit ein wenig von anderen Qualitätsaspekten. In den meisten Fällen entstehen neue Fehler nur, wenn Sie Ihren Code ändern. Bekannte Sicherheitslücken können dagegen auch dann auftreten, wenn Ihr Code unverändert geblieben ist.

Regelmäßig werden neue Sicherheitslücken bekannt, die zuvor unbekannte Schwachstellen in Ihrer Anwendung aufdecken. Diese Schwachstellen waren schon immer in Ihrer Anwendung und ihren Abhängigkeiten vorhanden. Sobald sie jedoch bekannt werden, steigt die Wahrscheinlichkeit deutlich, dass Angreifer sie ausnutzen. Damit Sie geschützt bleiben, brauchen Sie eine Lösung, mit der Sie schnell und effizient von neu bekannt gewordenen Sicherheitslücken erfahren und diese beheben können, bevor Angreifer sie ausnutzen.

Bei Snyk möchten wir auch diese Reaktion vereinfachen. Wenn Sie die GitHub-Integration verwenden, merkt sich Snyk die Abhängigkeiten Ihrer Anwendung und verfolgt außerdem Änderungen an Ihrer package.json im Laufe der Zeit. Wird eine neue Sicherheitslücke bekannt und in unsere Datenbank aufgenommen, prüft Snyk, ob Ihr Projekt betroffen ist. Ist das der Fall, benachrichtigen wir alle Mitglieder Ihrer Snyk-Organisation per E-Mail. Zusätzlich erstellen wir automatisch einen Beheben-Pull-Request, sodass Ihnen ein weiterer Schritt erspart bleibt.

Snyk-E-Mail mit einer Warnung zu Sicherheitslücken: Sie zeigt zwei Projekte mit Befunden zu Command Injection und Regular Expression Denial of Service sowie Optionen zur Behebung.

Alle Ihre Projekte schützen

Bei einem Test ist es verlockend, nur die Projekte zu betrachten, die aktuell anfällige Abhängigkeiten enthalten. Tatsächlich müssen nur diese Projekte den zweiten Schritt durchlaufen: das Beheben.

Denken Sie jedoch daran: Nur weil ein Projekt heute nicht anfällig ist, heißt das nicht, dass es morgen nicht anfällig sein wird. Überwachen Sie alle Ihre Projekte, damit Sie neue anfällige Abhängigkeiten erkennen und entsprechend verhindern oder auf sie reagieren können.

Zusammenfassung

Das war’s. Mit diesen 4 Schritten sind Sie gut aufgestellt, um anfällige Abhängigkeiten zu beheben. Bei npm-Abhängigkeiten macht Snyk die Umsetzung besonders einfach. Für andere Plattformen können Sie die Tools Ihrer Wahl einsetzen, sofern es sie gibt. Achten Sie aber darauf, alle vier Schritte durchzuführen.

Legen Sie jetzt los – klicken Sie einfach auf „Meine Repositories testen“!

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.

Weiterlesen

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

Blog

Warum KI-Coding-Agenten immer wieder fehlerhafte Zugriffskontrollen schreiben

KI-Coding-Agenten können Autorisierungslogik erzeugen, die kompiliert und die Prüfung besteht, dabei aber die Daten eines Mandanten für einen anderen offenlegt. Erfahren Sie, warum fehlerhafte Zugriffskontrollen schwer zu erkennen sind und wie Sie sie verhindern.