Sicherheitsstatus der DevOps-Umgebung

Abgeschlossen

Durch eine Zunahme von Cyberangriffen auf Quellcodeverwaltungssysteme und Continuous Integration-/Continuous Delivery-Pipelines ist die Sicherung von DevOps-Plattformen gegen die Vielzahl von Bedrohungen, die in der DevOps-Bedrohungsmatrix identifiziert werden, von entscheidender Bedeutung. Solche Cyberangriffe können Codeeinschleusung, Rechteausweitung und Datenexfiltration ermöglichen und u. U. weitreichende Auswirkungen haben.

Die DevOps-Statusverwaltung ist ein Feature in Microsoft Defender for Cloud, das:

  • Erkenntnisse zum Sicherheitsstatus des gesamten Lebenszyklus der Softwarelieferkette bietet.
  • erweiterte Scanner für tiefgehende Bewertungen verwendet.
  • verschiedene Ressourcen aus Organisationen, Pipelines und Repositorys abdeckt.
  • es Kunden ermöglicht, ihre Angriffsfläche zu reduzieren, indem sie die bereitgestellten Empfehlungen anzeigen und umsetzen.

DevOps-Scanner

Um Erkenntnisse bereitzustellen, verwendet die DevOps-Statusverwaltung DevOps-Scanner, um Schwachstellen bei der Quellcodeverwaltung und in Continuous Integration-/Continuous Delivery-Pipelines zu identifizieren. Dazu werden Überprüfungen anhand der Sicherheitskonfigurationen und Zugriffssteuerungen durchgeführt.

Azure DevOps- und GitHub-Scanner werden intern in Microsoft verwendet, um Risiken im Zusammenhang mit DevOps-Ressourcen zu identifizieren und dadurch die Angriffsfläche zu reduzieren und DevOps-Unternehmenssysteme zu stärken.

Sobald eine DevOps-Umgebung verbunden ist, konfiguriert Defender for Cloud diese Scanner automatisch, um alle 24 Stunden wiederholt Scans für mehrere DevOps-Ressourcen durchzuführen, einschließlich:

  • Builds
  • sichere Dateien
  • Variablengruppen
  • Dienstverbindungen
  • Organisationen
  • Repositorien

Risikominderung der DevOps-Bedrohungsmatrix

Die DevOps-Statusverwaltung unterstützt Organisationen bei der Ermittlung und Behebung schädlicher Fehlkonfigurationen auf der DevOps-Plattform. Dies führt zu einer resilienten Zero-Trust-DevOps-Umgebung, die gegen eine Reihe von Bedrohungen gestärkt wird, die in der DevOps-Bedrohungsmatrix definiert sind. Zu den primären Steuerungen für die Statusverwaltung gehören folgende:

  • Bereichsbezogener Geheimniszugriff: Minimieren Sie die Offenlegung vertraulicher Informationen, und verringern Sie das Risiko nicht autorisierter Zugriffe, Datenlecks und seitlicher Bewegungen, indem Sie sicherstellen, dass jede Pipeline nur Zugriff auf die Geheimnisse hat, die für ihre Funktion unerlässlich sind.
  • Einschränkung von selbstgehosteten Runnern und hohen Berechtigungen: Verhindern Sie nicht autorisierte Ausführungen und potenzielle Eskalationen, indem Sie selbstgehostete Runner vermeiden und sicherstellen, dass Pipelineberechtigungen standardmäßig auf „schreibgeschützt“ festgelegt sind.
  • Erweiterter Branchschutz: Bewahren Sie die Codeintegrität, indem Sie Branchschutzregeln erzwingen und schädliche Codeeinschleusungen verhindern.
  • Optimierte Berechtigungen und sichere Repositorys: Verringern Sie das Risiko nicht autorisierter Zugriffe, Änderungen durch Nachverfolgung der mininmalen Basisberechtigungen und Aktivierung des Pushschutzes für Repositorys.

DevOps-Bedrohungsmatrix

