Sicherheitsforscher untersuchten kürzlich die Datenbank-as-a-Service-Infrastruktur von IBM Cloud und entdeckten mehrere Sicherheitslücken, die es ihnen ermöglichten, auf interne Server zuzugreifen, die zur Erstellung von Datenbank-Images für Kundenimplementierungen verwendet werden. Der demonstrierte Angriff wirft ein Schlaglicht auf einige häufige Sicherheitsmängel, die zu einer Gefährdung der Lieferkette in der Cloud-Infrastruktur führen können.
Der Angriff, der von Forschern des Sicherheitsunternehmens Wiz entwickelt wurde, kombiniert eine Schwachstelle zur Rechteerweiterung im IBM Cloud Databases for PostgreSQL Service, über die gesamte Umgebung verteilte Klartext-Anmeldeinformationen und zu laxe interne Netzwerkzugriffskontrollen, die seitliche Bewegungen innerhalb der Infrastruktur ermöglichen. 4gdtu
PostgreSQL ist ein attraktives Ziel in Cloud-Umgebungen
Die Prüfung von IBM Cloud Databases for PostgreSQL durch Wiz ist Teil eines größeren Forschungsprojekts, das PostgreSQL-Implementierungen von großen Cloud-Anbietern analysiert, die die Datenbank-Engine als Teil ihrer verwalteten Datenbank-as-a-Service-Lösungen anbieten. Anfang dieses Jahres haben Wiz-Forscher auch Schwachstellen in der PostgreSQL-Implementierung von Microsoft Azure und Google Cloud Platform (GCP) entdeckt und veröffentlicht.
[Bringen Sie Ihre Karriere mit den besten Sicherheitszertifizierungen voran: Was sie leisten, wie viel sie kosten und was Sie brauchen. | Melden Sie sich für den CSO-Newsletter an. ]
Die quelloffene relationale Datenbank-Engine PostgreSQL wird seit mehr als 30 Jahren mit dem Schwerpunkt auf Stabilität, Hochverfügbarkeit und Skalierbarkeit entwickelt. Diese komplexe Software wurde jedoch nicht mit einem Berechtigungsmodell konzipiert, das für mandantenfähige Cloud-Umgebungen geeignet ist, in denen die Datenbankinstanzen voneinander und von der zugrunde liegenden Infrastruktur isoliert werden müssen.
1 Sekunde von 28 SekundenVolumen 0%
PostgreSQL verfügt über leistungsstarke Funktionen, die es Administratoren ermöglichen, Änderungen am Dateisystem des Servers vorzunehmen und sogar Code über Datenbankabfragen auszuführen, aber diese Operationen sind unsicher und müssen in einer gemeinsam genutzten Cloud-Umgebung eingeschränkt werden. Gleichzeitig müssen andere Verwaltungsvorgänge wie die Datenbankreplikation, das Erstellen von Prüfpunkten, die Installation von Erweiterungen und Ereignisauslösern für die Kunden verfügbar sein, damit der Dienst ordnungsgemäß funktioniert. Aus diesem Grund müssen Cloud-Service-Provider (CSPs) Workarounds entwickeln und Änderungen am Berechtigungsmodell von PostgreSQL vornehmen, um diese Funktionen zu ermöglichen, auch wenn Kunden nur mit eingeschränkten Konten arbeiten.
Privilegienerweiterung über SQL-Injection
Bei der Analyse der IBM-Cloud-Implementierung von PostgreSQL untersuchten die Wiz-Forscher die logischen Replikationsmechanismen, die den Benutzern zur Verfügung stehen. Diese Funktionalität wird mithilfe mehrerer Datenbankfunktionen implementiert, darunter eine Funktion namens create_subscription, die dem Datenbank-Superuser namens ibm gehört und von ihm ausgeführt wird.
Bei der Inspektion des Codes für diese Funktion stellten die Forscher eine SQL-Injection-Schwachstelle fest, die durch eine unsachgemäße Bereinigung der an die Funktion übergebenen Parameter verursacht wird. Dies bedeutet, dass sie beliebige SQL-Abfragen an die Funktion übergeben können und die Funktion diese als ibm-Superuser ausführt. Die Forscher nutzten diese Schwachstelle über eine PostgreSQL-COPY-Anweisung aus, um beliebige Befehle auf der zugrunde liegenden virtuellen Maschine, die die Datenbankinstanz hostet, auszuführen und eine Reverse Shell zu öffnen.
Über eine Shell auf einem Linux-System beginnen sie mit der Erkundung ihrer Umgebung, z. B. mit der Auflistung laufender Prozesse, der Überprüfung aktiver Netzwerkverbindungen, der Überprüfung des Inhalts der Datei /etc/passwd, in der die Systembenutzer aufgeführt sind, und der Durchführung eines Port-Scans unter Linux . Das interne Netzwerk entdeckt andere Server. Das weit verbreitete Port-Scanning erregte die Aufmerksamkeit des Sicherheitsteams von IBM, das sich mit dem Wiz-Team in Verbindung setzte, um sich über dessen Aktivitäten zu erkundigen.
"Nachdem wir unsere Arbeit besprochen und unsere Ideen mit ihnen geteilt hatten, erlaubten sie uns freundlicherweise, unsere Forschung fortzusetzen und die Grenzen der Sicherheit weiter herauszufordern, was die gesunde Sicherheitskultur des Unternehmens widerspiegelt", so das Wiz-Team.
Gespeicherte Anmeldedaten führen zu Angriffen auf die Lieferkette
Die gesammelten Informationen, wie z. B. Umgebungsvariablen, verrieten den Forschern, dass sie sich in einem Kubernetes (K8s)-Pod-Container befanden, und nach dem Durchsuchen des Dateisystems entdeckten sie, dass das K8s-API-Zugangs-Token lokal in einer Datei namens /var/run/secrets/kubernetes middle. io/serviceaccount/token gespeichert war. Mit dem API-Token können sie weitere Informationen über den K8s-Cluster sammeln, aber es stellt sich heraus, dass alle Pods mit ihrem Konto verknüpft sind und unter demselben Namespace laufen. Aber das ist keine Sackgasse.
K8s ist ein Container-Orchestrierungssystem für die Softwarebereitstellung, bei dem Container in der Regel über Images bereitgestellt werden - vorgefertigte Pakete, die alle für die Ausführung des Containers und seiner vorkonfigurierten Dienste erforderlichen Dateien enthalten. Diese Images werden in der Regel auf einem Container-Registry-Server gespeichert, der öffentlich oder privat sein kann. Im Fall von IBM Cloud handelt es sich um eine private Container-Registry, die eine Authentifizierung erfordert.
Die Forscher verwendeten API-Tokens, um die Konfiguration der Pods in ihrem Namensraum zu lesen, und fanden in diesen Konfigurationsdateien Zugangsschlüssel zu vier verschiedenen internen Container-Registrierungen. Eine Beschreibung des neu entdeckten Schlüssels in der IAM-API (Identity and Access Management) der IBM Cloud zeigt, dass er Lese- und Schreibzugriff auf die Container-Registry hat, was es den Forschern ermöglichen würde, bestehende Images mit bösartigen Images zu überschreiben.
Später stellte ich jedoch fest, dass die Beschreibung des Schlüssels ungenau war und ich nur Bilder herunterladen konnte. Diese Zugriffsebene hatte zwar Auswirkungen auf die Sicherheit, stellte aber keine direkte Bedrohung für andere IBM Cloud-Kunden dar, so dass die Forscher weitermachten.
Container-Images können viele sensible Informationen enthalten, die während der Bereitstellung verwendet und anschließend gelöscht werden, darunter Quellcode, interne Skripte, die auf andere Dienste in der Infrastruktur verweisen, und die für den Zugriff erforderlichen Anmeldeinformationen. Daher beschlossen die Forscher, alle Images vom Registrierungsdienst herunterzuladen und sie mit automatisierten Tools auf geheime Informationen wie Anmeldeinformationen und API-Tokens zu überprüfen.
"Um die Geheimnisse umfassend zu scannen, haben wir die Bilder dekomprimiert und die Kombination von Dateien untersucht, aus denen jedes Bild besteht", so die Forscher. "Container-Bilder basieren auf einer oder mehreren Ebenen; jede von ihnen kann unbeabsichtigt Geheimnisse enthalten. Wenn beispielsweise ein Geheimnis in einer Schicht vorhanden ist, aber aus der nächsten Schicht entfernt wird, ist es innerhalb des Containers völlig unsichtbar. Daher kann das Scannen jeder einzelnen Schicht mehr Geheimnisse enthüllen."
Die JSON-Manifestdatei für ein Container-Image enthält einen Abschnitt "history", in dem die historischen Befehle aufgelistet sind, die während des Erstellungsprozesses des jeweiligen Images ausgeführt wurden.
Lehren aus anderen Organisationen
Alle diese Probleme wurden dem IBM Cloud-Team privat gemeldet und von diesem behoben, aber sie sind nicht nur bei IBM zu finden. Nach Angaben des Wiz-Teams ist das Problem der "verstreuten Geheimnisse" in allen Cloud-Umgebungen verbreitet.
Automatisierte Build- und Deployment-Workflows hinterlassen oft Geheimnisse an verschiedenen Stellen, z. B. in Konfigurationsdateien, im Linux-Bash-Verlauf, in Protokolldateien usw., die Entwickler nach Abschluss des Deployments vergessen zu löschen. Außerdem laden manche Entwickler versehentlich ihre gesamten Git- und CircleCI-Konfigurationsdateien auf den Produktionsserver hoch. Zu den vergessenen Geheimnissen, die das Wiz-Team häufig aufdeckt, gehören Cloud-Zugangsschlüssel, Passwörter, CI/CD-Anmeldeinformationen und API-Zugangs-Tokens.
Ein weiteres häufiges Problem, das bei IBM Cloud-Angriffen eine wichtige Rolle spielt, ist das Fehlen strenger Zugangskontrollen zwischen Produktionsservern und internen CI/CD-Systemen. Dies ermöglicht es Angreifern oft, sich seitlich zu bewegen und in der Infrastruktur eines Unternehmens tiefer Fuß zu fassen.
Schließlich können private Container-Registrierungen Angreifern umfangreiche Informationen liefern, die über Anmeldedaten hinausgehen. Sie können Informationen über kritische Server innerhalb der Infrastruktur preisgeben oder sie können Code enthalten, der andere Schwachstellen offenbart. Das Wiz-Team sagt, dass Unternehmen sicherstellen sollten, dass ihre Container-Registrierungslösungen angemessene Zugriffskontrollen und Scoping implementieren.