• Software-Modernisierung

Sicherheitsupdates mit Renovate: Dependencies sicher und compliant halten

Unsere Applikationen beinhalten oft eine Vielzahl an Libraries – diese aktuell zu halten gehört selten zu den Lieblingsaufgaben von Entwickler:innen. Dabei entstehen Sicherheitsrisiken, wenn Abhängigkeiten (Dependencies) nicht rechtzeitig aktualisiert werden. Sicherheitslücken (Vulnerabilities)  in solchen Abhängigkeiten können dazu führen, dass Anwendungen angreifbar werden und Compliance-Anforderungen verletzt werden.

Renovate

Renovate ist ein Tool, das genau hier unterstützt: Es automatisiert das Aktualisieren von Abhängigkeiten. Der Code wird gescannt, Abhängigkeiten werden identifiziert und Updates automatisch durchgeführt, indem Pull Requests angelegt werden. So können Entwickler:innen ohne großen Aufwand ihre Applikationen aktuell halten und gleichzeitig sicherstellen, dass diese den neuesten Sicherheitsstandards entsprechen und Compliance-Vorgaben erfüllen.

Je nachdem, wie viele Abhängigkeiten verwendet werden, kann es zu einer großen Anzahl an Pull Requests kommen. Um den Aufwand zu reduzieren, lässt sich Renovate flexibel konfigurieren, beispielsweise so, dass nur große Updates berücksichtigt werden.

Aber wie können wir sicherstellen, dass Sicherheitsupdates auch bei kleinen Patches durchgeführt werden? Und was ist, wenn eine Sicherheitslücke bekannt wird, die sofort behoben werden muss?

Renovate bietet hierfür zwei Möglichkeiten:

1. VulnerabilityAlerts

Diese Option ist nur auf GitHub verfügbar. Durch die Aktivierung der vulnerabilityAlerts in der Renovate-Konfiguration werden GitHub Dependabot Alerts verwendet, um Abhängigkeiten mit Sicherheitslücken zu identifizieren. Diese Abhängigkeiten werden dann von Renovate auf eine Version aktualisiert, in der die Sicherheitslücke behoben ist. 

Um die Option zu aktivieren, müssen in den GitHub-Einstellungen Dependabot Alerts und Dependency graph aktiviert und folgendes Snippet zur Konfigurationsdatei hinzugefügt werden:

vulnerabilityAlerts erlaubt noch weitere Konfigurationsmöglichkeiten, wie beispielsweise 

  • vulnerabilityFixStrategy: soll auf die nächsthöhere Version ohne Sicherheitslücke oder auf die neueste Version aktualisiert werden?
  • Assignees: Pull Request wird direkt einer Person zugewiesen

Die Sicherheitsupdates werden durch das Aktivieren der vulnerabilityAlerts immer ausgeführt, selbst wenn laut Konfiguration für diese Abhängigkeit kein Update durchgeführt werden soll. Leider werden Sicherheitslücken in transitiven Abhängigkeiten nicht erkannt, und bei Dockerfiles funktioniert das Aktualisieren von älteren oder vulnerablen Versionen nur beschränkt.

2. OsvVulnerabilityAlerts (experimentell)

Bei den osvVulnerabilityAlerts handelt es sich derzeit noch um ein experimentelles Feature, welches ähnlich funktioniert wie die bereits vorgestellten vulnerabilityAlerts. Allerdings sind osvVulnerabilityAlerts nicht auf GitHub beschränkt, da die Sicherheitslücken von der OSV-Datenbank (siehe Vulnerability database) abgefragt werden.

Die folgende Konfiguration aktiviert osvVulnerabilityAlerts:

Wichtig ist, dass vulnerabilityAlerts ebenfalls aktiviert werden. Sonst würden Updates nur dann durchgeführt werden, wenn die restliche Konfiguration dies erlaubt.

Wie schon bei den vulnerabilityAlerts werden nur Sicherheitslücken in direkten Abhängigkeiten erkannt und eigene Dockerfiles werden nur unzureichend aktualisiert. Außerdem erkennt Renovate mit osvVulnerabilityAlerts nur Sicherheitslücken für Abhängigkeiten in crate, go, hex, maven, npm, nuget, packagist, pypi und rubygems.

Fazit

Renovate ist ein mächtiges Werkzeug, um Abhängigkeiten aktuell zu halten und Sicherheitslücken zu schließen

OsvVulnerabilityAlerts sind eine gute Möglichkeit, um viele Sicherheitslücken in verwendeten Abhängigkeiten zeitnah zu schließen und so die Sicherheit unserer Applikationen zu erhöhen. Falls sich das Repository auf GitHub befindet, ist die Aktivierung der vulnerabilityAlerts ebenfalls zu empfehlen.

Da durch Renovate nicht alle Sicherheitslücken erkannt und aktualisiert werden, kann es Sinn machen weitere Tools wie dependency-check-maven oder grype zu verwenden.

DIY oder Service?

In der heutigen Zeit ist nicht mehr die Frage, ob man Security Update macht, sondern nur wie und wie schnell.

Und ja, Tools wie renovate unterstützen dich dabei, aber schlussendlich musst du das Tool konfigurieren und laufend die Pull Requests reviewen und mergen.

Wenn du das „as a Service“ haben willst, schau dir unser Auto-Update Service gerne näher an.

geschrieben von:
Sabrina
WordPress Cookie Plugin von Real Cookie Banner