Zranitelnost v OpenSSH, která umožňuje vzdálené spuštění kódu s právy roota na serverech s Glibc.

Společnost Qualys odhalila kritickou zranitelnost (CVE-2024-6387) v OpenSSH, umožňující vzdálené provádění kódu s právy root bez autentizace. Zranitelnost, která byla pojmenována regreSSHion, se projevuje v konfiguraci o defaultu od verze OpenSSH 8.5 na systémech se standardní knihovnou Glibc.

Možnost provedení útoku byla demonstrována na 32bitovém systému s Glibc se zapnutou ochranou ASLR (náhodná organizace adresního prostoru). Pro úspěšný útok v laboratorních podmínkách bylo zapotřebí 6-8 hodin, během nichž byly stále navazovány spojení s maximální intenzitou povolenou v konfiguraci sshd. serverem Provádění útoku je usnadněno a vyžaduje méně času na systémech bez ASLR nebo v distribucích, které používají modifikovaný OpenSSH, v němž je vypnuta opětovná náhodná organizace ASLR pro každé spojení. Pracovní prototyp exploitu před celkovým odstraněním zranitelnosti není plánováno zveřejňovat veřejně, avšak k dispozici je dostatečně podrobný popis podstaty zranitelnosti, který činí objevování třetích stran exploitu otázkou času.

Nelze vyloučit možnost provedení útoku i na 64bitové systémy, ale funkční exploit pro takové systémy zatím není připraven. Předpokládá se, že provedení útoku na 64bitové systémy bude trvat mnohem déle, ale ne déle než týden. OpenSSH v OpenBSD na tuto problematiku není náchylné, protože v tomto systému je od roku 2001 používán ochranný mechanismus, který blokuje podobné třídy útoků. V jiných systémech na bázi standardních knihoven odlišných od Glibc je teoreticky možná adaptace metody k provedení útoku (toto téma zatím v Qualys nebylo zkoumáno).

Zranitelnost byla odstraněna v dnešním vydání OpenSSH 9.8 (oprava). Sledovat publikaci aktualizací balíčků v distribucích lze na stránkách: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, ROSA, Gentoo, ALT Linux, Arch a FreeBSD. Jako obcházející mechanismus pro blokaci zranitelnosti v sshd_config lze nastavit parametr „LoginGraceTime=0“, přičemž vypnutí časového limitu usnadní iniciaci odmítnutí služby při navázání velkého počtu spojení, překračujících limity stanovené parametrem MaxStartups.
Jedním z příznaků pokusů o útok je výskyt velkého množství záznamů „Timeout before authentication“ v protokolu.

Zranitelnost vznikla v důsledku regresní změny, která byla součástí vydání OpenSSH 8.5 a vedla k závodnímu stavu v kódu zpracování signálů v sshd. Regrese vedla k ukončení účinnosti ochrany před starou zranitelností CVE-2006-5051, která se projevovala do verze OpenSSH 4.4 (rok 2006) a měla teoretický charakter.
Během vývoje OpenSSH 8.5 byl omylem odstraněn blok „#ifdef DO_LOG_SAFE_IN_SIGHAND“ z funkce sigdie(), která je přímo volána z obsluhy SIGALRM.

Obsluha SIGALRM se ve sshd vyvolává asynchronně, pokud se klient během časového limitu připojení (LoginGraceTime, výchozí hodnota 120 sek) neautentizoval. Útok je založen na tom, že obsluha signálu volá funkce, které nejsou bezpečné při asynchronním zpracování signálů, jako je syslog(). Funkce syslog() v Glibc není navržena pro použití v asynchronně prováděných obsluhách signálů, protože volá funkce malloc() a free(). Vyvolání signálu SIGALRM, které přerušuje běh určitého kódu v sshd, může vést k porušení stavu provádění, a úloha exploit je vytvářet podmínky pro přerušení potřebného kódu ve správném okamžiku jeho provádění. Zranitelnost se nedotýká OpenBSD, protože zde místo syslog() z obsluhy signálu SIGALRM je volána funkce syslog_r(), speciálně vytvořená pro asynchronní spuštění.

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