Vydání OpenSSH 9.2 s odstraněním zranitelnosti projevující se před autentizací

Bylo zveřejněno vydání OpenSSH 9.2, otevřené implementace klienta a serveru pro práci s protokoly SSH 2.0 a SFTP. V nové verzi byla odstraněna zranitelnost, která vede k dvojímu uvolnění paměti v fázi před autentizací. Zranitelnosti je vystaven pouze vydání OpenSSH 9.1, v dřívějších verzích se problém neprojevuje.

Pro vytvoření podmínek pro vznik zranitelnosti stačí změnit banner SSH klienta na „SSH-2.0-FuTTYSH_9.1p1“, aby se nastavily flagy „SSH_BUG_CURVE25519PAD“ a „SSH_OLD_DHGEX“, které závisí na verzi SSH klienta. Po nastavení těchto flagů je paměť pro buffer „options.kex_algorithms“ uvolněna dvakrát — při vykonávání funkce do_ssh2_kex(), která volá compat_kex_proposal(), a při vykonávání funkce do_authentication2(), která volá řetězce input_userauth_request(), mm_getpwnamallow(), copy_set_server_options(), assemble_algorithms() a kex_assemble_names().

Vytvoření funkčního exploit pro zranitelnost se považuje za nepravděpodobné, protože proces exploitace je příliš složitý — moderní knihovny pro správu paměti poskytují ochranu proti dvojímu uvolnění paměti a proces pre-auth, v němž se vyskytuje chyba, se provádí s omezenými oprávněními v izolovaném sandboxovém prostředí.

Kromě uvedené zranitelnosti byly v novém vydání také odstraněny další dvě bezpečnostní problémy:

  • Chyba při zpracování nastavení „PermitRemoteOpen“, která vede k ignorování prvního argumentu, pokud se liší od hodnot „any“ a „none“. Problém se projevuje ve verzích vyšších než OpenSSH 8.7 a vede k vynechání kontroly při určení pouze jednoho oprávnění.
  • Útočník, který kontroluje DNS server používaný pro určení názvů, může dosáhnout vložení speciálních znaků (například „*“) do souborů known_hosts, pokud jsou ve konfiguraci zapnuty možnosti CanonicalizeHostname a CanonicalizePermittedCNAMEs, a systémový resolver neověřuje správnost odpovědí od DNS serveru. Provádění útoku se považuje za nepravděpodobné, protože vrácené názvy musí splňovat podmínky stanovené prostřednictvím CanonicalizePermittedCNAMEs.

Další změny:

  • Do souboru ssh_config byla přidána konfigurace EnableEscapeCommandline, která řídí aktivaci zpracování escape sekvence na straně klienta „~C“, jež poskytuje příkazový řádek. Zpracování „~C“ je nyní ve výchozím nastavení deaktivováno za účelem použití přísnější izolace sandboxu, což může potenciálně způsobit problémy v systémech, kde je „~C“ využíváno k přesměrování portů během provozu.
  • Do souboru sshd_config byla přidána direktiva ChannelTimeout pro nastavení časového limitu neaktivity kanálu (kanály, ve kterých v uvedeném časovém rámci nebyl zaznamenán žádný provoz, budou automaticky uzavřeny). Pro relaci, X11, agenta a přesměrování provozu mohou být nastaveny různé časové limity.
  • Do souboru sshd_config byla přidána direktiva UnusedConnectionTimeout, která umožňuje nastavit časový limit pro ukončení klientských připojení, která jsou určitou dobu bez aktivních kanálů.
  • Do sshd byla přidána volba „-V“ pro zobrazení verze obdobně jako u podobné volby v klientovi ssh.
  • Do výstupu „ssh -G“ byla přidána řádka „Host“, odrážející hodnotu argumentu s názvem hostitele.
  • Do scp a sftp byla přidána volba „-X“ pro řízení parametru protokolu SFTP, jako je velikost vyrovnávací paměti a počet čekajících požadavků na dokončení.
  • Ve ssh-keyscan bylo povoleno skenování celých adresních rozsahů CIDR, jako například „ssh-keyscan 192.168.0.0/24“.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster