Qualys avastas kriitilise haavatavuse (CVE-2024-6387) OpenSSH-s, mis võimaldab kaugkäivitamist root-kasutajaga ilma autentimiseta. Haavatavus, mille koodnimi on regreSSHion, avaldub vaikimisi konfiguratsioonis alates OpenSSH 8.5 versioonist süsteemides, kus on tavaline Glibci teek.
Rünnaku võimalust demonstreeriti 32-bitisel süsteemil Glibc-ga, kus oli sisse lülitatud ASLR kaitse (aadressiruumi randomiseerimine). Eduka rünnaku teostamiseks laboris oli vajalik 6-8 tundi, mille jooksul loodi pidevalt ühendusi maksimaalse lubatud intensiivsusega sshd konfiguratsioonis. serverilt Rünnaku sooritamine on lihtsam ja nõuab vähem aega süsteemides, kus ASLR puudub, või jaotustes, mis kasutavad muudetud OpenSSH-d, kus on keelatud ASLR-i korduv randomiseerimine igaühenduse jaoks. Tööprototüüpi eksploitist ei kavatseta avalikult avaldada enne, kui haavatavus on laialdaselt kõrvaldatud, kuid samas on saadaval piisavalt üksikasjalik kirjeldus haavatavuse olemusest, mis muudab kolmandate osapoolte eksploitide tekkimise ajaküsimuseks.
Ei välistata rünnaku võimalust ka 64-bitistes süsteemides, kuid sellistele süsteemidele ei ole veel töötavat eksploitit valmis. Eeldatakse, et rünnaku tegemine 64-bitistes süsteemides võtab palju rohkem aega, kuid mitte kauem kui nädal. OpenSSH OpenBSD-s ei ole probleemile vastuvõtlik, kuna selles süsteemis on alates 2001. aastast rakendatud kaitsemehhanismi, mis blokeerib sellised rünnakud. Teistes süsteemides, mis põhinevad standardteekidel, mis erinevad Glibc-st, on teoreetiliselt võimalik meetodi kohandamine rünnaku teostamiseks (Qualyse puhul ei ole seda küsimust veel uuritud).
Haavatavus on kõrvaldatud täna avaldatud OpenSSH 9.8 versiooniga (plekk). Pakettide uuenduste avaldamise jälgimine diferentsiaalide lehtedel on võimalik: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, ROSA, Gentoo, ALT Linux, Arch ja FreeBSD. Teiseks võimaluseks haavatavuse blokeerimiseks sshd_config-is on määrata parameeter „LoginGraceTime=0”, samas kui ajaülesande keelamine lihtsustab teenuse keeldumise algatamist, kui luuakse suur hulk ühendusi, mis ületavad läbi parameetri MaxStartups määratud piirid.
Üks rünnaku märgiseid on logis suure hulga „Timeout before authentication” kirjade ilmumine.
Haavatavus tekkis regressiivse muudatuse tõttu, mis viidi läbi OpenSSH 8.5 versioonis ja mis põhjustas konkurentsitingimusi signaalide töötlemise koodis sshd-s. Regressioon lõpetas kaitse vana haavatavuse CVE-2006-5051 eest, mis väljendus kuni OpenSSH 4.4 (2006. aastani) ja millel oli teoreetiline iseloom.
OpenSSH 8.5 arendamise käigus eemaldati kogemata funktsioonist sigdie(), mis kutsutakse otse esile SIGALRM töötlejast, plokk „#ifdef DO_LOG_SAFE_IN_SIGHAND”.
SIGALRM töötlejat kutsutakse sshd-s asünkroonselt, kui klient ei ole suutnud autentida end ühenduse katkestamise ajaks (LoginGraceTime, vaikeväärtus 120 sek). Rünnak põhineb sellel, et signaalitöötleja kutsub esile asünkroonsel viisil ohtlikke funktsioone, nagu syslog(). Funktsioon syslog() Glibc-s ei ole mõeldud kasutamiseks asünkroonselt töötlevates signaalitöötlejates, kuna kutsub esile malloc() ja free() funktsioone. SIGALRM signaali aktiveerumine, mis katkestab teatud koodi täitmise sshd-s, võib viia täitmisoleku rikkumiseni, ning eksploiteerimise eesmärk on luua tingimused vajaliku koodi katkestamiseks selle täitmise õigel hetkel. Haavatavus ei mõjuta OpenBSD-d, kuna seal kasutatakse syslog() asemel SIGALRM signaalitöötlejast funktsiooni syslog_r(), mis on spetsiaalselt loodud asünkroonselt käivitamiseks.
Allikas: opennet.ru
