Automatisierte Behebung von Schwachstellen in Python-Abhängigkeiten mit Snyk
26. Februar 2020
0 Min. LesezeitWir freuen uns, den verbesserten Support für Python in Snyk Open Source anzukündigen. Damit können Entwickler Schwachstellen in Abhängigkeiten mithilfe automatisch erstellter Pull Requests zur Fehlerbehebung beheben!
Der Python Packaging Index (PyPI) verzeichnete 2018 mehr als 14 Milliarden Downloads – eine beeindruckende Zahl, ganz gleich, wie man es betrachtet. (Aufgrund eines Fehlers im PyPI-Statistikdienst zur Jahresmitte dürfte die tatsächliche Zahl noch deutlich höher liegen.) Diese Zahl spiegelt nicht nur die weitverbreitete Nutzung von Python als Programmiersprache wider (heute die Nummer 2 laut GitHub), sondern auch die Herausforderung beim Einsatz von Open-Source-Software: Viele dieser Pakete binden anfällige Abhängigkeiten in Projekte ein, sowohl direkte als auch indirekte. Snyk hat im vergangenen Jahr über einige Beispiele berichtet, darunter auch über schädliche Pakete.
Mit dieser neuesten Erweiterung unterstützt Snyk Open Source Python-Entwickler dabei, sicherere Apps zu entwickeln: Das Tool findet nicht nur anfällige Abhängigkeiten, sondern stellt auch automatisierte Schritte zur Behebung bereit – direkt in den bestehenden Entwicklungs-Workflows. Dazu erstellt Snyk auf Grundlage der Datei requirements.txt in einem pip-Projekt einen Abhängigkeitsbaum. Diese Abhängigkeiten werden anschließend mit der Snyk-Schwachstellendatenbank abgeglichen. Wird ein neuer, behebbarer Fehler gefunden, wird automatisch ein Pull Request zur Fehlerbehebung ausgelöst.
Python-Projekte importieren
Snyk bietet zahlreiche Integrationen für Git-basierte Code-Repositories, darunter GitHub, GitHub Enterprise, GitLab, Bitbucket Server und Bitbucket Cloud. So können Sie Sicherheitslücken und Lizenzprobleme in Ihren Python-Projekten und als Teil Ihrer Codeverwaltungs- und Entwicklungs-Workflows ganz einfach testen, überwachen und beheben.
Sehen wir uns an, wie das bei einer Python-Beispielanwendung funktioniert, die in GitHub verwaltet wird.
In diesem Beispiel haben wir uns bereits mit unseren GitHub-Zugangsdaten bei Snyk angemeldet. Snyk hat die Integration daher automatisch eingerichtet und zeigt nun eine Liste aller verfügbaren Repositories an.

Wählen Sie auf der Seite Import das Python-Projekt aus, das Snyk scannen soll, und klicken Sie auf Add selected repositories. Snyk scannt alle ausgewählten Repositories nach Manifestdateien und importiert eine Momentaufnahme jeder Datei als separate Datei.
Die Seite Projects wird angezeigt. Sobald Snyk den Import des Python-Projekts abgeschlossen hat, erscheint oben auf der Seite eine Erfolgsmeldung mit der Aufforderung, die Seite zu aktualisieren. Nach der Aktualisierung sehen Sie Ihr Python-Projekt am Python-Logo erkennbar in der Liste – zusammen mit allen anderen Projekten, die Sie möglicherweise integriert haben.

Wie die Zahlen in diesem Beispiel zeigen, hat Snyk mehrere Schwachstellen im importierten Projekt gefunden. Um sie genauer zu untersuchen, wählen Sie in der Projektliste die Python-App aus, um sie aufzuklappen, und klicken Sie dann auf den angezeigten Link requirements.txt.
Nun wird Ihnen ein vollständiger Scanbericht für Ihr Projekt angezeigt.

