Skip to main content

Dependency Health – Paketrisiken mit Snyk bewerten

Artikel von
Headshot of Anna Debenham

Anna Debenham

16. Mai 2019

0 Min. Lesezeit

Snyk möchte Ihnen dabei helfen, Open Source sicher zu nutzen. Sicherheitslücken sind ein Indikator dafür, dass eine Abhängigkeit problematisch ist, aber es gibt noch weitere Risikofaktoren.

Deshalb arbeitet ein ganzes Team daran, Snyk zur zentralen Anlaufstelle für Informationen zu Ihren Abhängigkeiten zu machen – von Sicherheits- und Lizenzinformationen bis hin zu Informationen zum Zustand.

In diesem Monat haben wir die erste Phase unserer Initiative Dependency Health gestartet. Sie soll Entwicklerinnen und Entwicklern dabei helfen, mögliche Risiken bei den Abhängigkeiten in ihrem Code zu erkennen.

Kategorien für Zustandsrisiken

Die neuen Risikoinformationen umfassen:

  • Einen Hinweis auf veraltete Pakete

  • Datum der Erstveröffentlichung des Pakets (Reifegrad)

  • Datum der letzten Aktualisierung des Pakets (Aktivität)

  • Nur in Berichten: der Unterschied zwischen der aktuellen und der neuesten Paketversion (Veraltetheit)

Hier finden Sie weitere Informationen zu den neuen Daten:

Problemstatus – ist dieses Paket veraltet?

Bei npm wird eine Abhängigkeit als „veraltet“ gekennzeichnet, wenn die Maintainerin oder der Maintainer sie nicht mehr aktualisiert. Diese Pakete kennzeichnen wir jetzt auf snyk.io im Tab „Dependencies“ Ihrer Berichte mit einem Warnsymbol. Außerdem haben wir einen Filter hinzugefügt, mit dem Sie sich ausschließlich veraltete Pakete anzeigen lassen können.

Abhängigkeitsbericht mit geöffnetem Filtermenü. Angezeigt werden Projekttypen und der Status „Dependency Health“ mit der Einstellung „Deprecated“.

Außerdem haben wir auf der jeweiligen Paket-Seite einen Warnhinweis ergänzt, wenn die neueste Paketversion veraltet ist:

Paketseite zu Sicherheitslücken in cryptiles, als veraltet gekennzeichnet, mit der Beschreibung „Allgemeine Kryptografie-Hilfsprogramme“ und erkannten BSD-Lizenzen.

Beispiele für Pakete mit diesem Warnhinweis sind cryptiles, node-uuid und hoek.

Reifegrad – wann wurde dieses Paket erstmals veröffentlicht?

Als wir unsere Community gefragt haben, was bei der Installation eines neuen Pakets ein Warnsignal wäre, nannten viele zuerst den Reifegrad: Sie wollten wissen, ob es das Paket schon länger gibt. Wurde es erst letzte Woche veröffentlicht, würden sie es wahrscheinlich nicht installieren. Eine Erstveröffentlichung vor mehr als einem Jahr würde für sie auf einen höheren Reifegrad hindeuten. Andererseits könnten manche Pakete fälschlicherweise als „ausgereift“ gelten, weil es sie schon lange gibt, obwohl nur eine Version veröffentlicht wurde. Deshalb zeigen wir auch die neueste semantische Version (SemVer) an. Liegt sie unter einem Wert wie 0.1.0, könnte das darauf hindeuten, dass das Paket noch nicht ausgereift ist und Sie mit der Verwendung besser noch warten sollten. Diese Daten zeigen wir jetzt im Bericht an:

Abhängigkeitstabelle mit den neuesten Versionen und letzten Veröffentlichungsdaten von Paketen wie onetime, rc, restore-cursor und snyk-tree.

Diese Daten zeigen wir auch auf der Paket-Seite an:

Snyk Vulnerability DB-Seite für das npm-Paket validator mit Details zur String-Validierung und -Bereinigung sowie Versionsinformationen

Aktivität – wird das Paket noch gepflegt?

Auch das Datum der letzten Veröffentlichung gibt Aufschluss darüber, wie aktiv ein Paket ist. Viele Pakete sind praktisch archiviert, wurden aber von den Maintainerinnen und Maintainern nicht ausdrücklich als solche gekennzeichnet. Ein Paket, das beispielsweise seit mehr als zwölf Monaten nicht aktualisiert wurde, wird wahrscheinlich auch künftig keine Updates erhalten. Vielleicht handelt es sich um eine Bibliothek für einen bestimmten Zweck, deren Entwicklung abgeschlossen ist. Werden ihre Abhängigkeiten jedoch nicht aktualisiert, stellt sie ein höheres Risiko dar.

Aktualität – sind Updates verfügbar?

Wenn Sie immer die neueste Version verwenden möchten, zeigen wir jetzt einen Vergleich zwischen der Abhängigkeitsversion, die Sie in Ihren Projekten installiert haben, und der neuesten verfügbaren Version desselben Pakets (Alpha- und Vorabversionen ausgenommen).

Abhängigkeitstabelle mit hervorgehobenen Spalten für Version und neueste Version sowie veralteten Paketen wie cryptiles, hoek, hawk, accept und ammo.

Da sich diese Daten direkt auf Ihre Projekte beziehen, sind sie nur im Berichtsbereich von Snyk sichtbar.

Mit Snyk die Qualität weiterhin bewerten

Eine Bewertung mit 4,5 Sternen wäre kein verlässlicher Hinweis auf ein Qualitätsprodukt, wenn sie nur auf einer einzigen Rezension beruhte. Genauso sollten Daten zum Zustand einer Abhängigkeit immer im größeren Zusammenhang betrachtet werden. Deshalb erweitern wir unsere Datenbank um verschiedene Qualitätsindikatoren, damit unsere Kundinnen und Kunden Risiken besser prüfen und fundiertere Entscheidungen treffen können. Wir empfehlen, jedes Paket in seinem Gesamtzusammenhang zu betrachten – es kann gute Gründe dafür geben, dass es bei einem einzelnen Messwert schlecht abschneidet.

Und es kommt noch viel mehr …

In den kommenden Monaten werden wir die Daten zum Zustand von Abhängigkeiten erweitern und vertiefen: Wir ergänzen weitere Datenpunkte in den bestehenden Kategorien, führen neue Kategorien wie Beliebtheit ein und bieten Richtlinien zur automatisierten Bewertung an.

Erste Schritte

Die Details finden Sie im Tab „Dependencies“ im Berichtsbereich von Snyk (sofern Ihr Snyk-Tarif Berichte umfasst) sowie auf unseren Paket-Seiten, die der gesamten Open-Source-Community zur Verfügung stehen.

Derzeit werden nur Details zu npm-Paketen bereitgestellt. In den Berichten werden diese Daten aktualisiert, sobald Snyk eine neue Momentaufnahme des Projekts erstellt, in dem die Abhängigkeit gefunden wurde (standardmäßig alle 24 Stunden).

Wenn Ihr Tarif den Zugriff auf unsere API umfasst, können Sie mit unserer Dependencies API eigene Berichte skripten. Außerdem können Sie eine CSV-Datei mit all Ihren Abhängigkeiten exportieren, damit Ihr Team problematische Abhängigkeiten priorisieren kann.

Probieren Sie es aus und lassen Sie uns wissen, welche weiteren Daten wir anzeigen sollen.

Starten Sie mit Capture-the-Flag

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