Je k dispozici opravená verze OpenSSH 9.9p2, která odstraňuje dvě zranitelnosti identifikované společností Qualys. Byla předvedena ukázka využití těchto zranitelností k provedení MITM útoku, který umožňuje při pokusu klienta o připojení k SSH serveru přesměrovat provoz na vlastní falešný server, obejít kontrolu hostitelských klíčů a vytvořit tak dojem, že klient se připojuje k požadovanému serveru (ssh klient přijme hostitelský klíč falešného serveru namísto klíče legálního serveru).
První zranitelnost (CVE-2025-26465) je způsobena logickou chybou v nástroji ssh, která umožňuje obejít identifikaci serveru a provést MITM útok. Problém se projevuje od verze OpenSSH 6.8p1 (prosinec 2014) v konfiguracích se zapnutým nastavením VerifyHostKeyDNS. V základní instalaci OpenSSH je tato volba ve výchozím nastavení vypnuta, avšak do března 2023 byla v nastaveních ssh ve FreeBSD zapnuta.
Podstatou problému je, že v kódu funkce verify_host_key_callback() se při volání funkce verify_host_key() kontroluje pouze chybový kód „-1“, zatímco jiné kódy, jako „-2“, jsou ignorovány. V důsledku toho funkce verify_host_key_callback() může vrátit úspěšný kód „0“, přestože funkce verify_host_key() vrátila chybu „-2“. Chybový kód „-2“ je vrácen funkcí verify_host_key() při nedostatku paměti. Pokud jsou vytvořeny podmínky, které znemožní alokaci paměti ve funkci verify_host_key(), SSH bude považovat, že hostitelský klíč byl úspěšně ověřen. K vytvoření těchto podmínek útočníkův falešný SSH server, na který je klient přesměrován, vrací hostitelský klíč maximální možné velikosti (256KB) a zároveň se využívá únik paměti na straně ssh klienta.
Podmínky pro vytvoření úniku paměti jsou dosaženy díky druhé zranitelnosti (CVE-2025-26466), která zasahuje jak klienta ssh, tak server sshd, a provozuje se bez autentizace. Zranitelnost umožňuje vyčerpat dostupnou paměť procesu a vytvořit vysokou zátěž CPU zasláním velkého počtu paketů SSH2_MSG_PING. V zpracovateli paketů SSH2_MSG_PING je únik paměti, který se projevuje od verze OpenSSH 9.5p1 (srpen 2023). Únik nastává tím, že pro každý přijatý 16-bajtový PING paket se alokuje 256-bajtový buffer pro vytvoření odpovědi, ale tento buffer je uvolněn až po dokončení dojednávání klíčů. Jako obranou cestou se doporučuje nastavit omezení pomocí direktiv LoginGraceTime, MaxStartups a PerSourcePenalties.
Zdroj: opennet.ru
