Standardmäßig wird jedem Pod in Kubernetes das default ServiceAccount zugewiesen, das (vor Version v1.22) ein automatisch eingebundenes Token enthält, das dem Pod Zugriff auf die Kubernetes API gewährt. Während diese Funktion die API Interaktion für Anwendungen vereinfacht, führt sie auch zu mehreren Sicherheitsrisiken, die die Integrität des Clusters gefährden können.
Übermäßige Berechtigungen
Das default ServiceAccount Token kann mehr Berechtigungen enthalten als notwendig, sodass Pods Zugriff auf die Kubernetes API erhalten – möglicherweise auch auf sensible oder kritische Cluster Ressourcen. Angreifer könnten dies ausnutzen, um unautorisierte Aktionen innerhalb des Clusters auszuführen.
Privilegieneskalation
Falls ein Angreifer einen Pod kompromittiert, kann er das default ServiceAccount Token nutzen, um mit der Kubernetes API zu interagieren, Privilegien zu eskalieren und potenziell den gesamten Cluster zu kompromittieren.
Verstoß gegen das Prinzip der minimalen Berechtigungen
Das automatische Einbinden des default ServiceAccount-Tokens verstößt gegen das Least Privilege Principle, das besagt, dass jeder Pod nur die minimal notwendigen Berechtigungen für seine spezifische Funktion haben sollte. Dadurch wird der Zugriffsumfang für jeden Pod im Cluster unnötig erweitert.
Um diese Risiken zu minimieren, sollte das automatische Einbinden des default ServiceAccount Tokens deaktiviert und stattdessen spezifische Berechtigungen für jeden Pod gezielt zugewiesen werden.