Kompania Qualys ka identifikuar një vulnerabilitet kritik (CVE-2024-6387) në OpenSSH, të cilin lejon ekzekutimin e kodit në distancë me të drejta root pa kaluar autentifikimin. Vulnerabiliteti, i njohur me emrin kodues regreSSHion, shfaqet në konfigurimin tonë të paracaktuar që nga versioni OpenSSH 8.5 në sistemet me bibliotekën standarde Glibc.
Për të demonstruar mundësinë e një sulmi u shfaq në një sistem 32-bit me Glibc, me mbrojtjen ASLR (rastësia e hapësirës adresave) të aktivizuar. Për të realizuar një sulm në kushte laboratorike nevojiteshin 6-8 orë, gjatë së cilave {$client_name} vazhdimisht vendoste lidhje me intensitetin maksimal të lejuar në konfigurimin sshd. Kryerja e sulmit lehtësohet dhe kërkon më pak kohë në sistemet pa ASLR ose në shpërndarjet që përdorin një OpenSSH të modifikuar, në të cilin është çaktivizuar ripërkufizimi i ASLR për çdo lidhje. Një prototip funksional i exploita do të mbahet jashtë publikimit deri në eliminimin e plotë të vulnerabilitetit, por është në dispozicion një përshkrim mjaft të detajuar të natyrës së vulnerabilitetit, i cili e bën shfaqjen e exploita të tjerë një çështje kohe. serverin Nuk përjashtohet mundësia e kryerjes së sulmit dhe në sistemet 64-bit, por një exploit funksional për këto sisteme ende nuk është i gatshëm. Supozohet se realizimi i sulmit në sistemet 64-bit do të kërkojë shumë më tepër kohë, por jo më shumë se një javë. OpenSSH në OpenBSD nuk është i prekur nga kjo çështje, pasi që në këtë sistem, që nga viti 2001, përdoret një mekanizëm mbrojtës që bllokon klasat e tilla sulmesh. Në sistemet e tjera që janë të bazuara në biblioteka standarde që janë të ndryshme nga Glibc, teorikisht është e mundur adaptimi i metodës për të kryer sulmin (në Qualys ky çështje ende nuk është studiuar).
Vulnerabiliteti është eliminuar në versionin e publikuar sot të OpenSSH 9.8 (patch). Ngjarjet e publikimeve të përditësimeve të paketave në shpërndarjet mund të ndiqen në faqet: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, ROSA, Gentoo, ALT Linux, Arch dhe FreeBSD. Si një mënyrë për të bllokuar vulnerabilitetin, në sshd_config mund të vendoset parametri "LoginGraceTime=0", me këtë shkëputja e kohës do të thjeshtojë iniciativën e mohimit të shërbimit në vendosjen e një numri të madh lidhjesh që tejkalojnë kufijtë e caktuar përmes parametrit MaxStartups.
Një nga shenjat e përpjekjeve për të kryer një sulm është shfaqja në log të një numri të madh regjistrimesh "Timeout before authentication".
Vulnerabiliteti u shfaq si rezultat i një ndryshimi regresiv, i përfshirë në lëshimin e OpenSSH 8.5 dhe që çon në një gjendje garazhi në kodin e trajtimit të sinjaleve në sshd. Regresioni çoi në mbylljen e mbrojtjes nga një vulnerabilitet i vjetër CVE-2006-5051, e cila shfaqej deri në versionin OpenSSH 4.4 (viti 2006) dhe kishte karakter teorik.
Gjatë zhvillimit të OpenSSH 8.5 me gabim u hoq blloku "#ifdef DO_LOG_SAFE_IN_SIGHAND" nga funksioni sigdie(), i cili thirret direkt nga menaxhuesi SIGALRM.
Menaxhuesi SIGALRM thirret në sshd në mënyrë asinkrone, nëse klienti nuk ka kryer autentifikimin brenda kohës së kufizuar të lidhjes (LoginGraceTime, për parazgjedhje 120 sekonda). Sulmi bazohet në atë që menaxhuesi i sinjalit thirret për funksione që nuk janë të sigurta në trajtimin asinkron të sinjaleve, të tilla si syslog(). Funksioni syslog() në Glibc nuk është i përshtatshëm për t'u përdorur në menaxhues asinkron, pasi thërret funksionet malloc() dhe free(). Aktivizimi i sinjalit SIGALRM, i cili ndërpret ekzekutimin e një kodi të caktuar në sshd, mund të çojë në një ndërprerje të gjendjes së ekzekutimit, dhe qasja e exploita është të krijojë kushte që të ndërpritet kodi i nevojshëm në momentin e duhur të ekzekutimit të tij. Vulnerabiliteti nuk i prek OpenBSD, pasi që në të në vend të syslog() nga menaxhuesi i sinjalit SIGALRM thirret funksioni syslog_r(), e cila është krijuar posaçërisht për ekzekutimin asinkron.
Kompania Qualys ka identifikuar një vulnerabilitet kritik (CVE-2024-6387) në OpenSSH, që lejon ekzekutimin e kodit në distancë me të drejta root pa kaluar autentifikimin. Vulnerabiliteti, i njohur me emrin kodues regreSSHion, shfaqet në konfigurimin tonë të paracaktuar që nga versioni OpenSSH 8.5 në sistemet me bibliotekën standarde Glibc.
Burimi: opennet.ru