Oben auf der Seite werden verschiedene Metadaten zu unserem Projekt angezeigt, darunter die Anzahl der gefundenen Schwachstellen und die Anzahl der Pfade, über die diese Schwachstellen eingeführt werden.
Außerdem erhalten wir Empfehlungen zur Behebung, die Maßnahmen zur Behebung einiger der gefundenen Probleme vorschlagen (ebenfalls eine ganz neue Funktion – dazu bald mehr!). In diesem Fall behebt ein Upgrade der Flask-Abhängigkeit von Version 0.12.3 auf Version 0.12.3 zwei Probleme mit hohem Schweregrad.

Fix-PRs
Weiter unten werden alle in Ihren Abhängigkeiten gefundenen Schwachstellen zusammen mit kontextbezogenen Informationen angezeigt. Diese helfen Ihnen, das Problem zu priorisieren und bei Bedarf mit der Behebung zu beginnen.

Mit den verschiedenen Filtern auf der linken Seite können Sie zwischen den gefundenen Problemen navigieren. Sie können zum Beispiel nach Schweregrad filtern, um zuerst Schwachstellen mit hohem Schweregrad zu beheben, oder nach Ausnutzungsreife – einem Hinweis darauf, wie gefährlich eine Schwachstelle tatsächlich ist (mehr zur Ausnutzungsreife erfahren Sie hier).
Für Schwachstellen, für die Snyk einen Fix gefunden hat, können Sie direkt in Snyk einen Pull Request erstellen, indem Sie einfach auf Fix this vulnerability klicken.

Dank des erweiterten Python-Supports werden Pull Requests für neue Schwachstellen entsprechend Ihrer Konfiguration ebenfalls automatisch ausgelöst (weitere Informationen dazu weiter unten). Von Snyk erstellte Pull Requests enthalten kontextbezogene Informationen. Sie erfahren, warum der Pull Request ausgelöst wurde, welche Änderungen der Fix an Ihren Abhängigkeiten vornimmt und weitere Einzelheiten zur Schwachstelle, die damit behoben werden soll.

Test-PRs
Jeder neue Pull Request mit Änderungen an der Datei requirements.txt wird automatisch getestet, damit keine neuen Sicherheitslücken in Ihr Projekt gelangen. Werden Schwachstellen gefunden, schlägt der Sicherheitstest für den Pull Request fehl. Sie können dann entscheiden, ob Sie den Pull Request trotzdem zusammenführen möchten.

All diese hilfreiche Automatisierung lässt sich konfigurieren. Sowohl Test- als auch Fix-PRs können deaktiviert werden. Bei Test-PRs können Sie außerdem die Bedingungen für einen Fehlschlag festlegen.

Security für Entwickler – mit Snyk
Anfällige Abhängigkeiten im Blick zu behalten, lässt sich leicht als eine der wichtigsten Best Practices für Python-Sicherheit bezeichnen. Leichter gesagt als getan, oder? Weil sich Drittanbieter-Code so einfach in Projekte einbinden lässt und Open Source immer beliebter wird, wird es zunehmend schwieriger, Transparenz und Kontrolle über diesen Code zu erlangen.
Snyk wurde entwickelt, um Entwicklern bei dieser Herausforderung zu helfen: mit einem entwicklerfreundlichen Tool, das sich nativ in bestehende Workflows integrieren lässt und den Prozess zum Auffinden und Beheben von Schwachstellen in Open-Source-Abhängigkeiten automatisiert.
Die automatisierte Behebung für Python ist in allen Snyk Open Source-Plänen enthalten, auch in unserem Free-Plan mit unbegrenzten Scans für Open-Source-Projekte. Um es auszuprobieren, registrieren Sie sich über den Link unten für ein Konto und beginnen Sie mit dem Testen. Diese Ressourcen helfen Ihnen in der Zwischenzeit dabei, Ihre Python-Projekte abzusichern:
Programmieren Sie sicher!
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.