Metoda Verify() dla kluczy bezpieczeństwa FIDO/U2F w bibliotece Golang Crypto nie sprawdzała flagi User Presence, co oznacza, że podpisy wygenerowane bez fizycznego dotknięcia klucza były akceptowane jako prawidłowe. Umożliwia to zdalne wykorzystanie klucza sprzętowego bez fizycznej interakcji użytkownika, co całkowicie podważa założenia ochrony opartej na obecności człowieka.
▸ Pokaż oryginał (EN)
The Verify() method for FIDO/U2F security key types (sk-ecdsa-sha2-nistp256@openssh.com, sk-ssh-ed25519@openssh.com) did not check the User Presence flag. Signatures generated without physical touch were accepted, allowing unattended use of a hardware security key. To restore the previous behavior, return a "no-touch-required" extension in Permissions.Extensions from PublicKeyCallback.
Klucze bezpieczeństwa FIDO/U2F (typy sk-ecdsa-sha2-nistp256@openssh.com oraz sk-ssh-ed25519@openssh.com) w ramach standardu wymagają fizycznego dotknięcia urządzenia przez użytkownika — fakt ten kodowany jest we fladze User Presence w strukturze podpisu. Metoda Verify() w bibliotece golang.org/x/crypto nie weryfikowała tej flagi, akceptując podpisy wygenerowane bez potwierdzenia fizycznej obecności. W efekcie atakujący posiadający dostęp do klucza prywatnego lub do urządzenia w trybie nieobsługiwanym (unattended) mógł uwierzytelnić się bez konieczności fizycznego dotknięcia tokena. Producent zaleca przywrócenie poprzedniego zachowania poprzez zwracanie rozszerzenia "no-touch-required" w polu Permissions.Extensions z funkcji PublicKeyCallback.
Atakujący może przeprowadzić nieautoryzowane uwierzytelnienie SSH z użyciem klucza FIDO/U2F bez fizycznej interakcji z tokenem sprzętowym, co skutkuje nieuprawnionym dostępem do systemu oraz potencjalnym naruszeniem poufności i integralności danych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://go.dev/cl/781662, https://pkg.go.dev/vuln/GO-2026-5019). Dodatkowo, w celu zachowania wymaganej weryfikacji fizycznej obecności użytkownika, należy skonfigurować PublicKeyCallback tak, aby zwracała rozszerzenie "no-touch-required" w polu Permissions.Extensions wyłącznie dla klientów, którym świadomie zezwala się na użycie klucza bez dotyku.
Biblioteka golang.org/x/crypto (Golang Crypto) — wersje wskazane w referencjach producenta; dotyczy implementacji obsługujących typy kluczy sk-ecdsa-sha2-nistp256@openssh.com oraz sk-ssh-ed25519@openssh.com
Podatność opublikowana 2026-05-22; identyfikator w bazie Go Vulnerability Database: GO-2026-5019. Zgłoszenie błędu dostępne pod adresem https://go.dev/issue/79566.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NGolang Crypto
APPGolang< 0.52.0
Powiązane podatności
Golang Crypto: brak wymuszenia ograniczenia ConfirmBeforeUse w NewKeyring()
Integer overflow w Golang Crypto SSH — nieskończona pętla przy zapisie >4GB
Golang Crypto: pominięcie ograniczeń przy przekazywaniu kluczy do zdalnego agenta SSH
Golang Crypto: resource leak przez niezamawiane odpowiedzi SSH global request
Nieprawidłowa weryfikacja unieważnionych kluczy CA w Golang Crypto