Lab · 09 / 16
Scoprire un token rubato.
Gli access token durano poco; i refresh token ti tengono connesso. Se uno viene copiato, la rotazione trasforma la copia in un allarme.
- App
- l’app vera, con i suoi token
- IdP
- emette e ruota i token
- Attacker
- qualcuno con un refresh token rubato
- POST /token · RT1
Passo 1 di 6
L’access token è scaduto
In parole semplici Il pass giornaliero è scaduto, quindi mostri l’abbonamento per averne uno nuovo.
Dopo 15 minuti l’access token non è più valido. L’app invia il refresh token RT1 per averne uno nuovo, senza disturbare l’utente.
POST https://idp.example.com/token grant_type=refresh_token &refresh_token=RT1 &client_id=web-app - AT2 + RT2
Passo 2 di 6
Token nuovi, il vecchio è bruciato
In parole semplici Ricevi un pass nuovo e un abbonamento nuovo; quello vecchio viene strappato.
Con la rotazione, ogni uso restituisce un nuovo refresh token (RT2) e RT1 non vale più. L’IdP ricorda che RT1 e RT2 appartengono alla stessa famiglia.
- POST /token · RT1
Passo 3 di 6
Qualcuno riusa il vecchio token
In parole semplici Qualcuno si presenta con la fotocopia dell’abbonamento strappato.
RT1 era stato rubato, per esempio da un log o da un’estensione del browser malevola. L’attaccante prova a usarlo per avere token nuovi.
- 400 invalid_grant
Passo 4 di 6
Riuso rilevato: la famiglia viene revocata
In parole semplici Lo sportello sa che quel biglietto era già stato strappato, quindi annulla tutti gli abbonamenti a tuo nome.
Un refresh token già usato significa che due parti ne hanno una copia. L’IdP non sa chi è legittimo, quindi revoca anche RT2 e può generare un evento di sicurezza.
- POST /token · RT2
Passo 5 di 6
Ci prova l’app vera
In parole semplici Mostri il tuo abbonamento nuovo, ma è stato annullato anche quello.
Quando l’access token scade di nuovo, l’app presenta RT2. È stato revocato insieme a tutta la famiglia.
- 400 invalid_grant → login
Passo 6 di 6
L’utente rifà l’accesso
In parole semplici Torni allo sportello con il documento: un piccolo fastidio, ma il ladro resta fuori.
L’app riporta l’utente alla pagina di login. Il prezzo è un accesso in più; in cambio, un refresh token rubato smette di funzionare appena viene usato.
Flusso completato.
Domini e valori d’esempio. Nulla esce dal tuo browser.