Opublikowano wydanie OpenSSH 10.0, otwartej implementacji klienta i serwera do pracy na protokołach SSH 2.0 i SFTP. Główne zmiany:
- Usunięto wsparcie dla cyfrowych podpisów opartych na algorytmie DSA, którego poziom bezpieczeństwa nie spełnia współczesnych wymagań. Koszty kontynuowania wsparcia dla niebezpiecznego algorytmu DSA nie mają uzasadnienia, a jego usunięcie pozwoli na zmotywowanie do zaprzestania wsparcia DSA w innych implementacjach SSH i bibliotekach kryptograficznych. Z defaultu korzystanie z kluczy DSA zakończono już w 2015 roku.
- Kontynuowane jest podział sshd na kilka oddzielnych plików wykonywalnych. W OpenSSH 9.8 z sshd wyodrębniono proces sshd-session, który realizuje zadania związane z obsługą sesji. W OpenSSH 10.0 z sshd-session do oddzielnego procesu sshd-auth przeniesiono kod związany z autoryzacją. Proces sshd-auth pozwala dodatkowo izolować dane związane z autoryzacją w adresowej przestrzeni oddzielnego procesu, co uniemożliwia dostęp do tych danych w pamięci w przypadku przeprowadzania ataków na kod używany do obsługi etapów połączenia przed zakończeniem autoryzacji. Ponadto zmiana nieznacznie zmniejszy zużycie pamięci, ponieważ kod związany z autoryzacją jest teraz obecny w pamięci tylko w czasie autoryzacji, a następnie jest usuwany po zakończeniu procesu sshd-auth.
- W ssh domyślnie zastosowano hybrydowy algorytm wymiany kluczy „mlkem768x25519-sha256”, odporny na ataki z użyciem komputera kwantowego, który stanowi kombinację X25519 ECDH oraz algorytmu ML-KEM (CRYSTALS-Kyber), standaryzowanych przez Krajowy Instytut Standardów i Technologii USA (NIST). ML-KEM wykorzystuje metody kryptografii oparte na rozwiązaniach problemów teorii sieci, które mają porównywalny czas rozwiązania na komputerach klasycznych i kwantowych.
- W ssh_config dodano wsparcie dla podmiany „%-token” w dyrektywach SetEnv i User oraz rozwiązywanie zmiennych środowiskowych.
- W ssh_config i sshd_config dodano wsparcie dla wyrażenia „Match version”, które pozwala stosować ustawienia w zależności od posiadanej wersji OpenSSH, na przykład, aby przypisać do OpenSSH 10, można użyć „Match version OpenSSH_10.*”.
- W ssh_config dodano wsparcie dla wyrażeń:
- „Match sessiontype”, umożliwiający stosowanie ustawień w zależności od typu żądanego sesji: „shell” dla sesji interaktywnych, „exec” dla uruchamiania poleceń, „subsystem” dla sftp oraz „none” dla tuneli i przekierowywania ruchu.
- „Match command” do powiązania działań z poleceniami podanymi w wierszu poleceń do uruchomienia przez ssh.
- „Match tagged „” oraz „Match command „” do powiązania z pustymi tagami i uruchomienia ssh bez określenia wykonywanego polecenia.
- W sshd_config dozwolone jest używanie masek w ścieżkach plików wskazanych w dyrektywach AuthorizedKeysFile oraz AuthorizedPrincipalsFile.
- W kliencie ssh dodano obsługę opcji „VersionAddendum” do dodawania dowolnego tekstu do linii z numerem wersji (wcześniej ta opcja była dostępna tylko dla serwera sshd).
- W narzędziach scp i sftp zapewniono przekazanie ustawienia „ControlMaster no” w celu zablokowania użycia istniejących połączeń przy ponownym łączeniu z hostem.
- W sshd domyślnie wyłączono wsparcie dla implementacji algorytmu Diffiego-Hellmana w polu skończonym, co doprowadziło do usunięcia z listy KEXAlgorithms metod „diffie-hellman-group*” oraz „diffie-hellman-group-exchange-*”. W porównaniu z algorytmem Diffiego-Hellmana opartym na krzywych eliptycznych, zdalna implementacja jest wolniejsza i wymaga dodatkowych zasobów obliczeniowych przy identycznym poziomie bezpieczeństwa.
- W ssh przy wyborze szyfrowania dla połączenia tryb AES-GCM jest teraz bardziej preferowany niż AES-CTR. Domyślnie ustalono listę priorytetów przy wyborze szyfrów: Chacha20/Poly1305, AES-GCM (128/256) i AES-CTR (128/192/256).
- W ssh-agent zrealizowano usunięcie wszystkich załadowanych kluczy po otrzymaniu sygnału SIGUSR1.
- W ssh-keygen dodano obsługę tokenów FIDO, które nie zwracają danych certyfikacji, takich jak WinHello.
- W ssh-agent dodano opcję „-Owebsafe-allow=…” do nadpisania białej listy aplikacji FIDO.
- Dodano eksperymentalne narzędzie regress/misc/ssh-verify-attestation do weryfikacji danych certyfikacji FIDO, opcjonalnie generowanych przez ssh-keygen przy rejestracji kluczy FIDO.
- W ssh-keygen dozwolone jest użycie „-” zamiast nazwy pliku.
- W ssh-agent oraz przenośnej wersji OpenSSH dodano wsparcie dla aktywacji przez gniazdo w stylu systemd, zrealizowane z wykorzystaniem mechanizmu LISTEN_PID/LISTEN_FDS.
- W przenośnej wersji:
- Zrealizowano wsparcie dla biblioteki kryptograficznej AWS-LC (AWS libcrypto).
- W sshd dodano wsparcie dla wtmpdb, analogi wtmp, która nie jest podatna na problem roku 2038.
- W sshd dodano opcję «—with-linux-memlock-onfault» do zablokowania sshd w pamięci (zakaz wypychania do swapu).
- Dodano opcję «—with-security-key-standalone» do kompilacji niezależnej biblioteki sk-libfido2.
- Usunięto ustawienia kompilacji ze specyfikacji pakietu RPM dla RHEL 6.
- Zmiana w sshd związana z bezpieczeństwem: dyrektywa DisableForwarding nie blokowała poprawnie przekazywania protokołu X11 i zapytań do ssh-agent. Przekazywanie X11 jest domyślnie wyłączone po stronie serwera, a przekazywanie ssh-agent po stronie klienta.
Źródło: opennet.ru