Unser Ziel bei der Entwicklung der Bedrohungsmatrix für DevOps ist es, eine umfassende Wissensdatenbank aufzubauen, die Verteidiger nutzen können, um relevante Angriffstechniken im Auge zu behalten und Abwehrmaßnahmen dagegen zu entwickeln. Mithilfe des MITRE ATT&CK-Frameworks als Basis haben wir Techniken und Angriffsvektoren gesammelt, die devOps-Umgebungen zugeordnet sind, und eine Matrix für DevOps-Angriffsmethoden erstellt.

Es lohnt sich zu beachten, dass die Taktiken in dieser Matrix aus der Sicht von DevOps betrachtet werden müssen. Die Ausführungstechniken in einem virtuellen Computer mit Windows- oder Linux-Betriebssystem unterscheiden sich beispielsweise von der Ausführung in einer DevOps-Pipeline. Im Linux-Fall bedeutet die Ausführung das Ausführen von Code im Betriebssystem. Wenn wir über DevOps-Umgebungen sprechen, bedeutet dies, Dass Code in der Pipeline oder DevOps-Ressourcen ausgeführt wird. Neben der Verwendung dieser Bedrohungsmatrix zum Kategorisieren von Angriffen und entsprechenden Abwehrmethoden können Defenders zusammen mit roten Teams zusammenarbeiten, um Annahmen kontinuierlich zu testen und neue potenzielle Angriffstechniken zu finden.

MITRE ATT&CK definiert

Die MITRE ATT&CK-Matrix ist eine öffentlich zugängliche Wissensdatenbank, um die verschiedenen Taktiken und Techniken zu verstehen, die von Angreifenden während eines Cyberangriffs verwendet werden.

Die Wissensdatenbank ist in mehrere Kategorien unterteilt: Vor einem Angriff, Erstzugriff, Ausführung, Persistenz, Rechteausweitung, Umgehung von Verteidigungsmaßnahmen, Zugriff auf Anmeldeinformationen, Ermittlung, Lateral Movement, Sammlung, Exfiltration sowie Befehl und Kontrolle.

Taktiken (T) stellen das „Warum“ einer ATT&CK-Technik oder -Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für eine Aktion. So könnten Angreifende z. B. möglicherweise Zugriff auf Anmeldeinformationen erhalten.

Techniken (T) stellen dar, „wie“ Angreifende ein taktisches Ziel erreichen, indem sie eine Aktion ausführen. So könnten Angreifende z. B. Anmeldeinformationen speichern, um damit Zugriff zu erhalten.

Common Knowledge (CK) in „ATT&CK“ steht für Allgemeinwissen, also im Wesentlichen dokumentierte Modus operandi von Taktiken und Techniken, die von Angreifenden ausgeführt werden.

Erstzugriff

Die anfängliche Zugriffstaktik bezieht sich auf Techniken, die ein Angreifer verwenden kann, um Zugriff auf die DevOps-Ressourcen – Repositorys, Pipelines und Abhängigkeiten zu erhalten. Die folgenden Techniken können eine Voraussetzung für die nächsten Schritte sein:

SCM-Authentifizierung (Source Code Management, Quellcodeverwaltung) – Zugriff durch eine Authentifizierungsmethode für die Quellcodeverwaltung der Organisation. Es kann sich um ein persönliches Zugriffstoken (PAT), einen SSH-Schlüssel oder andere zulässige Authentifizierungsanmeldeinformationen handelt. Ein Beispiel für eine Methode, die ein Angreifer verwenden kann, um diese Technik zu erreichen, ist die Verwendung eines Phishingangriffs auf eine Organisation.

CI- und CD-Dienstauthentifizierung (Continuous Integration, Continuous Delivery) – ähnlich wie bei der SCM-Authentifizierung können Angreifende die Authentifizierung für den CI/CD-Dienst nutzen, um die DevOps-Umgebung der Organisation anzugreifen.

Öffentliche Repositorys der Organisation – Zugriff auf die öffentlichen Repositorys der Organisation, die mit CI/CD-Funktionen konfiguriert sind. Je nach Konfiguration der Organisation haben diese Repositorys möglicherweise die Möglichkeit, eine Pipelineausführung auszulösen, nachdem eine Pullanforderung (PR) erstellt wurde.

Endpunktkompromittierung – mithilfe einer vorhandenen Kompromittierung können Angreifende die Arbeitsstation der kompromittierten entwickelnden Person nutzen und so Zugriff auf SCM, Registrierung oder jede andere Ressource erhalten, auf die die entwickelnde Person Zugriff hat.

