Podatność w Kamaji (Hosted Control Plane Manager dla Kubernetes) pozwala różnym najemcom (tenantom) o kolizyjnych znormalizowanych identyfikatorach na współdzielenie zasobów control-plane, co umożliwia odczyt, modyfikację lub zniszczenie danych Kubernetes innego najemcy. Jest to poważna luka w izolacji środowisk wielodostępnych.
▸ Pokaż oryginał (EN)
Kamaji is the Hosted Control Plane Manager for Kubernetes. Prior to 26.7.4-edge, Kamaji derives a TenantControlPlane datastore schema, database user, and etcd key prefix from a lossy namespace-and-name normalization in GetDefaultDatastoreSchema() and GetDefaultDatastoreUsername(), allowing distinct tenants with colliding normalized identifiers to share control-plane state and read, modify, or destroy another tenant's Kubernetes data. This issue is fixed in version 26.7.4-edge.
Funkcje GetDefaultDatastoreSchema() i GetDefaultDatastoreUsername() w Kamaji przeprowadzają stratną (lossy) normalizację nazwy i przestrzeni nazw (namespace-and-name) w celu wygenerowania schematu datastore, użytkownika bazy danych oraz prefiksu klucza etcd dla danego TenantControlPlane. Jeśli dwa odrębne obiekty TenantControlPlane posiadają nazwy, które po normalizacji dają identyczny wynik, przypisywany jest im ten sam schemat, użytkownik i prefiks etcd. W efekcie ich dane control-plane są fizycznie współdzielone, co całkowicie łamie izolację między najemcami.
Atakujący (lub przypadkowy najemca z kolizyjnym identyfikatorem) może odczytać, zmodyfikować lub usunąć dane Kubernetes należące do innego najemcy, uzyskując pełną kontrolę nad jego płaszczyzną sterowania (control plane) — w tym nad sekretami, konfiguracją klastra i zasobami.
Należy zaktualizować Kamaji do wersji 26.7.4-edge, w której problem został naprawiony. Szczegóły dostępne w oficjalnym security advisory: GHSA-4f3f-65vx-r34f oraz w referencjonowanym commicie naprawczym.
Kamaji we wszystkich wersjach poprzedzających 26.7.4-edge
Podatność dotyczy środowisk wielodostępnych (multi-tenant) opartych na Kamaji. Ryzyko wystąpienia kolizji identyfikatorów zależy od konwencji nazewniczej stosowanej przez administratorów TenantControlPlane.
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H