Sicherheitsstatus der DevOps-Umgebung

Abgeschlossen

Mit einer Zunahme von Cyberangriffen auf Quellcodeverwaltungssysteme und kontinuierlichen Integrations-/kontinuierlichen Bereitstellungspipelines 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 Codeinjektion, Rechteausweitung und Datenexfiltration ermöglichen, was potenziell zu umfangreichen Auswirkungen führt.

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

  • Einblicke in den Sicherheitsstatus des gesamten Lebenszyklus der Software-Logistikkette bietet.
  • Erweiterte Scanner für eingehende Bewertungen verwendet.
  • Deckt verschiedene Ressourcen aus Organisationen, Pipelines und Repositorys ab.
  • Ermöglicht Kunden, ihre Angriffsfläche zu reduzieren, indem sie die bereitgestellten Empfehlungen aufdecken und handeln.

DevOps-Scanner

Um Erkenntnisse bereitzustellen, verwendet DevOps Posture Management DevOps-Scanner, um Schwachstellen bei der Quellcodeverwaltung und kontinuierlichen Integrations-/Continous Delivery Pipelines zu identifizieren, indem Sie Überprüfungen auf die Sicherheitskonfigurationen und Zugriffskontrollen durchführen.

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

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

  • Builds
  • Sichere Dateien
  • Variablengruppen
  • Dienstverbindungen
  • Organisationen
  • Repositorys

Risikominderung der DevOps-Bedrohungsmatrix

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

  • Bereichsbezogener geheimer Zugriff: Minimieren Sie die Gefährdung vertraulicher Informationen und verringern Sie das Risiko nicht autorisierter Zugriffe, Datenlecks und lateraler Bewegungen, indem Sie sicherstellen, dass jede Pipeline nur Zugriff auf die geheimen Schlüssel hat, die für ihre Funktion unerlässlich sind.
  • Einschränkung von selbst gehosteten Runnern und hohen Berechtigungen: Verhindern Sie nicht autorisierte Ausführungen und potenzielle Eskalationen, indem Sie selbst gehostete Läufer vermeiden und sicherstellen, dass Pipelineberechtigungen standardmäßig schreibgeschützt sind.
  • Erweiterter Branch-Schutz: Bewahren Sie die Integrität des Codes, indem Sie Branch-Schutzregeln erzwingen und schädliche Codeeinschleusungen verhindern.
  • Optimierte Berechtigungen und sichere Repositorys: Verringern Sie das Risiko nicht autorisierter Zugriffe, Änderungen, indem Sie mindeste Basisberechtigungen nachverfolgen und den geheimen Pushschutz für Repositorys aktivieren.

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 Angreifer*innen während eines Cyberangriffs verwendet werden.

Die Wissensdatenbank ist in mehrere Kategorien unterteilt: Vor einem Angriff, Erstzugriff, Ausführung, Persistenz, Rechteerweiterung, 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 der Angreifer*innen, also der Grund für die Ausführung einer Aktion. So könnten Angreifer*innen z. B. möglicherweise Zugriff auf Anmeldeinformationen erhalten.

Techniken (T) stellen dar, „Wie“ Angreifer*innen ein taktisches Ziel erreichen, indem sie eine Aktion ausführen. So könnten Angreifer*innen 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 Angreifer*innen 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:

Quellcodeverwaltung (Source Code Management, SCM)-Authentifizierung – 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.

Continuous Integration (CI) und Cd-Dienstauthentifizierung – Ähnlich wie bei der SCM-Authentifizierung kann ein Angreifer die Authentifizierung für den CI/CD-Dienst nutzen, um die DevOps 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 kann ein Angreifer die Arbeitsstation des kompromittierten Entwicklers nutzen und so Zugriff auf SCM, Registrierung oder jede andere Ressource erhalten, auf die der Entwickler Zugriff hat.

Konfigurierte Webhooks – Wenn eine Organisation einen Webhook konfiguriert hat, könnte ein Angreifer ihn als erste Zugriffsmethode in das Netzwerk der Organisation verwenden, indem er SCM selbst verwendet, um Anforderungen in dieses 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 (PPE) – bezieht sich auf eine Technik, bei der ein Angreifer Code in das Repository eines Unternehmens einfügen kann, 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 der Angreifer die Konfigurationsdatei innerhalb des Repositorys direkt ändern kann. 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 der Angreifer die Konfigurationsdateien nicht direkt ändern kann oder dass 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 ein Angreifer Code in der DevOps-Umgebung oder Produktionsumgebung ausführen kann, 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 der Angreifer öffentliche böswillige Pakete mit demselben Namen wie private Pakete veröffentlicht. 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ührer eines öffentlichen Pakets, indem er die Kontrolle über das Betreuerkonto übernimmt, 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 – Ein Angreifer kann die Kontrolle über eine registrierung erlangen, die von der Organisation verwendet wird, was zu schädlichen Bildern oder Paketen führt, die von den Pipeline-VMs oder Produktions-VMs ausgeführt werden.

Persistenz

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

Änderungen im Repository – Adversaries können die automatischen Token aus der Pipeline verwenden, um auf den Code zuzugreifen und an das Repository zu pushen (vorausgesetzt, das automatische Token verfügt über genügend Berechtigungen, um dies zu tun). 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/Starter für den Angreifer herunterladen. Jedes Mal, wenn die Pipeline diese Skripts ausführt, wird der Code des Angreifers ebenfalls ausgeführt.
  • Ändern Sie die Pipelinekonfiguration – wir können neue Schritte in der Pipeline hinzufügen, um ein vom Angreifer gesteuertes Skript in die Pipeline herunterzuladen, bevor wir mit dem Buildprozess fortfahren.
  • Ändern Sie die Konfiguration für Abhängigkeitsspeicherorte – um vom Angreifer gesteuerte Pakete zu verwenden.

