Gjatë shqyrtimit të dobësisë kritike në OpenSSH të zbuluar javën e kaluar, u zbulua një dobësi tjetër e ngjashme (CVE-2024-6409), e cila lejon ekzekutimin e kodit në distancë pa kaluar autentifikimin. Dobësia e re nuk është aq e rrezikshme sa e kaluara, pasi shfaqet pas rikthimit të privilegjeve në procesin e dytë të nisur nga serveri SSH. Dobësia është e pranishme në paketat openssh nga distribuimi Red Hat Enterprise Linux 9, të bazuara në lëshimin e publikim në 2021, OpenSSH 8.7. Problemi prek gjithashtu paketat për Fedora Linux 36 dhe 37, të bazuara në lëshimet OpenSSH 8.7 dhe 8.8.
Në thelb, kjo dobësi është e ngjashme me problemin e mëparshëm dhe është gjithashtu e shkaktuar nga një gjendje garash në menaxherin e ndërprerjeve SIGALRM, që ndodh si rezultat i ekzekutimit të funksioneve që nuk janë të përshtatshme për thirrje në mënyrë asinkrone nga menaxherët e sinjalit. Menaxheri aktivizohet kur ndodh ngrirja, e cila është e përcaktuar nëpërmjet parametrin LoginGraceTime, dhe ndërpret ekzekutimin aktual të kodit. Përdorimi i funksioneve në menaxherët e ndërprerjeve të cilat nuk janë të përgatitura për ekzekutim asinkron, dhe që përfshijnë alokimin dinamik të memories, të tilla si syslog(), mund të çojë në dëmtimin e strukturave të brendshme malloc kur ndodh SIGALRM gjatë ekzekutimit të një kodi të caktuar.
Dobësia e re veçohet nga fakti se gjendja garash ndodh si rezultat i thirrjes në menaxherin e sinjalit grace_alarm_handler() të funksionit cleanup_exit(). Në bazën kryesore të kodit të OpenSSH, ky funksion mund të përdoret në kodin që ekzekutohet asinkronisht, por në paketat për RHEL 9 dhe Fedora është aplikuar një patch shtesë, i cili shton në cleanup_exit() thirrjen e një funksioni për gjenerimin e ngjarjeve të auditit, të dizajnuar për përdorim në menaxherët e sinjalit.
Kyç i përdorur në RHEL 9 dhe shpërndarjet e tjera të bazuara në distribuimet OpenSSH 8.7p1. Në versionset aktuale të Fedora, problemi nuk shfaqet, pasi që nga Fedora 38, distribucioni kaloi në një version më të ri të OpenSSH pa ndryshuar cleanup_exit(). Ndryshe nga vulnerabiliteti i kaluar, një mënyrë rrethore për bllokimin e problemit të ri nuk është e përshtatshme duke përdorur opsionin «-e» në sshd që çon në çaktivizimin e logëve përmes syslog. Por për bllokimin e vulnerabilitetit, në sshd_config mund të përcaktohet parametri «LoginGraceTime=0».
Burimi: opennet.ru
