Zhvilluesit e OpenSSH publikuan një përmirësim urgjent OpenSSH 10.6p2, në të cilin është shtuar mbrojtja nga një vulnerabilitet kritik (CVE nuk është emëruar), i njohur me emrin kod «SSHole» dhe që lejon kalimin e autentifikimit. Në sistemet me bibliotekën Musl, vulnerabiliteti lejon lidhjen me një përdorues për të cilin nuk është vendosur një fjalëkalim, duke futur çdo fjalëkalim që përmban më shumë se 256 karaktere. Problemi ndikon në shpërndarjet Linux që përdorin bibliotekën standarde musl, por nuk përdorin PAM (Pluggable Authentication Modules), siç janë OpenWRT, Alpine, Buildroot dhe Yocto. Rreziku është veçanërisht i madh, pasi shpesh hyrja me fjalëkalim është e bllokuar për përdoruesin root, çka lejon çdo person që lidhet nga distanca me të drejta administratori.
Gabimi që çon në vulnerabilitetin nuk është në kodin OpenSSH, por shfrytëzohet nëpërmjet sshd. Duke marrë parasysh seriozitetin e problemit, në versionin OpenSSH 10.6p2 është propozuar një zgjidhje për të bllokuar vulnerabilitetin. Pronarët e sistemeve të prekuara nga problemi rekomandohet që të mos presin përditësime, por të çaktivizojnë menjëherë autentifikimin me fjalëkalim përmes parametrin «PasswordAuthentication no» në /etc/ssh/sshd_config ose ta çaktivizojnë plotësisht SSH.
Problemi nuk shfaqet në sistemet jashtë Linux-it dhe në mjediset Linux që bazohen në glibc, si dhe në sistemet që përdorin PAM gjatë autentifikimit me fjalëkalim. Rregullimi është tashmë iDisponueshëm në Alpine dhe OpenWRT.
Vulnerabiliteti është i lidhur me ndërveprimin e papërshtatshëm të OpenSSH me funksionin crypt() nga musl. Për të mbrojtur nga përcaktimi i ekzistencës së përdoruesve përmes analizës së ndryshimeve në kohën e përpunimit të kërkesave, që nga viti 2016 OpenSSH gjatë kontrollit të llogarive pa fjalëkalim përdor procedurën standarde të kontrollit të fjalëkalimit: thirret funksioni «crypt(fjalëkalimi i dhënë, kripe)» me kripë të një përdoruesi tjetër që ka një hash fjalëkalimi të vlefshëm, dhe më pas krahason hash-in e kthyer nga funksioni crypt me vlerën në fushën me hash-in e fjalëkalimit.
Megjithatë, në musl funksioni crypt() për hash-et SHA-512 kthen simbolin «*», nëse gjatësia e fjalëkalimit të dhënë tejkalon 256 byte (kufiri u vendos në vitin 2012 për të mbrojtur nga sulmet DoS, pasi kalimi i vlerave të mëdha shkakton një ngarkesë të madhe në CPU). I njëjti simbol përdoret në fushën me hash-in e fjalëkalimit në «/etc/shadow» për të treguar llogaritë për të cilat autentifikimi me fjalëkalim është bllokuar.
Si rezultati, një sulmues me mundësi për t'u lidhur me serverin SSH mund të lidhet me çdo llogari, ku në "\/etc\/shadow" në fushën e fjalës kalimtare tregohet simbolet "*", duke dërguar një varg me gjatësi nga 257 deri në 1024 byte. Problemi prek shumë imazhe Docker ekzistuese, të ndërtuara me përdorimin e Alpine Linux, si dhe imazhet standarde Alpine për sistemet cloud AWS dhe Azure, ku përdoruesi root ka vendosur simbolet "*" në vend të hash-it të fjalës kalimtare.
Është e rëndësishme të theksohet se në fillim në imazhet zyrtare Docker që përdorin Alpine, që nga viti 2015, ishte vendosur një fjalë kalimtare bosh për root, dhe pas zbulimit të këtij fakti, në vend të hash-it të fjalës kalimtare, u vendos simbolet "!". Por prania e tij bllokonte hyrjen me çelësi SSH, kështu që që nga viti 2022 simbolet për të bllokuar hyrjen me fjalë kalimtare u zëvendësua me "*".
Burimi: opennet.ru
