Shadow password
Come abbiamo visto, /etc/passwd ha permesso di scrittura solo per il superuser ma è
leggibile da qualunque utente; pertanto se un attaccante ottiene accesso al
sistema tramite uno qualsiasi dei suoi account ha a disposizione gli hash di
password ed i salt di tutti gli utenti del sistema. A questo punto può
utilizzarli, ad esempio, per un attacco di tipo
dizionario, cifrando le parole del dizionario con i giusti salt e
confrontandole con le password cifrate degli utenti.
Una volta ciò non era considerato un grande problema per la sicurezza del
sistema, in quanto l’hardware dell’epoca era troppo lento per applicare
efficientemente l’algoritmo DES modificato;
individuare una password ben scelta era quindi praticamente impossibile.
Col passare del tempo, la crescita esponenziale della potenza di calcolo degli
elaboratori ed alcune implementazioni più efficienti dell'algoritmo DES modificato
hanno reso più concreto tale rischio. Pertanto oggigiorno praticamente tutti i
sistemi Unix adottano il meccanismo delle shadow password.
Tale meccanismo prevede la modifica di /etc/passwd, in modo da inserire ne campi relativi alle password un separatore speciale (tipicamente una 'x'); gli altri campi restano identici. Una tipica entrata di /etc/passwd diventa quindi
andrea:x:500:500:Andrea Raiconi:/home/andrea:/bin/bash
In alternativa, in alcune versioni i campi
password di /etc/passwd
possono contenere al posto del separatore
speciale delle stringhe casuali, in modo da ingannare un eventuale attaccante
che crede di trovarsi di fronte ad un normale file delle password.
Le password cifrate degli utenti, oltre ad alcune informazioni opzionali sull'invecchiamento
delle password, vengono spostate nel file /etc/shadow, che può essere letto (e ovviamente scritto) solo da root.
Ogni entrata del file /etc/shadow sarà del tipo
andrea:$1$QlgwTwD.$3OKIJPKSMFU0D6zmVC9u20:12153:0:99999:7:::
I campi in ogni entrata sono nove: