Tijekom proučavanja kritične ranjivosti u OpenSSH koja je otkrivena prošlog tjedna, otkrivena je još jedna slična ranjivost (CVE-2024-6409) koja omogućuje udaljeno izvršenje koda bez prolaska autentifikacije. Nova ranjivost nije toliko opasna kao prethodna, jer se manifestira nakon povlačenja privilegija u pokrenutom procesu koji vodi SSH server. Ranjivost se nalazi u openssh paketima distribucije Red Hat Enterprise Linux 9, temeljenim na objavljenoj verziji OpenSSH 8.7 iz 2021. godine. Problem također utječe na pakete za Fedora Linux 36 i 37, koji se temelje na verzijama OpenSSH 8.7 i 8.8.
Suštinski, ranjivost je slična prethodnom problemu i također je uzrokovana stanjem utrke u obradi SIGALRM prekidača, koji se javlja usljed izvršavanja funkcija koje nisu predviđene za pozivanje u asinhronom modu iz obrada signala. Obrada se aktivira kada dođe do isteka vremena definiranog putem parametra LoginGraceTime i prekida trenutno izvršenje koda. Korištenje funkcija koje nisu usklađene s asinhronim izvršenjem u obradi prekida, pri čemu se koristi dinamičko allociranje memorije, poput syslog(), može dovesti do oštećenja unutarnjih struktura malloc prilikom aktiviranja SIGALRM tijekom izvršavanja određenog koda.
Nova ranjivost se razlikuje po tome što stanje utrke nastaje zbog pozivanja cleanup_exit() funkcije u obradi signala grace_alarm_handler(). U glavnoj kodnoj bazi OpenSSH, ova funkcija može se koristiti u kodu koji se izvodi asinhrono, ali su u paketima za RHEL 9 i Fedora primijenjeni dodatni ispravci koji dodaju poziv funkciji za generiranje auditnih događaja u cleanup_exit(), osmišljenoj za korištenje u obradi signala.
Ova je ispravka korištena u RHEL 9 i izvodnim distribucijama u paketima temeljenim na OpenSSH 8.7p1. U aktualnim izdanjima Fedore, problem se ne manifestira, jer se distribucija od Fedore 38 prebacila na noviju verziju OpenSSH bez promjene cleanup_exit(). Za razliku od prethodne ranjivosti, ne postoji zaobilazno rešenje za novu ranjivost temeljen na korištenju sshd opcije "-e" koja onemogućuje zapisivanje loga putem sysloga. No za blokiranje ranjivosti u sshd_config, parametar "LoginGraceTime=0" može se postaviti.
Izvor: opennet.ru
