Zur Beschleunigung der Entwicklung werden automatisierte CI/CD-Pipelines (Continuous Integration/Continuous Delivery) eingesetzt. Es ist großartig, über Trigger oder Zeitpläne zu verfügen, die Ihren Code übernehmen, zusammenführen, erstellen, testen und automatisch versenden. Da sie jedoch auf Geschwindigkeit und Benutzerfreundlichkeit ausgelegt sind, sind die meisten Pipelines nicht grundsätzlich auf Sicherheit ausgelegt. Da die Pipelines normalerweise Zugriff auf das Internet benötigen, um Abhängigkeiten herunterzuladen, und auf Ihre verschiedenen Geheimnisse, um sie in Ihre Produktionsumgebung hochzuladen, bedeutet dies, dass der Angreifer, sobald eine solche Pipeline kompromittiert ist, über eine Vielzahl von Möglichkeiten verfügt, Ihren Betrieb zu stören oder Informationen oder Geheimnisse herausfiltern.
Alle in diesem Artikel vorgestellten Geschichten beschreiben Verstöße in bekannten CI/CD-Tools. Dass die meisten Unternehmen auf solche Tools setzen, bedeutet das, wie viele andere auch Angriffe auf die Software-Lieferkette, alles, was die Bösewichte brauchen, ist, ein einzelnes Ziel zu durchbrechen, um einen großen Explosionsradius zu erhalten.
Werfen wir einen Blick auf einige prominente Geschichten aus den letzten Jahren, die die Schwachstellen dieses Angriffsvektors veranschaulichen. Am Ende des Artikels werde ich unbedingt meine Empfehlungen zur Abhärtung und zum Schutz Ihrer Pipelines geben, unabhängig davon, welche Tools Sie verwenden.
Der CircleCI-Verstoß
Im Januar 2023 veröffentlichte CircleCI, eine kontinuierliche Integrations- und Bereitstellungsplattform, a Sicherheitslücke Dies ermöglichte es einem Angreifer, sich unbefugten Zugriff auf die Infrastruktur des Unternehmens zu verschaffen. Der Angriff wurde durch eine Phishing-E-Mail eingeleitet, die einen Mitarbeiter dazu verleitete, seine Zugangsdaten weiterzugeben, mit denen der Angreifer dann auf die Systeme des Unternehmens zugriff. Der Mitarbeiter nutzte 2FA, aber der Angreifer konnte sich ein Sitzungscookie schnappen, nachdem sich der Mitarbeiter bereits beim System angemeldet hatte, was es ihm ermöglichte, sich als der Mitarbeiter auszugeben und schließlich den Zugriff auf einen Teil der Produktionssysteme von CircleCI zu erweitern.
Der Angreifer hat auf einige Kundendaten zugegriffen, darunter Namen, E-Mail-Adressen und Rechnungsinformationen. Das Unternehmen berichtete, dass auf keinen Code oder geistiges Eigentum zugegriffen wurde und kein Kunde einen unbefugten Zugriff auf seine Konten oder Daten gemeldet habe.
CircleCI reagierte schnell auf den Verstoß, führte eine Untersuchung durch und arbeitete mit Strafverfolgungs- und Cybersicherheitsexperten zusammen, um das Ausmaß des Angriffs zu ermitteln und die Schwachstellen zu beheben, die ihn ermöglichten. Das Unternehmen hat außerdem alle Anmeldeinformationen seiner Mitarbeiter und Kunden zurückgesetzt und zusätzliche Sicherheitsmaßnahmen implementiert, beispielsweise eine verstärkte Überwachung seiner Systeme.
DevOps gestört: Die Argo CD-Sicherheitslücke
Argo CD ist ein beliebtes Open-Source-Tool für die kontinuierliche Bereitstellung von Anwendungen in Kubernetes-Clustern. Im Februar 2022 wurde a In Argo CD wurde eine neue Sicherheitslücke entdeckt Dies ermöglichte nicht authentifizierten Benutzern den Zugriff auf vertrauliche Informationen über vom Tool verwaltete Kubernetes-Anwendungen. Die Sicherheitslücke wurde durch eine Fehlkonfiguration im API-Server von Argo CD verursacht, die es nicht autorisierten Benutzern ermöglichte, Anfragen an die API auszuführen und Informationen wie Geheimnisse, Konfigurationen und Anwendungsmetadaten abzurufen. Solange der Angreifer die Berechtigung zum Erstellen oder Aktualisieren von Anwendungen hatte und den vollständigen Pfad zu einer Datei mit gültigem YAML kannte oder erraten konnte, konnte er ein bösartiges Helm-Diagramm erstellen und so lange YAML-Dateien als Werte nutzen, bis er ein saftiges Datenstück gefunden hatte wäre normalerweise nicht zugänglich.
Der Schwachstelle wurde ein CVSS-Score von 7.5 (Hoher Schweregrad) zugewiesen und sie betraf alle Versionen von Argo CD bis einschließlich Version 2.1.4. Argo CD hat einen Patch für die Schwachstelle in Version 2.1.5 veröffentlicht und Benutzern wurde empfohlen, so bald wie möglich ein Upgrade auf diese Version durchzuführen.
Die Sicherheitslücke wurde als besonders besorgniserregend eingestuft, da Argo CD häufig zur Verwaltung kritischer Anwendungen und Infrastruktur in Produktionsumgebungen verwendet wird. Der Verlust sensibler Informationen hätte es einem Angreifer ermöglichen können, auf sensible Daten zuzugreifen oder andere böswillige Aktionen durchzuführen, die die Verfügbarkeit oder Sicherheit der Anwendungen beeinträchtigen könnten.
Den Codecove-Verstoß aufdecken: gewonnene Erkenntnisse
Codecov ist ein Tool zur Verfolgung und Analyse der Codeabdeckung, das in CI/CD-Pipelines verwendet wird und es Entwicklern ermöglicht, die Wirksamkeit ihrer Tests zu messen und zu analysieren. Wie in Codecov's veröffentlicht Sicherheits-Update:
„Am Donnerstag, 1. April 2021, erfuhren wir, dass sich jemand unbefugt Zugang zu unserem Haus verschafft hatte Bash-Uploader Skript kopiert und ohne unsere Erlaubnis verändert. Der Akteur erhielt Zugriff aufgrund eines Fehlers im Docker-Image-Erstellungsprozess von Codecov, der es dem Akteur ermöglichte, die zum Ändern unseres Bash-Uploader-Skripts erforderlichen Anmeldeinformationen zu extrahieren.“
Der Bash Uploader wird von Kunden verwendet, um ihre Code-Coverage-Berichte auf die Codecove-Plattform hochzuladen. Mit diesem Zugriff modifizierte der Angreifer das Bash-Uploader-Skript, indem er Schadcode hinzufügte, der während des Upload-Vorgangs Umgebungsvariablen, Authentifizierungstokens und andere sensible Daten vom System des Benutzers sammelte. Diese Daten wurden dann an einen vom Angreifer kontrollierten Remote-Server gesendet.
Laut Codecove betraf der Verstoß etwa 1 % seines Kundenstamms, zu dem große Unternehmen aus der Technologie-, Finanz- und Gesundheitsbranche gehörten. Das Unternehmen bestätigte, dass während des Verstoßes kein Kundencode oder Codeabdeckungsberichte geändert wurden, dass jedoch möglicherweise Benutzerauthentifizierungstoken und andere vertrauliche Informationen kompromittiert wurden.
Codecove hat sofort Maßnahmen ergriffen, um den Schadcode zu entfernen und betroffene Kunden darauf aufmerksam zu machen, ihre Authentifizierungstoken zurückzusetzen und andere Sicherheitsmaßnahmen zu ergreifen. Das Unternehmen leitete außerdem eine Untersuchung des Vorfalls ein und arbeitete mit Strafverfolgungs- und Cybersicherheitsexperten zusammen, um die Quelle des Angriffs zu ermitteln.
Wie können Sie Ihre Pipeline verteidigen?
Wie oben erwähnt, sind CI/CD-Pipelines auf Geschwindigkeit und Automatisierung ausgelegt, nicht unbedingt auf Sicherheit. Die Tatsache, dass drei große und angesehene Unternehmen alle Opfer eines Angriffs geworden sind und möglicherweise die Informationen ihrer Kunden offengelegt haben, zeigt die Verwundbarkeit Ihrer eigenen Pipeline und Daten.
Unabhängig davon, welche Tools oder welche CI/CD-Plattform Sie verwenden, können Sie einige Maßnahmen ergreifen, um Ihre Sicherheit zu verbessern und den möglichen Schaden zu verringern, falls es einem böswilligen Akteur gelingt, Zugriff auf Ihre Pipeline oder Ihr Netzwerk zu erhalten.
- Bedrohungsmodellierung – Bedrohungsmodellierung ist ein strukturierter Ansatz zur Identifizierung potenzieller Sicherheitsbedrohungen für ein System oder eine Anwendung und zur Entwicklung geeigneter Gegenmaßnahmen zur Minderung dieser Bedrohungen. Stellen Sie sich als Übung vor, dass sich jemand Zugang zu Ihrer Pipeline verschafft hat. Auf welche Umgebungen können sie jetzt zugreifen? Welche Geheimnisse und Schlüssel können sie sehen und nutzen? Können sie Ihren Code ändern? Einflusstests? Dateien aus dem Internet abrufen oder eine Reverse-Shell ausführen? Selbst wenn Sie der Meinung sind, dass Sie Ihre Pipeline bereinigt und den Netzwerkzugriff richtig segmentiert haben, kann es nicht schaden, sich das vorzustellen und dann zu überprüfen, damit Sie sich eines Worst-Case-Szenarios bewusst sind. Sie werden überrascht sein, welche Geheimnisse und Zugriffsmöglichkeiten in Ihrer Pipeline-Plattform oder Ihren Werkzeugen offensichtlich verborgen sind.
- Netzwerksegmentierung – Bei der Netzwerksegmentierung handelt es sich um die Aufteilung eines größeren Netzwerks in kleinere, sicherere Teilnetzwerke oder Segmente mit jeweils eigenen Sicherheitskontrollen und -richtlinien. Der Zweck der Netzwerksegmentierung besteht darin, die Sicherheit des gesamten Netzwerks zu erhöhen, indem das Ausmaß einer potenziellen Sicherheitsverletzung begrenzt und die potenziellen Auswirkungen eines Angriffs minimiert werden. Durch die Aufteilung eines Netzwerks in kleinere Segmente wird die laterale Bewegung von Angreifern eingeschränkt und das Risiko eines unbefugten Zugriffs oder Datenlecks verringert.
Da Phishing-Angriffe immer beliebter werden, kann jeder Ihrer Entwickler oder anderen Mitarbeiter Opfer eines solchen Betrugs werden – wir sind alle nur Menschen. Wenn Sie davon ausgehen, dass die Anmeldeinformationen Ihrer Entwickler von böswilligen Akteuren verwendet werden könnten, müssen Sie sicherstellen, dass die überwältigende Mehrheit der Entwickler keinen Zugriff hat, der es ihnen ermöglichen würde, im Alleingang Geheimnisse herauszuschleusen, bösartigen Code in ein Produktionsimage einzuschleusen usw. oder einfach ihre eigene Version eines Produktionscodes unangefochten veröffentlichen. Es ist zeitaufwändig, dafür zu sorgen, dass jeder Einzelne so wenig Zugriff erhält, wie er für seine Arbeit benötigt, und die Versuchung, einfach jedem Administratorzugriff zu gewähren und damit fertig zu sein, ist groß. Lassen Sie sich nicht von der dunklen Seite in Versuchung führen – befolgen Sie die Regeln von Zero Trust und minimalen Privilegien. - Überwachung und Alarmierung – Gemäß dem letzten Punkt kann es auch dann zu einem Verstoß kommen, wenn Sie Ihren Entwicklern gründlich beigebracht haben, sich vor Phishing und anderen Social-Engineering-Betrügereien zu schützen. Sie wissen nicht, wann oder wie, aber Sie sollten zumindest darauf vorbereitet sein, es herauszufinden. Da die meisten Pipeline-Umgebungen kurzlebig sind, bedeutet das, dass nach getaner Arbeit keine Spur von Beweisen für das Geschehene mehr zu finden ist, es sei denn, Sie erstellen solche Spuren selbst.
Stellen Sie sicher, dass Sie alles protokollieren, was in Ihren Pipelines passiert, bei jedem durchgeführten PR, Merge, Build und Test. Stellen Sie sicher, dass auch die Benutzerinformationen protokolliert werden, damit sie überprüft werden können, falls ein Problem eine solche Überprüfung erfordert. Alle Änderungen an Konfigurationsdateien oder der Umgebung selbst sollten ebenfalls protokolliert werden. Das Ziel besteht darin, eine eindeutige Obduktion eines Verstoßes durchführen zu können, um festzustellen, was passiert ist und wie. Bestimmen Sie im Voraus, welche Ereignisse eine Warnung erfordern, und stellen Sie sicher, dass die richtigen Personen diese Warnung erhalten. Achten Sie darauf, Menschen nicht mit nutzlosen oder falschen Warnungen zu überfluten – das würde zu einer Alarmmüdigkeit führen, die nur dazu führen würde, dass sie die Warnungen ignorieren oder viel später als ratsam reagieren. Offensichtlich sollte keines dieser Protokolle offene Geheimnisse oder Schlüssel enthalten – was zum nächsten Aufzählungspunkt führt:
- Verwaltung von Geheimnissen – Stellen Sie sicher, dass Sie ein Geheimnisverwaltungstool verwenden. Dies würde es zumindest einfacher machen, Ihre Geheimnisse und Passwörter zu wechseln, falls es zu einem Verstoß kommt. Es sollte auch die Aufgabe übernehmen, in der Pipeline gefundene offene Geheimnisse und Zugriffsschlüssel aus allen auf dem System durchgeführten Protokollierungen zu entfernen. Zu keinem Zeitpunkt sollte jemand Unbefugter Zugang zu solchen Informationen haben und auf keinen Fall die Möglichkeit haben, diese zu ändern.
Die Verwaltung von Geheimnissen wird immer wichtiger, da Unternehmen zunehmend auf Cloud-basierte Dienste, Containeranwendungen und andere verteilte Umgebungen angewiesen sind, die die sichere gemeinsame Nutzung und Verwaltung von Geheimnissen über verschiedene Systeme und Anwendungen hinweg erfordern. - Nutzen Sie das RBAC-Prinzip kombiniert mit der geringsten Berechtigung – Das Prinzip der rollenbasierten Zugriffskontrolle (RBAC) besteht darin, den Zugriff auf Systemressourcen basierend auf der einem Benutzer zugewiesenen Rolle oder Jobfunktion innerhalb einer Organisation zu ermöglichen. Bei RBAC werden Benutzern Rollen zugewiesen, die die Berechtigungen und Zugriffsrechte definieren, die sie für verschiedene Systemressourcen wie Dateien, Ordner oder Anwendungen haben. Beim Least Privilege-Prinzip hingegen handelt es sich um die Praxis, Benutzern das Mindestmaß an Zugriff und Berechtigungen zu gewähren, das für die Ausübung ihrer Aufgaben erforderlich ist. Dies bedeutet, dass Benutzer nur Zugriff auf die Ressourcen haben, die sie für die Ausführung ihrer spezifischen Aufgaben benötigen, und nicht mehr. RBAC und Least Privilege werden häufig zusammen als ergänzende Sicherheitsprinzipien verwendet. Bei RBAC werden Benutzern Rollen zugewiesen, die über die entsprechende Zugriffsebene auf die Ressourcen verfügen, die sie zur Ausführung ihrer Aufgaben benötigen. Das Prinzip der geringsten Rechte stellt sicher, dass Benutzer nur Zugriff auf die Mindestebene an Ressourcen haben, die zur Ausführung ihrer spezifischen Aufgaben erforderlich ist. Zusammen tragen diese Grundsätze dazu bei, ein sicheres und gut verwaltetes System mit minimalem Risiko von unbefugtem Zugriff oder Datenschutzverletzungen aufrechtzuerhalten. Als zusätzliche Sicherheit können Sie festlegen, dass für kritische Aktionen im System mehrere Benutzerberechtigungen erforderlich sind. Dieser Ansatz sollte mit Vorsicht angewendet werden, da er die Entwicklungsarbeit erheblich verlangsamen kann. Bei kritischen Aktualisierungen, wie dem Löschen eines Hauptzweigs oder dem Ändern einer Abhängigkeitsliste, sollten Sie jedoch dafür sorgen, dass mindestens zwei Personen mit den entsprechenden Zugriffsrechten die Genehmigung erteilen müssen.
Wir freuen uns
Niemand wird aufhören, CI/CD und andere Automatisierungstools zu verwenden, um seine Arbeit zu beschleunigen. Wir leben in einer Welt, in der wir ständig nach immer schnelleren Code-Updates streben. Wir müssen nur sicherstellen, dass wir dies auf sicherheitsbewusste Weise tun und dabei unseren Code und unsere Produktionsumgebung nicht gefährden.
Eines der wichtigsten Dinge, die Sie tun können, ist, sich Gedanken darüber zu machen, was passieren könnte, wenn sich Unbefugte Zugang verschaffen. Sobald Sie sich der Gefahr und der verschiedenen Stellen in Ihren Pipelines und Ihrem Netzwerk bewusst werden, die anfällig sind, vertraue ich darauf, dass Sie in der Lage sein werden, die richtigen Schritte zu unternehmen, um die potenziellen Lecks zu schließen.
Scribe ist ein Unternehmen für Software-Supply-Chain-Sicherheit, dessen Plattform darauf ausgelegt ist, Ihnen Transparenz darüber zu bieten, was in Ihrem Entwicklungsprozess und Ihrer Pipeline geschieht. Erfahren Sie mehr darüber, wie Scribe Ihnen bei der Sicherung Ihrer Pipelines helfen kann kontaktieren Sie uns.
Diese Inhalte werden Ihnen von Scribe Security zur Verfügung gestellt, einem führenden Anbieter von End-to-End-Sicherheitslösungen für die Software-Lieferkette, der modernste Sicherheit für Code-Artefakte sowie Code-Entwicklungs- und Bereitstellungsprozesse in der gesamten Software-Lieferkette bietet. Weitere Informationen.