Nel corso dello studio della vulnerabilità critica individuata la scorsa settimana in OpenSSH, è stata scoperta un'altra vulnerabilità simile (CVE-2024-6409) che consente l'esecuzione remota di codice senza autenticazione. La nuova vulnerabilità non è così pericolosa come quella precedente, poiché si manifesta dopo il ripristino dei privilegi in un processo secondario avviato dal server SSH. La vulnerabilità è presente nei pacchetti openssh della distribuzione Red Hat Enterprise Linux 9, basati sulla versione pubblicata nel 2021 di OpenSSH 8.7. Il problema interessa anche i pacchetti per Fedora Linux 36 e 37, basati sulle versioni OpenSSH 8.7 e 8.8.
La vulnerabilità è sostanzialmente analoga al problema precedente ed è anche causata da una condizione di race nel gestore dell'interruzione SIGALRM, che si verifica a causa dell'esecuzione di funzioni non progettate per essere chiamate in modalità asincrona dai gestori dei segnali. Il gestore scatta al verificarsi di un timeout, definito tramite il parametro LoginGraceTime, e interrompe l'esecuzione del codice corrente. L'uso in un gestore di interruzioni di funzioni non progettate per l'esecuzione asincrona, che utilizzano allocazione dinamica della memoria, come syslog(), può portare alla corruzione delle strutture interne malloc se il SIGALRM scatta durante l'esecuzione di un determinato codice.
La nuova vulnerabilità si distingue per il fatto che la condizione di race si verifica a causa della chiamata nella gestione dell'interruzione grace_alarm_handler() della funzione cleanup_exit(). Nella base di codice principale di OpenSSH, questa funzione può essere utilizzata in codice eseguito in modo asincrono, ma nei pacchetti per RHEL 9 e Fedora è stata applicata una patch aggiuntiva che inserisce nella cleanup_exit() una chiamata a una funzione per generare eventi di audit, prevista per l'uso nei gestori dei segnali.
Questa patch è stata utilizzata in RHEL 9 e nelle distribuzioni derivate nei pacchetti basati su OpenSSH 8.7p1. Negli attuali rilasci di Fedora il problema non si manifesta, poiché a partire da Fedora 38 la distribuzione è passata a una versione più recente di OpenSSH senza modifiche alla cleanup_exit(). A differenza della vulnerabilità precedente, per bloccare il nuovo problema non è efficace la soluzione di protezione basata sull'uso dell'opzione «-e» in sshd, che disabilita l'output del log tramite syslog. Tuttavia, per bloccare la vulnerabilità in sshd_config è possibile impostare il parametro «LoginGraceTime=0».
Fonte: opennet.ru
