Software-Supply-Chain

CI/CD-Sicherheit für die Software-Supply-Chain: Pipelines nutzen, um Pipelines zu härten

CI/CD-Sicherheit für die Software-Supply-Chain: Pipelines nutzen, um Pipelines zu härten

CI/CD-Schwächen und Risiken für die Software-Lieferkette

Da die Systeme für die Bereitstellung von Software in der Cloud immer komplexer werden und auf Komponenten von Drittanbietern angewiesen sind, bieten sie auch mehr Möglichkeiten für Angriffe. Allein im letzten Jahr ist die Zahl der Angriffe auf die Software-Supply-Chain um 51 Prozent gestiegen , was ein Beweis dafür ist, dass kriminelle (und kreative) Akteure diese Schwächen ausnutzen.

Software-Lieferketten sind nur so stark wie ihr schwächstes Glied, wie Palo Alto Networks erklärt. CI/CD-Pipelines (Continuous Integration/Delivery) sind die neuesten Angriffsvektoren, die von unbedarften DevOps-Teams anfällig gemacht werden. Schon eine einzige CI/CD-Fehlkonfiguration kann vertrauliche Informationen preisgeben und dann als Einstiegspunkt für das Einschleusen von bösartigem Code und den Abfluss vertraulicher Daten genutzt werden. Letztendlich kann dies die gesamte CI/CD-Pipeline und die Software-Lieferkette beeinträchtigen.

Ein kürzlich veröffentlichter Unit 42 Cloud Threat Report von Palo Alto Networks ergab, dass zu freizügige Zugangsdaten Möglichkeiten für laterale Bewegungen und die Vergiftung von CI/CD-Pipelines schaffen. Darüber hinaus haben die Forscher festgestellt, dass 63 Prozent der Infrastruktur-as-Code-Vorlagen (IaC) Fehlkonfigurationen enthalten und 91 Prozent der Container-Images hohe oder kritische Sicherheitslücken aufweisen.

CI/CD und die Software-Lieferkette

Cloud-native Software-Lieferketten kombinieren Softwarekomponenten von Drittanbietern wie Open-Source-Pakete und IaC-Module sowie die zugrundeliegenden Bereitstellungspipelines, die für die Speicherung, Verwaltung und Bereitstellung von Software erforderlich sind. Diese Bereitstellungspipelines, wie z. B. Git-Repositorys und CI/CD-Pipelines, sind das Lebenselixier agiler Teams.

Die mehrmalige Bereitstellung von Software pro Tag ist nicht mehr eine Leistung, die nur von Unternehmen wie Netflix und Google erbracht wird. Die einzige Möglichkeit, auf dem heutigen Markt wettbewerbsfähig zu bleiben, besteht darin, schnell leistungsfähige, zuverlässige und sichere Software bereitzustellen. Das geht am besten mit einer gut funktionierenden CI/CD-Pipeline.

CI/CD-Pipelines führen eine Reihe von Funktionen aus, um Komponenten zu kompilieren, die Infrastruktur bereitzustellen und Tests auszulösen, um sicherzustellen, dass der neue Code keine bestehenden Funktionen beschädigt und dass die neuen Funktionen korrekt funktionieren. Mit DevSecOps-Praktiken ermöglichen CI/CD-Pipelines den Sicherheitsteams auch die Durchsetzung bewährter Sicherheitspraktiken vor dem Zusammenführen mit einer Codebasis und ein letztes Mal vor der Bereitstellung. „Shift Left“-Security zielt darauf ab, Entwickler in die Lage zu versetzen, sich noch früher im Entwicklungszyklus mit dem Thema Sicherheit zu befassen. CI/CD-Pipelines hingegen bieten die zentralisierte Automatisierung, die für die Aufrechterhaltung der Best Practices für Infrastruktur- und Anwendungssicherheit erforderlich ist.

CI/CD-Schwächen und Risiken für die Software-Lieferkette

So leistungsfähig CI/CD-Pipelines auch sind, um die Qualität und Sicherheit der Anwendungen zu gewährleisten, bevor sie bereitgestellt werden, so sorgfältig müssen sie auch konfiguriert werden. Zudem muss festgelegt werden, welches Benutzerverhalten zulässig ist und welches nicht. Eine unzureichende Überwachung in diesem Bereich kann zu einem unkontrollierten Zugriff auf unternehmenskritische Dienste und Infrastrukturen führen. Dies ermöglicht es Angreifern, sensible Daten auszuspähen oder bösartigen Code oder Skripte einzuschleusen.

Einige häufige CI/CD-Schwachstellen, auf die Unternehmen achten sollten, sind:

  • Zulassen der Verwendung veralteter Befehle/Beta-Funktionen.
  • Exfiltration von Geheimnissen durch die Verwendung von ungeschützten Befehlsausführungen.
  • Nichtverhindern von Netzwerkaufrufbefehlen, die zur Code-Injektion verwendet werden können.
  • Erlauben der Ausführung von Tests in privilegierten Pods, die für bösartige Zwecke missbraucht werden können.
  • Verwendung beliebiger und anfälliger Images für die Ausführung von Builds und Tests, was sie für Poisoning und Angriffe anfällig macht.

Palo Alto Networks empfiehlt Absicherung von Pipelines mit Pipelines

Es ist bekannt, dass Softwarebereitstellungspipelines Möglichkeiten für Poisoning und Cyberangriffe bieten. Gleichzeitig sind CI/CD-Pipelines entscheidend für die Bereitstellung sicherer Softwarekomponenten. Warum also nicht denselben Ansatz, den man für die Sicherung von Anwendungs- und Infrastrukturcode in Pipelines verfolgt, auch für die Sicherung der Pipelines selbst nutzen?

Ähnlich wie beim Auffinden und Beheben von Schwachstellen und Fehlkonfigurationen während des gesamten Entwicklungsprozesses führt die Fähigkeit, Fehlkonfigurationen in CI-Pipelines zu erkennen, zu einer verbesserten Sicherheitslage in der Software-Lieferkette. Da CI-Pipelines im Code konfiguriert werden, können Unternehmen den gleichen „Policy-as-Code“-Ansatz wie bei der Identifizierung von IaC-Fehlkonfigurationen oder Open-Source-Schwachstellen nutzen, um CI/CD-Schwachstellen aufzudecken. Die Kennzeichnung verdächtiger Codierungsmuster im Pipeline-Code als Pull-Request, der zur Bearbeitung des Pipeline-Codes geöffnet wird, kann viele der oben genannten Schwachstellen verhindern.

Automatisierung in Verbindung mit menschlichen Überprüfungen kann einen Entwickler darauf hinweisen, wenn er versucht, einen veralteten Befehl zu einer Pipeline hinzuzufügen, während er seinen Pipeline-Code schreibt. Ebenso kann ein Maintainer darauf hingewiesen werden, wenn ein Angreifer eine Pull-Anfrage öffnet, um den Pipeline-Code zu bearbeiten, der einen geheimen Exfiltrationsbefehl enthält. Durch die Verlagerung nach links („shift left“) können Sicherheits- und DevOps-Teams zusammenarbeiten, um Pipelines proaktiv zu härten, indem sie die vorhandenen Tools und Frameworks nutzen, aus denen CI/CD-Pipelines bestehen.

Weitere Best Practices zur Sicherung der Software-Lieferkette finden sich in der Software Supply Chain Security Checklist .