CVE-2024-45337
KrytyczneCVSS 9.1Streszczenie
Podatność w bibliotece golang.org/x/crypto/ssh dotyczy niewłaściwego użycia funkcji ServerConfig.PublicKeyCallback, co może prowadzić do obejścia autoryzacji. Aplikacje, które przechowują klucze przekazane do tego callbacku i podejmują decyzje bezpieczeństwa na ich podstawie, mogą błędnie założyć, że klient kontroluje klucz użyty do uwierzytelnienia. W wersji v0.31.0 wprowadzono częściowe złagodzenie, wymuszając, aby ostatni klucz przekazany do callbacku był tym użytym do uwierzytelnienia.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do obejścia mechanizmów autoryzacji, podszywając się pod innego użytkownika lub uzyskując nieautoryzowany dostęp do systemu. Ryzyko dotyczy organizacji wykorzystujących bibliotekę golang.org/x/crypto/ssh w aplikacjach serwerowych SSH, które niewłaściwie używają PublicKeyCallback do podejmowania decyzji bezpieczeństwa.
Rekomendacja
Zaktualizuj bibliotekę golang.org/x/crypto/ssh do wersji v0.31.0 lub nowszej. Przejrzyj kod aplikacji pod kątem użycia ServerConfig.PublicKeyCallback i zastąp przechowywanie kluczy w stanie zewnętrznym wykorzystaniem pola Extensions zwracanego przez callbacki uwierzytelniania oraz pola ServerConn.Permissions.
Powiązane podatności
- CVE-2026-100109Krytyczne
Wtyczka WordPress Security For WooCommerce w wersjach 1.0.10–1.0.16 nie sprawdza uprawnień podczas tworzenia użytkowników przez akcję dostępną dla niezalogowanych odwiedzających i pozwala wybrać rolę nowego konta. Umożliwia to nieuwierzytelnionemu atakującemu utworzenie konta administratora i przejęcie witryny.
- CVE-2026-123025Krytyczne
W pluginie os-acme-client dla OPNsense (do wersji 4.17) wykryto podatność na wstrzyknięcie poleceń systemu operacyjnego w module walidacji Google Cloud DNS. Metoda DnsGcloud::prepare() dekoduje pole modelu dns_gcloud_key i bez walidacji ani escapowania wstawia wartości gcloud_account i gcloud_project do polecenia powłoki przekazywanego do proc_open() przez LeUtils::run_shell_command(). Uwierzytelniony zdalny użytkownik z uprawnieniami do wystawiania lub odnawiania certyfikatów przez WebGUI/API może uzyskać wykonanie dowolnego kodu jako root.
- CVE-2026-122992Krytyczne
W G4KLX DStarGateway i F4FXL DStarGateway przed wersją 7b75de6 funkcja dstarCallsignToAPRS w APRSUtils.cpp zawiera błąd niedomiaru liczby całkowitej wywołany pustym polem nadawcy RS-MS1A.
- CVE-2026-122321Krytyczne
Kyverno w wersji 1.18.0 przed 1.19.2 zawiera obejście weryfikacji podpisu w verifyImages, ponieważ wyniki weryfikacji są buforowane według ciągu referencji obrazu (np. tagu), a nie powiązane z zweryfikowanym skrótem, więc trafienia w pamięć podręczną pomijają sprawdzanie podpisów i atestacji. Atakujący mogący przesyłać obciążenia i zmieniać tag rejestru może rozgrzać pamięć podręczną podpisanym obrazem, przestawić tag i doprowadzić do przyjęcia niezweryfikowanego obrazu z przypiętym skrótem przez mutateDigest.
- CVE-2026-122313Krytyczne
Kyverno od wersji 1.17.0 przed 1.19.2 zawiera podatność na eskalację uprawnień umożliwiającą najemcom o zasięgu przestrzeni nazw modyfikowanie zasobów w innych przestrzeniach nazw poprzez wynik CEL targetMatchConstraints.expression w NamespacedMutatingPolicy bez sprawdzeń przestrzeni nazw. Atakujący mogą wyemitować dosłowny cel, taki jak RoleBinding innego najemcy, który kontroler w tle o zasięgu klastra następnie zmodyfikuje, dodając podmioty atakującego lub zmieniając Role, NetworkPolicies i ConfigMaps.
- CVE-2026-122311Krytyczne
Kyverno od wersji 1.16.0 przed 1.19.2 nie waliduje segmentów ścieżki w argumencie zasobu resource.get() i resource.post(), umożliwiając politykom CEL o zasięgu przestrzeni nazw wyjście poza swoją przestrzeń nazw. Najemcy mogący tworzyć NamespacedValidatingPolicy mogą wstawiać segmenty .., aby odczytywać i zapisywać dowolne obiekty klastra przy użyciu konta usługi kontrolera dopuszczania, prowadząc do przejęcia klastra.
- CVE-2026-122310Krytyczne
Kyverno od wersji 1.19.1 przed 1.19.2 waliduje urlPath w context.apiCall polityki po jego oczyszczeniu, ale wykonuje surową ścieżkę, której fragment lub zapytanie klient Kubernetes odrzuca. Użytkownik o zasięgu przestrzeni nazw mogący tworzyć politykę może ukryć segmenty ../ za # lub ?, aby dotrzeć do punktów końcowych o zasięgu klastra przy użyciu konta usługi Kyverno, uzyskując uprawnienia administratora klastra.
- CVE-2026-122304Krytyczne
Kyverno od wersji 1.17.0 przed 1.19.2 zawiera podatność na obejście autoryzacji umożliwiającą administratorom przestrzeni nazw wyjście poza ograniczenia przestrzeni nazw, ponieważ kontroler czyszczenia buduje kontekst ładowania z polityką nil. Atakujący mogą tworzyć CleanupPolicy w przestrzeni nazw z wpisami kontekstu apiCall lub globalReference, aby odczytywać Secrets z innych przestrzeni nazw i modyfikować validatingwebhookconfigurations przy użyciu konta usługi kontrolera czyszczenia.
- CVE-2026-122303Krytyczne
Kyverno od wersji 1.17.0 przed 1.19.2 zawiera podatność na obejście autoryzacji umożliwiającą najemcom przestrzeni nazw nadpisywanie zasobów w innych przestrzeniach nazw poprzez NamespacedMutatingPolicy mutate-existing targetMatchConstraints.expression. Atakujący mogą zwrócić literał mapy CEL fabrykujący cel z wybraną przez atakującego metadata.namespace, powodując nadpisanie przez uprzywilejowany kontroler w tle Secrets, Deployments lub polityk w całym klastrze.
- CVE-2026-122302Krytyczne
Kyverno przed wersją 1.19.2 zawiera podatność na eskalację uprawnień umożliwiającą administratorom przestrzeni nazw tworzenie zasobów poza ich RBAC, ponieważ sprawdzenia dopuszczania reguł generate weryfikują uprawnienia kontrolera, a nie autora. Atakujący mogą tworzyć politykę w przestrzeni nazw z regułami generate skierowanymi do innych przestrzeni nazw lub rodzajów o zasięgu klastra, powodując tworzenie lub klonowanie zasobów w całym klastrze przez kontroler w tle.
Oryginalny opis (angielski, źródło NVD)
Applications and libraries which misuse connection.serverAuthenticate (via callback field ServerConfig.PublicKeyCallback) may be susceptible to an authorization bypass. The documentation for ServerConfig.PublicKeyCallback says that "A call to this function does not guarantee that the key offered is in fact used to authenticate." Specifically, the SSH protocol allows clients to inquire about whether a public key is acceptable before proving control of the corresponding private key. PublicKeyCallback may be called with multiple keys, and the order in which the keys were provided cannot be used to infer which key the client successfully authenticated with, if any. Some applications, which store the key(s) passed to PublicKeyCallback (or derived information) and make security relevant determinations based on it once the connection is established, may make incorrect assumptions. For example, an attacker may send public keys A and B, and then authenticate with A. PublicKeyCallback would be called only twice, first with A and then with B. A vulnerable application may then make authorization decisions based on key B for which the attacker does not actually control the private key. Since this API is widely misused, as a partial mitigation golang.org/x/[email protected] enforces the property that, when successfully authenticating via public key, the last key passed to ServerConfig.PublicKeyCallback will be the key used to authenticate the connection. PublicKeyCallback will now be called multiple times with the same key, if necessary. Note that the client may still not control the last key passed to PublicKeyCallback if the connection is then authenticated with a different method, such as PasswordCallback, KeyboardInteractiveCallback, or NoClientAuth. Users should be using the Extensions field of the Permissions return value from the various authentication callbacks to record data associated with the authentication attempt instead of referencing external state. Once the connection is established the state corresponding to the successful authentication attempt can be retrieved via the ServerConn.Permissions field. Note that some third-party libraries misuse the Permissions type by sharing it across authentication attempts; users of third-party libraries should refer to the relevant projects for guidance.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

