Po pięciu miesiącach prac rozwojowych wydanie , otwartą implementację klienta i serwera do pracy z protokołami SSH 2.0 i SFTP.
Główne zmiany:
- W ssh i sshd dodano eksperymentalne wsparcie dla metody wymiany kluczy odpornej na ataki z użyciem komputera kwantowego. Komputery kwantowe rozwiązują problem rozkładu liczby naturalnej na czynniki pierwsze, który stanowi podstawę nowoczesnych algorytmów szyfrowania asymetrycznego, znacznie szybciej niż klasyczne procesory. Proponowana metoda opiera się na algorytmie (funkcja ntrup4591761), opracowanej dla postkwantowych systemów kryptograficznych, oraz metodzie wymiany kluczy opartej na krzywych eliptycznych X25519;
- W sshd w dyrektywach ListenAddress i PermitOpen zakończono wsparcie dla przestarzałej składni „host/port”, wprowadzonej w 2001 roku jako alternatywa dla „host:port” w celu uproszczenia pracy z IPv6. W obecnych warunkach dla IPv6 ustabilizowała się składnia „[::1]:22”, a „host/port” często mylona jest z oznaczeniem podsieci (CIDR);
- W ssh, ssh-agent i ssh-add dodano wsparcie dla kluczy w tokenach PKCS#11;
- W ssh-keygen domyślny rozmiar klucza RSA został zwiększony do 3072 bitów, zgodnie z nowymi zaleceniami NIST;
- W ssh pozwolono na użycie ustawienia „PKCS11Provider=none” w celu nadpisania dyrektywy PKCS11Provider określonej w ssh_config;
- W sshd zapewniono rejestrowanie w logach sytuacji, gdy połączenie zostało zakończone podczas próby wykonania poleceń zablokowanych ograniczeniem „ForceCommand=internal-sftp” w sshd_config;
- W ssh podczas wyświetlania zapytania o potwierdzenie przyjęcia nowego klucza hosta, zamiast odpowiedzi „yes” poprawnym jest teraz identyfikator odcisku klucza (w odpowiedzi na zaproszenie do potwierdzenia połączenia użytkownik może skopiować z bufora wymiany osobno otrzymany referencyjny hasz, aby ręcznie nie zajmować się jego porównywaniem);
- W ssh-keygen zapewniono automatyczne zwiększanie numeru sekwencji w certyfikacie podczas tworzenia podpisów cyfrowych dla wielu certyfikatów w wierszu poleceń;
- W scp i sftp dodano nową opcję „-J”, równoważną ustawieniu ProxyJump;
- W ssh-agent, ssh-pkcs11-helper i ssh-add dodano obsługę opcji wiersza poleceń „-v” w celu zwiększenia informacyjności wyjścia (przy podaniu ta opcja jest przekazywana także do procesów potomnych, na przykład, gdy z ssh-agent wywoływany jest ssh-pkcs11-helper);
- W ssh-add dodano opcję „-T” do testowania przydatności kluczy w ssh-agent do przeprowadzania operacji tworzenia i weryfikacji podpisów cyfrowych;
- W sftp-server zaimplementowano wsparcie dla rozszerzenia protokołu „lsetstat at openssh.com”, dodającego dla SFTP wsparcie dla operacji SSH2_FXP_SETSTAT, jednak bez podążania za dowiązaniami symbolicznymi;
- W sftp dodano opcję „-h” do wykonywania poleceń chown/chgrp/chmod z zapytaniami, które nie korzystają z dowiązań symbolicznych;
- W sshd zapewniono ustawienie zmiennej środowiskowej $SSH_CONNECTION dla PAM;
- Dla sshd w ssh_config dodano tryb dopasowania „Match final”, analogiczny do „Match canonical”, lecz nie wymagający włączenia normalizacji nazwy hosta;
- W sftp dodano wsparcie dla prefiksu ‘@’ do wyłączenia translacji wyjścia poleceń wykonywanych w trybie wsadowym;
- Podczas wyświetlania zawartości certyfikatu przy użyciu polecenia
„ssh-keygen -Lf /path/certificate” teraz wyświetlany jest algorytm użyty przez urząd certyfikacji do potwierdzenia certyfikatu; - Ulepszono wsparcie dla środowiska Cygwin, na przykład zapewniono porównanie nazw grup i użytkowników bez uwzględnienia wielkości liter. Proces sshd w porcie dla Cygwin zmieniono na cygsshd, aby uniknąć kolizji z portem OpenSSH dostarczanym przez Microsoft;
- Dodano możliwość kompilacji z eksperymentalną gałęzią OpenSSL 3.x;
- Usunięto (CVE-2019-6111) w implementacji narzędzia scp, które pozwala na nadpisywanie dowolnych plików w docelowym katalogu po stronie klienta przy połączeniu z kontrolowanym przez atakującego serwerem. Problem polega na tym, że przy użyciu scp serwer podejmuje decyzję o tym, które pliki i katalogi wysłać do klienta, a klient jedynie sprawdza poprawność zwracanych nazw obiektów. Weryfikacja po stronie klienta ogranicza się jedynie do blokowania wyjścia poza bieżący katalog („.. /”), ale nie uwzględnia przesyłania plików o nazwach różniących się od pierwotnie zażądanych. W przypadku rekurencyjnego kopiowania (-r) można w ten sposób manipulować także nazwami podkatalogów, oprócz nazw plików. Na przykład, podczas kopiowania przez użytkownika do katalogu domowego plików, kontrolowany przez atakujących serwer może zamiast żądanych plików wydać pliki o nazwach .bash_aliases lub .ssh/authorized_keys, które zostaną zapisane przez narzędzie scp w katalogu domowym użytkownika.
W nowej wersji narzędzia scp dodano sprawdzenie zgodności żądanych i wydanych przez serwer nazw plików, które jest przeprowadzane po stronie klienta. Mogą wystąpić problemy z obsługą wzorców, ponieważ znaki wzorców mogą być różnie traktowane po stronie serwera i klienta. W przypadku, gdy z powodu takich różnic klient przestanie akceptować pliki, w scp dodano opcję „-T”, która pozwala wyłączyć sprawdzanie po stronie klienta. Aby w pełni rozwiązać problem, konieczne jest koncepcyjne przeprojektowanie protokołu scp, który już sam w sobie jest przestarzały, dlatego zamiast niego zaleca się użycie bardziej nowoczesnych protokołów, takich jak sftp i rsync.
Źródło: opennet.ru
