One open source tool to rule them all…

Die unbegrenzte Vielfalt im Cloud-Native-Umfeld bietet viele Möglichkeiten, führt jedoch auch schnell zu grosser Komplexität und einer Vielzahl von Abhängigkeiten. Dass Security hierbei eine wichtige Rolle spielt, ist offensichtlich. Wie wir mit Lagoon den Security-Teilaspekt bezüglich Vulnerabilities in den Griff bekommen, zeigt dieser Blogpost.

DevSecOps in der Cloud

 

 

Befasst man sich mit DevSecOps in einem cloud-basierten Umfeld, begegnet man zwangsläufig Fragen wie diesen:

  • Weiss ich genau, was ich wo einsetze?
  • Gibt es bekannte Vulnerablities, die mich in irgendeiner Form betreffen?
  • Habe ich alte Versionen von Dependencies im Projekt?

All diese Fragen drehen sich hauptsächlich um folgende Komponenten, die wir gerne im Griff haben wollen:

  • Dependencies

    Ein externe Bibliothek – eine sogenannte Abhängigkeit (Dependency) – welche wir mit all ihren Fehlern und weiteren Dependencies in unsere Software einbinden.

  • Basis-Images

    Ein Image bestehend aus System-Bibliotheken, Werkzeugen und Plattformeinstellung, die unsere Software zum Erstellen oder Betreiben benötigt. Es ist enspricht einem Mini-Betriebssystem.

  • Runtime-Images (Container-Image)

    Das gebaute Image, das am Ende der CI/CD-Pipeline bspw. in die Produktion deployed wird. Es beinhaltet das Basis-Image, unsere Anwendung und die externen Dependencies.

Auf unserer Digitalisierungsplattform Lagoon kommt man schnell mal auf eine stattliche Anzahl von Images, Libraries und Frameworks. Dies ohne Unterstützung einer Software zu bewältigen, grenzt an Leichtsinn.

DependencyTrack

Mit dem OpenSource-Tool DependencyTrack der OWASP Foundation haben wir das richtige Instrument gefunden. Das Tool bietet alle nötigen Features und unterstützt jegliche Ökosysteme. Folgende Vorteile sind für uns am wertvollsten:

Visualisierung

Alle Projekte und Vulnerablilities werden einfach und verständlich visualisiert. Pro Projekt (Build) ist ersichtlich, welche Version, zu welchem Zeitpunkt, mit welchen Vulnerabilities gebaut wurde.

Vulnerabilities direkt im Tool auditieren

Bei uns sieht das Vorgehen folgendermassen aus:

  1. Die Vulnerability wird beim Scan des Artefakts in der CI/CD-Pipeline entdeckt
  2. Im Tool wird ersichtlich, welche Libraries betroffen sind
  3. Pro Library wird evaluiert, ob das Projekt effektiv betroffen ist und aktualisiert werden muss
  4. Im Tool wird der Audit-Status pro Library gesetzt und der Scan neugestartet

Mit den Status FALSE_POSITIVE oder NOT_AFFECTED können Vulnerabilitis bewusst unterdrückt werden.

Integration in CI/CD-Pipelines

In der CI/CD-Pipeline wird nach dem Prinzip fail fast zweimal ein Scan durchgeführt. Im ersten Scan werden nur Dependencies betrachet und im zweiten Scan das komplette Container-Image.

Schritt 1 – Dependency Check

Mit CycloneDX erstellen wir von unserem Build-Candidate ein CycloneDX BOM und übergeben dies DependencyTrack. DependencyTrack gibt das Resultat zurück und wir brechen die CI/CD-Pipeline ab, insofern ein projektspezifischer Threshold von Vunerabilites überschritten wird.

Schritt 2 – Image-Scanning

Mit dem CLI-Tool Syft erstellen wir aus dem gebauten Image ein Software Bill of Material (SBOM) und suchen mit Hilfe von DependencyTrack mögliche Vulnerabilities auf Container-Ebene.

Ausblick

In Zukunft wollen wir mit Hilfe des Notification-Feature von DependencyTrack alle bestehenden Images überwachen. Dies wird heute mit automatischen Weekly-Builds sichergestellt. Mit dem Notifications werden neue Vulnerabilities in existierenden Images schneller entdeckt und Risiken früher eliminiert.

Fazit

Mit DependencyTrack haben wir für die Plattform Lagoon ein Instrument gefunden, das dem Anspruch an Sicherheit entspricht. DependencyTrack ist ein mächtiges OpenSource-Tool, welches einfach zu betreiben, bedienen und integrieren ist. Für uns lässt es keine Wünsche offen und falls doch – we contribute!

