Il protocollo RADIUS (Remote Authentication Dial-In User Service) è fondamentale per l’infrastruttura di rete moderna ed un attacco inciderebbe molto su scala globale. Sebbene progettato nel 1991, rimane lo standard de facto per l’autenticazione leggera utilizzata per l’accesso remoto a dispositivi di rete. RADIUS è supportato da quasi tutti i prodotti di switch, router, access point e concentratori VPN venduti negli ultimi venti anni.
Cosa leggere
Meccanismo del Protocollo RADIUS

In RADIUS, un NAS (Network Access Server) funge da client che verifica le credenziali dell’utente finale tramite richieste RADIUS a un server centrale. Il client RADIUS e il server condividono un segreto fisso. Il server risponde con un messaggio di accettazione o rifiuto (Access-Accept
o Access-Reject
).

Le richieste e le risposte possono contenere campi etichettati chiamati “attributi” che specificano vari parametri, come nome utente e password nella richiesta o accesso alla rete nella risposta. I pacchetti di richiesta includono un valore chiamato Request Authenticator
, essenzialmente un nonce casuale, mentre i pacchetti di risposta includono un valore chiamato Response Authenticator
, che dovrebbe proteggere l’integrità delle risposte del server.
Vulnerabilità di RADIUS
Costruzione del Response Authenticator
Il Response Authenticator
viene calcolato come segue: MD5(Code∣∣ID∣∣Length∣∣Request Authenticator∣∣Packet Attributes∣∣Shared Secret)\text{MD5}(\text{Code} || \text{ID} || \text{Length} || \text{Request Authenticator} || \text{Packet Attributes} || \text{Shared Secret})MD5(Code∣∣ID∣∣Length∣∣Request Authenticator∣∣Packet Attributes∣∣Shared Secret) Dove:
ID
eRequest Authenticator
sono valori casuali nella richiesta.Code
,Length
, ePacket Attributes
sono valori nella risposta del server.Shared Secret
è il segreto condiviso tra client e server, sconosciuto all’attaccante.
Attacco contro RADIUS
L’attacco permette a un uomo nel mezzo tra il client e il server RADIUS di falsificare una risposta Access-Accept
valida a una richiesta di autenticazione fallita. L’attaccante inietta un attributo Proxy-State
malevolo in una richiesta client valida. Questo attributo viene garantito di essere restituito dal server nella risposta. L’attaccante costruisce il Proxy-State
in modo che i valori Response Authenticator
tra la risposta valida e quella che l’attaccante vuole falsificare siano identici. Questo inganno fa sì che il NAS conceda all’attaccante l’accesso ai dispositivi e servizi di rete senza dover indovinare o forzare le password o i segreti condivisi.
Passaggi dell’Attacco
- L’attaccante inserisce il nome utente di un utente privilegiato e una password arbitrariamente errata.
- Questo causa al client RADIUS di un dispositivo di rete vittima di generare una richiesta
Access-Request
, che include un valore casuale di 16 byte chiamatoRequest Authenticator
. - L’attaccante intercetta questa richiesta e utilizza l’
Access-Request
per prevedere il formato della risposta del server (che sarà unAccess-Reject
poiché la password inserita è errata). L’attaccante quindi calcola una collisione MD5 tra l’Access-Reject
previsto e una rispostaAccess-Accept
che desidera falsificare. - Dopo aver calcolato la collisione, l’attaccante aggiunge
RejectGibberish
al pacchettoAccess-Request
, mascherato come attributoProxy-State
. - Il server che riceve questa richiesta modificata verifica la password dell’utente, decide di rifiutare la richiesta e risponde con un pacchetto
Access-Reject
, includendo l’attributoProxy-State
. - L’attaccante intercetta questa risposta e verifica che il formato del pacchetto corrisponda al modello previsto. Se sì, l’attaccante sostituisce la risposta con
Access-Accept
eAcceptGibberish
e la invia con l’Response Authenticator
non modificato al client. - A causa della collisione MD5, l’
Access-Accept
inviato dall’attaccante viene verificato con l’Response Authenticator
, inducendo il client RADIUS a credere che il server abbia approvato la richiesta di login e concedendo l’accesso all’attaccante.
Questa descrizione è semplificata. In particolare, è stato necessario un lavoro crittografico per dividere il gibberish della collisione MD5 tra più attributi Proxy-State
formattati correttamente e ottimizzare e parallelizzare l’attacco di collisione MD5 per eseguire in minuti invece che ore.
Per una descrizione completa, si prega di leggere il paper.