Podsumowanie
| Parametr | Wartość |
|---|---|
| CVE ID | CVE-2026-122311 |
| Źródło alertu | GitHub Advisory - Krytyczna podatność |
| Rok publikacji CVE | 2026 |
| Data publikacji | 2026-11-05 |
| Producent | Kyverno |
| Produkt | Kyverno |
| CVSS Score | 9.9 (Krytyczny) |
| EPSS Score | Brak danych |
| CISA KEV | Nie |
| Ransomware | Nie potwierdzono |
Opis podatności
Źródło: NVD, GitHub Security Advisories (kyverno/kyverno)
Kyverno to silnik polityk dla Kubernetes (kontroler admission), często używany do egzekwowania zasad bezpieczeństwa w klastrach współdzielonych przez wiele zespołów. Wydanie 1.19.2 naprawia siedem krytycznych podatności, z których większość pozwala użytkownikowi uprawnionemu tylko w swojej przestrzeni nazw (namespace) wyjść poza nią i działać z uprawnieniami kont serwisowych (ServiceAccount) Kyverno — w skrajnym przypadku przejmując cały klaster:
- CVE-2026-122311 (CVSS 9.9) — wersje od 1.16.0 przed 1.19.2 nie walidują segmentów ścieżki w argumencie resource funkcji resource.get() i resource.post(). Użytkownik, który może utworzyć NamespacedValidatingPolicy, wstawia segmenty
..i odczytuje oraz zapisuje dowolne obiekty klastra z użyciem ServiceAccount kontrolera admission, co prowadzi do przejęcia klastra.- CVE-2026-122310 (CVSS 9.9) — wersja 1.19.1 waliduje urlPath w context.apiCall polityki po jego oczyszczeniu, ale wykonuje surową ścieżkę, której fragment lub zapytanie klient Kubernetes odrzuca. Użytkownik z uprawnieniami w przestrzeni nazw ukrywa segmenty
../za znakiem#lub?i dociera do endpointów na poziomie klastra z ServiceAccount Kyverno, uzyskując uprawnienia administratora klastra (niepełna poprawka wcześniejszego błędu).- CVE-2026-122313 (CVSS 9.9) — wersje od 1.17.0 przed 1.19.2: wynik wyrażenia CEL targetMatchConstraints.expression w NamespacedMutatingPolicy nie jest sprawdzany pod kątem przestrzeni nazw. Atakujący wskazuje cel w innej przestrzeni (np. RoleBinding innego zespołu), a działający w całym klastrze background controller modyfikuje go — dodając podmioty atakującego lub zmieniając Role, NetworkPolicy i ConfigMap.
- CVE-2026-122304 (CVSS 9.9) — wersje od 1.17.0 przed 1.19.2: cleanup controller buduje mechanizm ładowania kontekstu z pustą (nil) polityką. Administrator przestrzeni nazw tworzy CleanupPolicy z wpisami apiCall lub globalReference i z ServiceAccount cleanup controllera odczytuje Secrets z innych przestrzeni oraz modyfikuje validatingwebhookconfigurations.
- CVE-2026-122303 (CVSS 9.9) — wersje od 1.17.0 przed 1.19.2: w trybie mutate-existing NamespacedMutatingPolicy wyrażenie targetMatchConstraints.expression może zwrócić literał mapy CEL ze sfabrykowanym celem i dowolnym metadata.namespace. Uprzywilejowany background controller nadpisuje wtedy Secrets, Deployments lub polityki w całym klastrze.
- CVE-2026-122302 (CVSS 9.8) — wersje przed 1.19.2: kontrola reguł generate przy admission sprawdza uprawnienia kontrolera, a nie autora polityki. Administrator przestrzeni nazw tworzy Policy z regułami generate wskazującymi inne przestrzenie lub zasoby klastrowe, a background controller tworzy lub klonuje zasoby w całym klastrze — ponad uprawnienia RBAC autora.
- CVE-2026-122321 (CVSS 9.1) — wersje od 1.18.0 przed 1.19.2: verifyImages zapamiętuje wyniki weryfikacji w cache pod kluczem będącym referencją obrazu (np. tagiem), a nie zweryfikowanym digestem, więc trafienie w cache pomija sprawdzenie podpisu i atestacji. Atakujący, który może uruchamiać workloady i przestawiać tag w rejestrze, „rozgrzewa” cache podpisanym obrazem, przepina tag i Kyverno dopuszcza niezweryfikowany obraz, przypinając go przez mutateDigest.
Wymagane działania
Zaktualizuj Kyverno do wersji 1.19.2, która naprawia wszystkie siedem podatności. Do czasu aktualizacji:
- ogranicz prawo tworzenia i modyfikacji polityk przestrzeni nazw (Policy, CleanupPolicy, NamespacedValidatingPolicy, NamespacedMutatingPolicy) do zaufanych administratorów — w klastrach wielodostępnych (multi-tenant) to właśnie najemcy są wektorem ataku,
- przejrzyj istniejące polityki namespaced pod kątem apiCall, globalReference, resource.get()/resource.post(), reguł generate i wyrażeń targetMatchConstraints,
- przejrzyj RoleBinding, ClusterRoleBinding, Secrets i validatingwebhookconfigurations pod kątem nieoczekiwanych zmian wykonanych przez ServiceAccount Kyverno,
- w politykach weryfikacji obrazów odwołuj się do obrazów po digeście, a nie po tagu, i ogranicz prawo przestawiania tagów w rejestrze.
Kogo dotyczy?
Podatności dotyczą organizacji, które używają Kyverno jako silnika polityk w klastrach Kubernetes (także w dystrybucjach zarządzanych, np. OpenShift, EKS, AKS, GKE, jeśli Kyverno zainstalowano samodzielnie lub z platformą). Najwyższe ryzyko dotyczy klastrów współdzielonych przez wiele zespołów lub klientów, w których najemcy mogą tworzyć polityki we własnych przestrzeniach nazw, oraz środowisk polegających na Kyverno w weryfikacji podpisów obrazów w łańcuchu dostaw oprogramowania.
Źródła
Potrzebujesz wsparcia w zabezpieczeniu systemów? Zespół nFlo oferuje usługi zarządzania podatnościami oraz SOC 24/7. Skontaktuj się z nami.
