La vulnerabilità *sshole, individuata in OpenSSH e attiva dal 2016, potrebbe consentire l’accesso ad Alpine Linux usando una password lunga oltre 256 byte. Il problema di sicurezza è stato descritto dal ricercatore Ozgun Kultekin. Gli sviluppatori di Alpine Linux hanno rilasciato aggiornamenti per le versioni delle distribuzioni supportate.
Le condizioni necessarie per lo sfruttamento
Il difetto riguarda il server OpenSSH quando opera su distribuzioni Linux basate sulla libreria musl, alternativa a libc. Alpine Linux è la distribuzione fondata su musl più nota citata nella fonte. Per sfruttare la vulnerabilità occorono l’autenticazione PAM disattivata, l’autenticazione SSH con password attivata e la presenza di un account protetto da un hash SHA256 o SHA512.
È inoltre necessario che esista un account con * come password hash. Su Linux, questo valore può essere impiegato per vietare l’accesso tramite password: poiché non corrisponde a un hash valido, nessuna credenziale dovrebbe consentire l’entrata. Tuttavia, il confronto effettuato da OpenSSH tra l’output della funzione crypt() e l’hash * memorizzato può aprire il passaggio all’account.
L’origine del problema
La causa risiede in un errore nella verifica delle password da parte di OpenSSH. Una correzione introdotta nel 2016 per un’altra vulnerabilità aveva modificato il modo in cui il server gestiva gli account privi di password hash, alteringne il comportamento previsto.
La funzione crypt() fornita da musl restituisce * quando riceve una password più lunga di 256 byte. Se una password supera tale limite, il valore restituito coincide con quello salvato per gli account bloccati. Il risultato è che OpenSSH può interpretare il confronto come un’autenticazione valida e consentire l’accesso.
Correzioni e misure alternative
OpenSSH ha risolto la vulnerabilità mediante la versione 10.6p2. Alpine Linux ha pubblicato le versioni 3.21.10, 3.22.8, 3.23.8 e 3.24.4. In alternativa all’aggiornamento della distribuzione, la fonte indica l’aggiornamento dei pacchetti mediante il comando apk upgrade -U -a.
Se non è possibile installare l’aggiornamento, è consigliata la disattivazione dell’autenticazione con password di OpenSSH, seguita dal riavvio del server sshd. Il riavvio del server è indicato anche dopo l’applicazione delle correzioni.