Podatność typu code injection w Flux2 oraz powiązanych kontrolerach (helm-controller, kustomize-controller) umożliwia uwierzytelnionemu użytkownikowi wykonanie dowolnego kodu poprzez spreparowany plik Kubeconfig. W środowiskach wielodostępnych podatność może dodatkowo prowadzić do privilege escalation, jeśli konto serwisowe kontrolera posiada podwyższone uprawnienia.
▸ Pokaż oryginał (EN)
Flux2 is an open and extensible continuous delivery solution for Kubernetes. Flux2 versions between 0.1.0 and 0.29.0, helm-controller 0.1.0 to v0.19.0, and kustomize-controller 0.1.0 to v0.23.0 are vulnerable to Code Injection via malicious Kubeconfig. In multi-tenancy deployments this can also lead to privilege escalation if the controller's service account has elevated permissions. Workarounds include disabling functionality via Validating Admission webhooks by restricting users from setting the `spec.kubeConfig` field in Flux `Kustomization` and `HelmRelease` objects. Additional mitigations include applying restrictive AppArmor and SELinux profiles on the controller’s pod to limit what binaries can be executed. This vulnerability is fixed in kustomize-controller v0.23.0 and helm-controller v0.19.0, both included in flux2 v0.29.0
Atakujący z dostępem do tworzenia lub modyfikowania obiektów Flux (`Kustomization` lub `HelmRelease`) może ustawić pole `spec.kubeConfig` na złośliwą wartość. Kontroler przetwarza podany Kubeconfig bez odpowiedniej walidacji, co pozwala na wstrzyknięcie i wykonanie arbitralnego kodu w kontekście procesu kontrolera. W środowiskach multi-tenancy, jeśli konto serwisowe kontrolera dysponuje szerokimi uprawnieniami w klastrze Kubernetes, atakujący może eskalować swoje uprawnienia ponad przypisaną mu rolę.
Atakujący może wykonać dowolny kod w środowisku kontrolera, uzyskując pełny dostęp do poufnych danych, możliwość modyfikacji zasobów klastra oraz zakłócenia jego działania. W scenariuszu wielodostępnym możliwe jest przejęcie uprawnień innych najemców lub uprawnień administracyjnych klastra.
Należy zaktualizować do kustomize-controller v0.23.0 oraz helm-controller v0.19.0, które są zawarte w Flux2 v0.29.0. Jako obejście tymczasowe zaleca się ograniczenie możliwości ustawiania pola `spec.kubeConfig` w obiektach `Kustomization` i `HelmRelease` poprzez Validating Admission Webhooks. Dodatkowym środkiem zaradczym jest zastosowanie restrykcyjnych profili AppArmor i SELinux na podach kontrolera w celu ograniczenia możliwości wykonywania procesów.
Flux2 w wersjach od 0.1.0 do 0.29.0 (wyłącznie), helm-controller od 0.1.0 do v0.19.0 (wyłącznie), kustomize-controller od 0.1.0 do v0.23.0 (wyłącznie).
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HFluxcd Flux2
APPFluxcd0.1.0 – 0.29.0 (bez)Fluxcd Helm Controller
APPFluxcd0.2.0 – 0.19.0 (bez)Fluxcd Kustomize Controller
APPFluxcd0.1.0 – 0.23.0 (bez)
Powiązane podatności
Path Traversal w Flux kustomize-controller umożliwia ujawnienie danych i privilege escalation
Flux2 is a tool for keeping Kubernetes clusters in sync with sources of configuration, and Flux's helm-control...
Flux is a tool for keeping Kubernetes clusters in sync with sources of configuration (like Git repositories), ...
Flux is an open and extensible continuous delivery solution for Kubernetes. Path Traversal in the kustomize-co...
kustomize-controller is a Kubernetes operator, specialized in running continuous delivery pipelines for infras...