Die unbegrenzte Vielfalt im Cloud-Native-Umfeld bietet viele Möglichkeiten, führt jedoch auch schnell zu grosser Komplexität und einer Vielzahl von Abhängigkeiten. Dass Security hierbei eine wichtige Rolle spielt, ist offensichtlich. Wie wir mit Lagoon den Security-Teilaspekt bezüglich Vulnerabilities in den Griff bekommen, zeigt dieser Blogpost.

DevSecOps in der Cloud

 

 

Befasst man sich mit DevSecOps in einem cloud-basierten Umfeld, begegnet man zwangsläufig Fragen wie diesen:

  • Weiss ich genau, was ich wo einsetze?
  • Gibt es bekannte Vulnerablities, die mich in irgendeiner Form betreffen?
  • Habe ich alte Versionen von Dependencies im Projekt?

All diese Fragen drehen sich hauptsächlich um folgende Komponenten, die wir gerne im Griff haben wollen:

  • Dependencies

    Ein externe Bibliothek – eine sogenannte Abhängigkeit (Dependency) – welche wir mit all ihren Fehlern und weiteren Dependencies in unsere Software einbinden.

  • Basis-Images

    Ein Image bestehend aus System-Bibliotheken, Werkzeugen und Plattformeinstellung, die unsere Software zum Erstellen oder Betreiben benötigt. Es ist enspricht einem Mini-Betriebssystem.

  • Runtime-Images (Container-Image)

    Das gebaute Image, das am Ende der CI/CD-Pipeline bspw. in die Produktion deployed wird. Es beinhaltet das Basis-Image, unsere Anwendung und die externen Dependencies.

Auf unserer Digitalisierungsplattform Lagoon kommt man schnell mal auf eine stattliche Anzahl von Images, Libraries und Frameworks. Dies ohne Unterstützung einer Software zu bewältigen, grenzt an Leichtsinn.

DependencyTrack

Mit dem OpenSource-Tool DependencyTrack der OWASP Foundation haben wir das richtige Instrument gefunden. Das Tool bietet alle nötigen Features und unterstützt jegliche Ökosysteme. Folgende Vorteile sind für uns am wertvollsten:

Visualisierung

Alle Projekte und Vulnerablilities werden einfach und verständlich visualisiert. Pro Projekt (Build) ist ersichtlich, welche Version, zu welchem Zeitpunkt, mit welchen Vulnerabilities gebaut wurde.

Vulnerabilities direkt im Tool auditieren

Bei uns sieht das Vorgehen folgendermassen aus:

  1. Die Vulnerability wird beim Scan des Artefakts in der CI/CD-Pipeline entdeckt
  2. Im Tool wird ersichtlich, welche Libraries betroffen sind
  3. Pro Library wird evaluiert, ob das Projekt effektiv betroffen ist und aktualisiert werden muss
  4. Im Tool wird der Audit-Status pro Library gesetzt und der Scan neugestartet

Mit den Status FALSE_POSITIVE oder NOT_AFFECTED können Vulnerabilitis bewusst unterdrückt werden.

Integration in CI/CD-Pipelines

In der CI/CD-Pipeline wird nach dem Prinzip fail fast zweimal ein Scan durchgeführt. Im ersten Scan werden nur Dependencies betrachet und im zweiten Scan das komplette Container-Image.

Schritt 1 – Dependency Check

Mit CycloneDX erstellen wir von unserem Build-Candidate ein CycloneDX BOM und übergeben dies DependencyTrack. DependencyTrack gibt das Resultat zurück und wir brechen die CI/CD-Pipeline ab, insofern ein projektspezifischer Threshold von Vunerabilites überschritten wird.

Schritt 2 – Image-Scanning

Mit dem CLI-Tool Syft erstellen wir aus dem gebauten Image ein Software Bill of Material (SBOM) und suchen mit Hilfe von DependencyTrack mögliche Vulnerabilities auf Container-Ebene.

Ausblick

In Zukunft wollen wir mit Hilfe des Notification-Feature von DependencyTrack alle bestehenden Images überwachen. Dies wird heute mit automatischen Weekly-Builds sichergestellt. Mit dem Notifications werden neue Vulnerabilities in existierenden Images schneller entdeckt und Risiken früher eliminiert.

Fazit

Mit DependencyTrack haben wir für die Plattform Lagoon ein Instrument gefunden, das dem Anspruch an Sicherheit entspricht. DependencyTrack ist ein mächtiges OpenSource-Tool, welches einfach zu betreiben, bedienen und integrieren ist. Für uns lässt es keine Wünsche offen und falls doch – we contribute!

Kommentare sind geschlossen.