In Artefakte einfügen – einige CI-Umgebungen verfügen über die Funktionalität zum Erstellen von Artefakten, die zwischen verschiedenen Pipelineausführungen gemeinsam verwendet 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 Bildern in die Registrierung, nachdem der Build abgeschlossen wurde), könnte der Angreifer schädliche Bilder in der Registrierung ändern und pflanzen, die weiterhin von den Containern des Benutzers ausgeführt werden.

Erstellen von Dienstanmeldeinformationen – Ein böswilliger Angreifer kann den Zugriff nutzen, den er bereits in der Umgebung hat, 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.

Ausweitung von Berechtigungen

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önnte ein Angreifer 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 Verzweigungen – Die Pipeline hat Zugriff auf das Repository, das möglicherweise mit eingeschränkter Zugriffsberechtigung konfiguriert werden kann, was es ermöglichen kann, Code direkt an geschützte Verzweigungen zu übertragen, sodass ein Angreifer Code direkt in die wichtigen Verzweigungen einjizieren kann, ohne dass ein Team eingreifen muss.

Zertifikate und Identitäten von Metadatendiensten – Sobald ein Angreifer in cloudgehosteten Pipelines ausgeführt wird, kann der Angreifer auf die Metadatendienste innerhalb der Pipeline zugreifen und Zertifikate extrahieren (erfordert hohe Berechtigungen) und Identitäten aus diesen Diensten.

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 aus der CI-Pipeline erfordert (z. B. eine externe Datenbank), befinden sich diese Anmeldeinformationen in der Pipeline (kann durch CI-Geheimnisse, Umgebungsvariablen usw.) festgelegt werden und für den Angreifer zugänglich sein.

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

Laterale Verschiebung

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 Supply Chain-Angriffen kann der Angreifer die Kontrolle über die CI-Pipelines haben, die Buildartefakte beeinträchtigen. 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önnte der Angreifer die Registrierung mit böswilligen Bildern infizieren, die später von Containern mit dieser Registrierung heruntergeladen und ausgeführt werden.

Spread to deployment resources – If the pipeline is configured with access to deployment resources, then the angreifer has the same access to these resources, let the angreifer to spread. 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 Defenders, 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 ein Angreifer keine Ablaufverfolgungen im SCM-Dienst hinterlassen möchte, kann der Angreifer den Kompilierungsprozess ändern, um den bösartigen Code einzujizieren. 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.

Verzweigungsschutz neu konfigurieren – Branch-Schutztools ermöglichen es einer Organisation, Schritte zu konfigurieren, bevor ein PR/Commit in eine Verzweigung 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:

Distributed Denial-of-Service (DDoS) – Ein Angreifer könnte die Computeressourcen verwenden, auf die sie Zugriff erhalten haben, um verteilte Denial of Services (DDoS)-Angriffe auf externe Ziele auszuführen.

Kryptowährungs-Mining – Die Computeressourcen könnten für kryptominieren, die von einem Angreifer gesteuert werden.

Lokaler Denial-of-Service (DoS) – Sobald der Angreifer in den CI-Pipelines ausgeführt wird, kann der Angreifer einen Denial-Service-Angriff von diesen Pipelines an Kunden ausführen, indem er Agents heruntergefahren, neu gestartet oder die VMs überlastet.

Ressourcenlöschung – Ein Angreifer mit Zugriff auf Ressourcen (Cloudressourcen, Repositorys usw.) könnte die Ressourcen dauerhaft löschen, um Denial of Services zu erreichen.

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 sie private Repositorys – Sobald Angreifer Zugriff auf CI-Pipelines haben, erhalten sie auch Zugriff auf die privaten Repositorys (z. B. die GITHUB_TOKEN können in GitHub verwendet werden), und daher könnten Sie den Code klonen und darauf zugreifen und so Zugriff auf private IP erhalten.

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

Exfiltrieren von Daten aus Produktionsressourcen – In Fällen, in denen die Pipelines auf die Produktionsressourcen zugreifen können, haben die Angreifer 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 Methoden der Sicherheit innerhalb von Quellcodeverwaltungssystemen und kontinuierlichen Integrations-/Continous Delivery-Pipelines erkennen, gibt Defender für Cloud präzise und umsetzbare Empfehlungen aus. Diese Empfehlungen haben die folgenden Vorteile:

  • Verbesserte Sichtbarkeit: Erhalten Sie umfassende Einblicke in den Sicherheitsstatus von DevOps-Umgebungen, um ein abgerundetes Verständnis aller vorhandenen Sicherheitsrisiken sicherzustellen. Identifizieren Sie fehlende Branch-Schutzregeln, Risiken der Rechteausweitung und unsichere Verbindungen, um Angriffe zu verhindern.
  • Prioritätsbasierte Aktion: Filtern Sie Ergebnisse nach Schweregrad, um Ressourcen und Anstrengungen effektiver auszugeben, indem Sie zuerst die wichtigsten Sicherheitsrisiken behandeln.
  • Verringerung der Angriffsfläche: Es wurden Sicherheitslücken hervorgehoben, um anfällige Angriffsflächen erheblich zu minimieren und so die Abwehr potenzieller Bedrohungen zu erhärten.
  • Echtzeitbenachrichtigungen: Die Möglichkeit, in Workflowautomatisierungen zu integrieren, um sofortige Warnungen zu erhalten, wenn sich sichere Konfigurationen ändern, sodass schnelle Maßnahmen ergriffen und die dauerhafte Einhaltung von Sicherheitsprotokollen sichergestellt werden.