CRITICAL🇬🇧 English

CVE-2026-39832

Golang Crypto: pominięcie ograniczeń przy przekazywaniu kluczy do zdalnego agenta SSH

CVSS 9.1pub. 2026-05-22upd. 2026-07-03

Podatność w bibliotece Golang Crypto powoduje, że rozszerzenia ograniczeń kluczy (np. restrict-destination-v00@openssh.com) nie były serializowane podczas dodawania klucza do zdalnego agenta SSH. W efekcie ograniczenia dotyczące miejsca docelowego były po cichu usuwane przy przekazywaniu kluczy, co umożliwiało nieograniczone użycie klucza na zdalnym hoście.

Pokaż oryginał (EN)

When adding a key to a remote agent constraint extensions such as restrict-destination-v00@openssh.com were not serialized in the request. Destination restrictions were silently stripped when forwarding keys, allowing unrestricted use of the key on the remote host. The client now serializes all constraint extensions. Additionally, the in-memory keyring returned by NewKeyring() now rejects keys with unsupported constraint extensions instead of silently ignoring them.

🤖 Analiza AI
Jak działa

Gdy klucz był dodawany do zdalnego agenta SSH z rozszerzeniami ograniczeń (constraint extensions), biblioteka nie uwzględniała tych rozszerzeń w serializowanym żądaniu. Skutkowało to cichym pominięciem ograniczeń (ang. silently stripped) podczas operacji przekazywania (forwarding) klucza. Zdalny agent traktował przekazany klucz jako nieograniczony, ignorując intencje klienta dotyczące kontroli dostępu. Podatność wynika z nieprawidłowej obsługi deserializacji i serializacji rozszerzeń ograniczeń (CWE-502).

Skutki

Atakujący lub nieuprawniony proces mający dostęp do zdalnego agenta SSH może używać przekazanego klucza bez żadnych ograniczeń co do miejsca docelowego, naruszając zasady kontroli dostępu i umożliwiając nieuprawnione uwierzytelnianie oraz potencjalną modyfikację zasobów na zdalnych hostach.

Mitygacja

Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://go.dev/cl/778642, https://pkg.go.dev/vuln/GO-2026-5006). Po aktualizacji biblioteka poprawnie serializuje wszystkie rozszerzenia ograniczeń, a in-memory keyring zwracany przez NewKeyring() odrzuca klucze z nieobsługiwanymi rozszerzeniami zamiast je cicho ignorować.

Kogo dotyczy

Biblioteka Golang Crypto (golang.org/x/crypto) — wersje wskazane w referencjach producenta; dotyczy aplikacji korzystających z przekazywania kluczy do zdalnych agentów SSH oraz funkcji NewKeyring().

Uwagi

Zgłoszenie błędu zarejestrowane pod numerem go.dev/issue/79435. Podatność ujawniona poprzez listę golang-announce.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Golang Crypto

    APP
    Golang
    < 0.52.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Deserialization
CWE
Referencje

Powiązane podatności

CVE-2026-39833CRITICAL9.1PL ✓ten sam produkt

Golang Crypto: brak wymuszenia ograniczenia ConfirmBeforeUse w NewKeyring()

CVE-2026-39834CRITICAL9.1PL ✓ten sam produkt

Integer overflow w Golang Crypto SSH — nieskończona pętla przy zapisie >4GB

CVE-2026-39831CRITICAL9.1PL ✓ten sam produkt

Brak weryfikacji flagi User Presence w FIDO/U2F w Golang Crypto

CVE-2026-39830CRITICAL9.1PL ✓ten sam produkt

Golang Crypto: resource leak przez niezamawiane odpowiedzi SSH global request

CVE-2026-42508CRITICAL9.1PL ✓ten sam produkt

Nieprawidłowa weryfikacja unieważnionych kluczy CA w Golang Crypto