Konfigurierte Webhooks – wenn eine Organisation einen Webhook konfiguriert hat, könnten Angreifende ihn als erste Zugriffsmethode für das Netzwerk der Organisation verwenden, indem sie die SCM selbst verwenden, um Anforderungen in diesem Netzwerk auszulösen. Dies könnte dem Angreifer Zugriff auf Dienste gewähren, die nicht öffentlich zugänglich gemacht werden sollen oder alte und anfällige Softwareversionen innerhalb des privaten Netzwerks ausführen.

Ausführung

Die Ausführungstaktik bezieht sich auf Techniken, die von einem böswilligen Angreifer verwendet werden können, um Ausführungszugriff auf Pipelineressourcen – die Pipeline selbst oder die Bereitstellungsressourcen – zu erhalten. Einige der Techniken in diesem Abschnitt enthalten Erläuterungen zu den verschiedenen Methoden, wie sie ausgeführt werden können, oder welche Untertechniken wir nennen:

Vergiftete Pipelineausführung (Poisoned Pipeline Execution, PPE) bezieht sich auf eine Technik, bei der Angreifende Code in das Repository einer Organisation einschleusen können, was zur Codeausführung im CI/CD-System des Repositorys führt. Es gibt verschiedene Untertechniken zum Erreichen der Codeausführung:

  • Direkte PPE (d-PPE) – Fälle, in denen Angreifende die Konfigurationsdatei innerhalb des Repositorys direkt ändern können. Da die Pipeline von einer neuen PR ausgelöst und gemäß der Konfigurationsdatei ausgeführt wird – der Angreifer kann schädliche Befehle in die Konfigurationsdatei einfügen, und diese Befehle werden in der Pipeline ausgeführt.
  • Indirekte PPE (i-PPE) – Fälle, in denen Angreifende die Konfigurationsdateien nicht direkt ändern können oder in denen diese Änderungen beim Auslösen nicht berücksichtigt werden. In diesen Fällen kann der Angreifer Skripts, die von der Pipeline verwendet werden, infizieren, um Code auszuführen, z. B. Make-Files, Testskripts, Buildskripts usw.
  • Öffentliche PPE – Fälle, in denen die Pipeline durch ein Open-Source-Projekt ausgelöst wird. In diesen Fällen kann der Angreifer d-PPE oder i-PPE im öffentlichen Repository verwenden, um die Pipeline zu infizieren.

Abhängigkeitsmanipulation bezieht sich auf eine Technik, bei der Angreifende Code in der DevOps-Umgebung oder Produktionsumgebung ausführen können, indem schädlicher Code in die Abhängigkeiten eines Repositorys eingefügt wird. Wenn die Abhängigkeit heruntergeladen wird, wird der bösartige Code ausgeführt. Einige Untertechniken, die zum Erreichen der Codeausführung verwendet werden können, sind:

  • Öffentliche Abhängigkeitsverwechslungen – eine Technik, bei der Angreifende öffentliche böswillige Pakete mit demselben Namen wie private Pakete veröffentlichen. In diesem Fall, da die Paketsuche in Paketsteuerungsmechanismen in der Regel zuerst in öffentlichen Registrierungen sucht, wird das schädliche Paket heruntergeladen.
  • Öffentlicher Paket-Hijack („Repo-Jacking“) – Entführen eines öffentlichen Pakets, indem die Kontrolle über das Betreuerkonto übernommen wird, z. B. durch Exploits des GitHub-Benutzerumbenennungsfeatures.
  • Typosquatting – Veröffentlichen bösartiger Pakete mit ähnlichen Namen wie bekannte öffentliche Pakete. Auf diese Weise kann ein Angreifer Benutzer verwirren, um das schädliche Paket anstelle des gewünschten Pakets herunterzuladen.

DevOps-Ressourcenkompromittierung – Pipelines sind im Kern eine Reihe von Computeressourcen, die die CI/CD-Agents zusammen mit anderer Software ausführen. Ein Angreifer kann auf diese Ressourcen abzielen, indem er eine Sicherheitsanfälligkeit im Betriebssystem, den Code des Agents, andere software, die in den VMs installiert ist, oder andere Geräte im Netzwerk ausnutzen, um Zugriff auf die Pipeline zu erhalten.

