Zranitelnost v GSSAPI patchi pro OpenSSH, vzdáleně zneužitelná před fázi autentizace

V používaném patche gssapi.patch, který v OpenSSH přidává podporu pro výměnu klíčů na základě GSSAPI, byla odhalena zranitelnost (CVE-2026-3497), která vede k dereferencování ukazatele, poškození paměti a obcházení mechanismu oddělení oprávnění (Privsep). Tuto zranitelnost je možné zneužít vzdáleně před provedením autentizace. Výzkumník, který problém odhalil, demonstroval iniciaci havárie procesu zasláním jednoho modifikovaného síťového paketu na SSH server. Není vyloučeno, že kromě odmítnutí služby existují i nebezpečnější možnosti zneužití zranitelnosti.

Je pozoruhodné, že v minulosti vývojáři OpenSSH odmítli přijmout změnu pro podporu GSSAPI do hlavního kódu kvůli pochybnostem o její bezpečnosti. Nicméně mnoho linuxových distribucí tento patch zařadilo do svých OpenSSH balíčků. V praxi existuje několik verzí GSSAPI-patche, ale většina z nich obsahuje chybu vedoucí k zranitelnosti. Oprava je zatím dostupná pouze ve formě patchu, jehož změny spočívají v nahrazení volání funkce sshpkt_disconnect() funkcí ssh_packet_disconnect() v souboru kexgsss.c.

V současné době je existence zranitelnosti potvrzena v Debianu a Ubuntu. U ostatních distribucí se ověřuje použití problematického patche a jeho náchylnost k zranitelnosti (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). Zranitelnost se projevuje pouze při aktivaci volby „GSSAPIKeyExchange yes“ v nastavení. Na možnost zneužití také ovlivňují možnosti kompilátoru, se kterými byl balíček ve distribucích sestaven.

Příčinou vzniku zranitelnosti je chyba ve funkci sshpkt_disconnect(), kvůli níž proces nebyl ukončen po přijetí disconnect zprávy, což útočníkovi umožňovalo v průběhu dojednávání klíčů zaslat logikou neplánovanou GSSAPI zprávu. serveru typ GSSAPI zprávy. Po přijetí mimořádné GSSAPI zprávy, server umístí jej do fronty a nepřeruší provádění programu, ale zároveň neinitializuje proměnné, které určuje parametry připojení. Následně v cyklu zpracování událostí se provádí kód, který čte neinicializovanou strukturu recv_tok ze zásobníku (čtou se data ponechaná v zásobníku z předchozího volání funkce), odesílá ji privilegovanému procesu přes IPC a poté předá do funkce gss_release_buffer(), která může zavolat funkci free() a uvolnit paměť pro neplatný ukazatel odkazující na náhodnou oblast paměti.

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