Intro
Ende Januar 2023 erhielt Databricks einen Bericht von SEC Consult über eine potenzielle Schwachstelle, welche die Ausweitung von Berechtigungen ermöglicht (Privilege Escalation). Aufgrund der Schwachstelle war es einem authentifizierten, niedrig-privilegierten Benutzer eines Clusters möglich, seine Rechte auszuweiten und administrativen Zugriff auf andere Cluster im selben Workspace zu erhalten.
Der vollständige Artikel wurde in Zusammenarbeit mit Elia Florio, Sr. Director of Detection & Response bei Databricks, sowie Florian Roth und Marius Bartholdy, Security Consultants bei SEC Consult, auf Englisch verfasst. Wir haben Ihnen hier eine Kurzfassung auf Deutsch bereitgestellt.
Nach Kontaktaufnahme des SEC Consult Vulnerability Labs reagierte das Team von Databricks umgehend und begann, die Plattform zu überarbeiten:
- Es wurde die Erstellung neuer Arbeitsbereiche („Workspaces“) mit veralteten Init-Skripttypen sofort deaktiviert;
- Es wurde eine strenge End-of-Life-Frist (1. September 2023) für alle existierenden, veralteten Init-Skripttypen angekündigt, um die Migration zu sichereren Alternativen weiter zu beschleunigen;
- Es wurden Kunden über die nötige Migration informiert und Hilfe bei der Migration durch ein Tool zur Automatisierung des Prozesses bereitgestellt.
- Die Produkt- und Engineering-Teams von Databricks haben sich um weitere technische Verbesserungen bemüht, die Sie im vollständigen Bericht nachlesen können.
Technische Zusammenfassung
Ein Benutzer mit geringen Berechtigungen konnte durch eine Remote-Code-Execution Schwachstelle auf alle Dateien und Geheimnisse im Arbeitsbereich zugreifen und seine Berechtigungen auf die eines Arbeitsbereichsadministrators („Workspace Administrator“) eskalieren.
Das Databricks-Dateisystem (DBFS) kann von jedem Benutzer in einem Arbeitsbereich vollständig gelesen und bearbeitet werden. Das DBFS ist für alle Cluster eines Arbeitsbereichs gleich. Da dort auch Cluster-bezogene und eine alte, überholte Version globaler Init-Skripte gespeichert wurden, konnte ein authentifizierter Angreifer mit Standardberechtigungen ein vorhandenes Cluster-bezogenes Init-Skript finden und ändern, oder ein neues Skript am Standardspeicherort platzieren. Daraus ergeben sich zwei potenzielle Angriffsvektoren:
- Angriffe unter Ausnutzung vorhandener, cluster-spezifischer Init-Skripte: Cluster-spezifische Init-Skripte wurden üblicherweise in das DBFS hochgeladen. Da das DBFS von allen Clustern innerhalb desselben Arbeitsbereichs gemeinsam genutzt wird, konnten vorhandene Init-Skripte gefunden (durch Auflistung der Ordnerinhalte) oder erraten werden, die zuvor auf einem Cluster konfiguriert und in DBFS gespeichert wurden. Diese konnten dann mit Schadcode versehen werden und führten zu Root-Level Zugriff auf die Cluster-Ressourcen.
- Angriffe unter Ausnutzung von überholten, globalen Init-Skripten: Derselbe Angriffsvektor betraf eine alte, überholte Version globaler Init-Skripte. Von dieser wird bereits seit 2020 durch Databricks abgeraten. Jedoch blieben die überholten, globalen Init-Skripten standardmäßig in allen Arbeitsbereichen aktiviert. Sie waren im DBFS unter dbfs:/databricks/init/ gespeichert und wurden von jedem Cluster bei der Initialisierung ausgeführt. Daher würde das einfache Erstellen eines neuen Skripts in diesem Verzeichnis letztendlich zur Codeausführung auf allen Clustern führen.
Details dazu finden Sie in unserem Original-Artikel (auf Englisch) hier https://r.sec-consult.com/databr sowie ein Video (auf Youtube) hier https://r.sec-consult.com/dbyoutube