Kontrolle über die gemeinsame Registrierung – Angreifende können die Kontrolle über eine Registrierung erlangen, die von der Organisation verwendet wird, was zu schädlichen Images oder Paketen führt, die von den Pipeline-VMs oder Produktions-VMs ausgeführt werden.

Ausdauer

Die Persistenz-Taktik besteht aus verschiedenen Techniken, die ein Angreifer für die Aufrechterhaltung des Zugriffs auf eine Opferumgebung verwenden kann:

Änderungen im Repository – Angreifende können die automatischen Token aus der Pipeline verwenden, um auf Code zuzugreifen und ihn an das Repository zu pushen (vorausgesetzt, das automatische Token verfügt über genügend Berechtigungen dafür). Sie können auf diese Weise mit mehreren Teiltechniken Persistenz erreichen:

  • Ändern/Hinzufügen von Skripts im Code – wir können einige der Initialisierungsskripts ändern/neue Skripts hinzufügen, sodass sie eine Backdoor oder einen Starter für Angreifende herunterladen. Jedes Mal, wenn die Pipeline diese Skripts ausführt, wird der Code der Angreifenden ebenfalls ausgeführt.
  • Ändern der Pipelinekonfiguration – wir können neue Schritte in der Pipeline hinzufügen, um ein von Angreifenden gesteuertes Skript in die Pipeline herunterzuladen, bevor wir mit dem Buildprozess fortfahren.
  • Ändern der Konfiguration für Abhängigkeitsspeicherorte, um von Angreifenden gesteuerte Pakete zu verwenden.

Einfügen in Artefakte – einige CI-Umgebungen verfügen über die Funktionalität zum Erstellen von Artefakten, die zwischen verschiedenen Pipelineausführungen freigegeben werden können. Beispielsweise können wir in GitHub Artefakte speichern und mithilfe einer GitHub-Aktion aus der Pipelinekonfiguration herunterladen.

Ändern von Bildern in der Registrierung – in Fällen, in denen die Pipelines über Berechtigungen für den Zugriff auf die Imageregistrierung verfügen (z. B. zum Schreiben von Images in die Registrierung, nachdem der Build abgeschlossen wurde), könnten Angreifende schädliche Images in der Registrierung ändern und einfügen, die weiterhin von den Containern der Benutzenden ausgeführt werden.

Erstellen von Dienstanmeldeinformationen – böswillige Angreifende können den Zugriff nutzen, den sie bereits in der Umgebung haben, und neue Anmeldeinformationen für die Verwendung erstellen, falls die erste Zugriffsmethode verloren geht. Dies kann durch Erstellen eines Zugriffstokens für das SCM, für die Anwendung selbst, für die Cloudressourcen und vieles mehr getan werden.

Rechteausweitung

Die Rechteausweitungstechniken werden von einem Angreifer verwendet, um die Rechte in der Umgebung des Opfers zu erhöhen und höhere Berechtigungen für bereits kompromittierte Ressourcen zu erhalten:

Geheime Schlüssel in privaten Repositorys – durch die Nutzung einer bereits erhaltenen ersten Zugriffsmethode könnten Angreifende private Repositorys nach versteckten Geheimnissen durchsuchen. Die Chancen, verborgene Geheimnisse in einem privaten Repository zu finden, sind höher als in einem öffentlichen Repository, da aus Sicht des Entwicklers dies von außerhalb der Organisation nicht zugänglich ist.

Commit/Push an geschützte Branches – die Pipeline hat Zugriff auf das Repository, das möglicherweise mit eingeschränkter Zugriffsberechtigung konfiguriert worden ist. Dies kann es ermöglichen, Code direkt an geschützte Branches zu pushen, sodass Angreifende ohne Eingriff durch das Team Code direkt in die wichtigen Branches einschleusen können.

Zertifikate und Identitäten von Metadatendiensten – sobald Angreifende Vorgänge in cloudgehosteten Pipelines ausführen, können sie auf die Metadatendienste innerhalb der Pipeline zugreifen und Zertifikate (erfordert hohe Berechtigungen) und Identitäten aus diesen Diensten extrahieren.

Zugriff auf Anmeldeinformationen

Anmeldeinformationszugriffstechniken werden von einem Angreifer verwendet, um Anmeldeinformationen zu stehlen:

Benutzeranmeldeinformationen – in Fällen, in denen der Kunde Zugriff auf externe Dienste über die CI-Pipeline anfordert (z. B. eine externe Datenbank), befinden sich diese Anmeldeinformationen in der Pipeline (kann durch CI-Geheimnisse, Umgebungsvariablen usw. festgelegt werden) und können für Angreifende zugänglich sein.

Dienstanmeldeinformationen – es gibt Fälle, in denen Angreifende Dienstanmeldeinformationen finden kann, z. B. Dienstprinzipalnamen (SPN), SAS-Token (Shared Access Signature) und vieles mehr, was den Zugriff auf andere Dienste direkt über die Pipeline ermöglichen könnte.

Seitwärtsbewegung

Die Lateral Movement-Taktik bezieht sich auf Techniken, die von Angreifern verwendet werden, um durch verschiedene Ressourcen zu navigieren. In CI/CD-Umgebungen kann dies auf das Verschieben zu Bereitstellungsressourcen, zum Erstellen von Artefakten und Registrierungen oder auf neue Ziele verweisen.

Kompromittierung von Buildartefakten – wie bei anderen Lieferkettenangriffen können Angreifende die Buildartefakte manipulieren, sobald sie die Kontrolle über die CI-Pipelines übernommen haben. Auf diese Weise könnte bösartiger Code in die Baumaterialien eingefügt werden, bevor das Erstellen erfolgt, wodurch die schädliche Funktionalität in die Buildartefakte eingefügt wird.

Registrierungsinjektion – wenn die Pipeline mit einer Registrierung für die Buildartefakte konfiguriert ist, könnten Angreifende die Registrierung mit böswilligen Images infizieren, die später von Containern mit dieser Registrierung heruntergeladen und ausgeführt werden.

Ausbreiten auf Bereitstellungsressourcen – falls die Pipeline mit Zugriff auf Bereitstellungsressourcen konfiguriert ist, haben Angreifende den gleichen Zugriff auf diese Ressourcen und können sich ausbreiten. Dies kann zur Codeausführung, Datenexfiltration und mehr führen, je nach den Berechtigungen, die den Pipelines gewährt wurden.

Umgehen von Verteidigungsmaßnahmen

Verteidigungshinterziehungstechniken könnten von Angreifern verwendet werden, um Die in einer DevOps-Umgebung verwendeten Abwehrmaßnahmen zu umgehen und Angriffe unter dem Radar fortzusetzen:

Manipulation von Dienstprotokollen – Dienstprotokolle ermöglichen es Sicherheitsverantwortlichen, Angriffe in ihrer Umgebung zu erkennen. Ein Angreifer, der in einer Umgebung ausgeführt wird (z. B. in den Buildpipelinen), könnte die Protokolle ändern, um zu verhindern, dass Defender den Angriff beobachtet. Dies ähnelt einem Angreifer, der die Verlaufsprotokolle auf einem Linux-Computer ändert, hindert jeden Beobachter daran, die vom Angreifer ausgeführten Befehle zu sehen.

Kompilierungsmanipulation – wenn Angreifende keine Spuren im SCM-Dienst hinterlassen möchten, ändern sie möglicherweise den Kompilierungsprozess, um den bösartigen Code einzuschleusen. Dies kann auf verschiedene Arten erfolgen:

  • Ändern des Codes im Voraus – Ändern des Codes direkt vor Beginn des Buildvorgangs, ohne ihn im Repository zu ändern und Ablaufverfolgungen zu hinterlassen.
  • Manipulationscompiler – Ändern des Compilers in der Buildumgebung, um den bösartigen Code einzuführen, ohne Ablaufverfolgungen zu hinterlassen, bevor dieser Prozess beginnt.

Neukonfigurieren von Branchschutz – Branchschutztools ermöglichen es einer Organisation, Schritte zu konfigurieren, bevor ein PR/Commit in einen Branch genehmigt wird. Sobald ein Angreifer über Administratorberechtigungen verfügt, kann er diese Konfigurationen ändern und Code ohne Benutzereingriff in die Verzweigung einführen.

