Secondo un advisory pubblicato su Seclists, l'entropia alla base della funzione uniqid()
si baserebbe un RNG (Random Number Generation) debole, il che, in certe condizioni, potrebbe portare alla generazione di un ridotto numero di ID di sessione, rendendo gli attacchi spoofing con metodo brute force più facili se non nel regno della fattibilità .
In altre parole, sarebbe possibile falsificare le sessioni PHP, con conseguenze gravissime sotto il profilo della sicurezza, se si verificano le seguenti condizioni:
- uso del meccanismo di sessione standard di PHP;
- output di
uniqid()
visibile con direttivamore_entropy
impostata sutrue
in PHP.ini; - uso di un qualche meccanismo per rendere persistente l'inteprete di PHP, come FCGI;
- visibilità dello stato di accesso e indirizzo dell'utente.
Il problema, in tutta evidenza esiste, anche se per portare a termine l'attacco servono davvero tanti elementi; inoltre, PHP offre nativamente un modo per superare il problema, impostando per esempio una fonte esterna come sorgente di entropia per le sessioni, come possono essere /dev/random
e /dev/urandom
sui sistemi Unix.