Una vulnerabilità latente in OpenSSH dal 2016, ribattezzata *sshole, potrebbe consentire l'accesso non autorizzato ai sistemi Alpine Linux. Il problema, descritto dal ricercatore di sicurezza Ozgun Kultekin, sfrutta una password di lunghezza superiore a 256 byte per aggirare i controlli di autenticazione. Gli sviluppatori della distribuzione hanno già pubblicato le patch correttive per tutte le versioni supportate.
Come funziona l'attacco
Il bug risiede nel server OpenSSH in esecuzione sulle distribuzioni Linux che utilizzano la libreria musl, alternativa a libc, e la più diffusa è appunto Alpine Linux. Per sfruttare la falla servono condizioni precise: autenticazione PAM disattivata, un account con hash della password in SHA256 o SHA512, un account con asterisco come hash e l'accesso SSH tramite password abilitato. Il cuore del problema è la funzione crypt() di musl, che restituisce un asterisco quando la password supera i 256 byte.
Linux consente di bloccare l'accesso tramite password sostituendo l'hash nel file /etc/shadow con un asterisco: poiché non è un hash valido, nessuna password dovrebbe funzionare. Tuttavia, un fix introdotto nel 2016 ha modificato la gestione degli account senza hash. Se un attaccante invia una password oltre i 256 byte, OpenSSH confronta l'output * della funzione con l'asterisco memorizzato e concede l'accesso, vanificando la protezione.
Aggiornamenti e contromisure
OpenSSH ha risolto la vulnerabilità con la versione 10.6p2, mentre Alpine Linux ha rilasciato le build 3.21.10, 3.22.8, 3.23.8 e 3.24.4. In alternativa si può aggiornare manualmente con il comando apk upgrade -U -a. Se l'aggiornamento non è immediatamente possibile, è consigliata la disattivazione dell'autenticazione con password su OpenSSH. In ogni caso, dopo l'intervento è necessario riavviare il servizio sshd per rendere effettive le modifiche.