Auswirkung

Die Auswirkungstaktik bezieht sich auf die Techniken, die ein Angreifer für das Ausnutzen des Zugriffs auf die CI/CD-Ressourcen für böswillige Zwecke verwenden könnte, und nicht als ein weiterer Schritt im Angriff, da diese Techniken laut und leicht zu erkennen sein könnten:

Verteilter Denial-of-Service-Angriff (DDoS) – Angreifende könnten die Computeressourcen verwenden, auf die sie Zugriff erhalten haben, um verteilte Denial-of-Service-Angriffe (DDoS) auf externe Ziele auszuführen.

Mining von Kryptowährungen – die Computeressourcen könnten für Cryptomining verwendet werden, das von Angreifenden gesteuert wird.

Lokaler Denial-of-Service-Angriff (DoS) – sobald Angreifende Zugriff auf die CI-Pipelines hat, kann können sie einen Denial-of-Service-Angriff über diese Pipelines bei Kunden ausführen, indem sie Agents herunterfahren oder neu starten oder die VMs überlasten.

Ressourcenlöschung – Angreifende mit Zugriff auf Ressourcen (Cloudressourcen, Repositorys usw.) können die Ressourcen dauerhaft löschen, um Denial-of-Service-Zugriff zu erlangen.

Exfiltration

Die Exfiltrationstaktik bezieht sich auf verschiedene Techniken, die von einem Angreifer verwendet werden können, um vertrauliche Daten aus der Opferumgebung zu exfiltrieren:

Klonen privater Repositorys – sobald Angreifende Zugriff auf CI-Pipelines haben, erhalten sie auch Zugriff auf die privaten Repositorys (z. B. GITHUB_TOKEN kann in GitHub verwendet werden), und daher können sie den Code klonen und darauf zugreifen und so Zugriff auf private IP-Adressen erhalten.

Pipelineprotokolle – Angreifende können auf die Pipelineausführungsprotokolle zugreifen, den Zugriffsverlauf und die Buildschritte anzeigen usw. Diese Protokolle enthalten möglicherweise vertrauliche Informationen zum Build und zur Bereitstellung und in einigen Fällen sogar Anmeldeinformationen für Dienste, Benutzerkonten und vieles mehr.

Exfiltrieren von Daten aus Produktionsressourcen – in Fällen, in denen die Pipelines auf die Produktionsressourcen zugreifen können, haben die Angreifenden auch Zugriff auf diese Ressourcen. Daher können sie diesen Zugriff missbrauchen, um Produktionsdaten zu exfiltrieren.

Empfehlungen zur DevOps-Statusverwaltung

Wenn die DevOps-Scanner Abweichungen von den bewährten Sicherheitsmethoden innerhalb von Quellcodeverwaltungssystemen und CI/CD-Pipelines erkennen, gibt Defender for Cloud präzise und umsetzbare Empfehlungen aus. Diese Empfehlungen haben die folgenden Vorteile:

  • Verbesserte Sichtbarkeit: Erhalten Sie umfassende Erkenntnisse zum Sicherheitsstatus von DevOps-Umgebungen, um ein ausgewogenes Verständnis aller vorhandenen Sicherheitsrisiken sicherzustellen. Identifizieren Sie fehlende Branchschutzregeln, Risiken der Rechteausweitung und unsichere Verbindungen, um Angriffe zu verhindern.
  • Prioritätsbasierte Aktion: Filtern Sie Ergebnisse nach Schweregrad, um Ressourcen und Anstrengungen effektiver einzusetzen, indem Sie zuerst die wichtigsten Sicherheitsrisiken behandeln.
  • Verringerung der Angriffsfläche: Kümmern Sie sich um Sicherheitslücken, um anfällige Angriffsflächen erheblich zu minimieren und so die Abwehr potenzieller Bedrohungen zu stärken.
  • Echtzeitbenachrichtigungen: Die Möglichkeit zur Integration in Workflowautomatisierungen, um sofort Warnungen zu erhalten, wenn sich sichere Konfigurationen ändern, sodass schnelle Maßnahmen ergriffen werden können und die dauerhafte Einhaltung von Sicherheitsprotokollen sichergestellt wird.