Kompania Qualys zbuloi një dobësi kritike (CVE-2024-6387) në OpenSSH, duke lejuar ekzekutimin në distancë të kodit me privilegje root pa kalimin e autentifikimit. Dobësia, e emërtuar regreSSHion, shfaqet në konfigurimin standard që nga versioni OpenSSH 8.5 në sisteme me bibliotekën e zakonshme Glibc.
Mundësia e realizimit të një sulmi u demonstruar në një sistem 32-bit me Glibc me mbrojtjen ASLR (randomizimi i hapësirës së adresave) të aktivizuar. Për të realizuar me sukses sulmin në kushte laboratori, ishin nevojitur 6-8 orë, gjatë të cilave ishin server krijuar vazhdimisht lidhje me intensitetin maksimal të lejuar në konfigurimin e sshd. Realizimi i sulmit lehtësohet dhe kërkon më pak kohë në sistemet pa ASLR ose në distribucione që përdorin një OpenSSH të modifikuar, në të cilin është çaktivizuar riparandomizimi ASLR për çdo lidhje. Prototipi funksional i eksploitatit nuk do të publikohet publikisht deri në eliminimin universitar të dobësisë, megjithatë është e disponueshme një përshkrim mjaft i detajuar i natyrës së dobësisë, që e bën shfaqjen e eksploitateve të jashtme çështje kohe.
Nuk përjashtohet mundësia e realizimit të sulmit në sistemet 64-bit, por një exploit funksional për këto sisteme ende nuk është gati. 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 prekshëm nga problemi, pasi në këtë sistem është përdorur një mekanizëm mbrojtjeje që nga viti 2001, duke bllokuar klasat e tilla sulmesh. Në sistemet e tjera bazuar në biblioteka standarde, ndryshe nga Glibc, teorikisht është e mundur adaptimi i metodës për realizimin e sulmit (në Qualys kjo çështje ende nuk është studiuar).
Dobësia është eliminuar në versionin e publikuar sot të OpenSSH 9.8 (patch). Për të ndjekur publikimin e azhurnimeve të pakove në distribucione mund të ndiqni faqet: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, ROSA, Gentoo, ALT Linux, Arch dhe FreeBSD. Si një zgjidhje për të bllokuar dobësinë në sshd_config mund të vendoset parametri "LoginGraceTime=0", megjithatë çaktivizimi i kohës limite do ta lehtësojë iniciativën për refuzimin e shërbimit gjatë krijimit të një numri të madh lidhjesh që kalojnë limitet e caktuara përmes parametrave MaxStartups.
Një nga shenjat e përpjekjeve për të kryer një sulm është shfaqja në regjistrin e një numri të madh regjistrimesh "Timeout before authentication".
Vulnerabiliteti erdhi si një rezultat i një ndryshimi regresiv që hyri në versionin e lëshuar OpenSSH 8.5 dhe që çon në një gjendje garancie në kodin e trajtimit të sinjaleve në sshd. Regresioni çoi në mbylljen e mbrojtjes nga një vulnerabilitet i vjetër CVE-2006-5051, që shfaqej deri në versionin OpenSSH 4.4 (2006) dhe kishte një karakter teoretik.
Gjatë zhvillimit të OpenSSH 8.5, gabimisht u hoq blloku "#ifdef DO_LOG_SAFE_IN_SIGHAND" nga funksioni sigdie(), i cili thirret drejtpërdrejt nga trajtuesi SIGALRM.
Trajtuesi SIGALRM thirret në sshd në mënyrë asinkrone, nëse klienti nuk është autentikuar brenda një kohë të kufizuar, e cila përcaktohet nga koha e pritjes për autentikim (LoginGraceTime, në mënyrë default 120 sek). Sulmi bazohet në faktin se trajtuesi i sinjaleve thirret në funksione jo të sigurta gjatë trajtimit asinkron të sinjaleve, si syslog(). Funksioni syslog() në Glibc nuk është i parashikuar për t'u përdorur në trajtues të sinjaleve që ekzekutohen asinkronisht, pasi thërritet funksionet malloc() dhe free(). Aktivizimi i sinjalit SIGALRM, i cili ndërpritet punën e një kodi të caktuar në sshd, mund të çojë në një shkelje të gjendjes së ekzekutimit, dhe qëllimi i eksploitat është të krijojë kushte për ndërprerjen e kodit të nevojshëm në momentin e duhur të ekzekutimit të tij. Vulnerabiliteti nuk prekin OpenBSD, sepse atje në vend të syslog() nga trajtuesi i sinjalit SIGALRM thirret funksioni syslog_r(), i krijuar posaçërisht për ekzekutimin asinkron.
Burimi: opennet.ru
