Prova Origin: credenziali di sessione associate al dispositivo in Chrome

Le credenziali di sessione associate al dispositivo (DBSC) sono una nuova funzionalità web progettata per proteggere le sessioni degli utenti dal furto di cookie e dal furto di sessione. Questa funzionalità è ora disponibile per il test come prova dell'origine in Chrome 135.

Sfondo

I cookie svolgono un ruolo fondamentale nell'autenticazione web moderna, consentendo agli utenti di rimanere effettuato l'accesso nelle sessioni di navigazione. Tuttavia, i malintenzionati sfruttano sempre più i cookie di autenticazione rubati per rubare le sessioni, bypassando l'autenticazione a più fattori e altri meccanismi di sicurezza di accesso.

Gli operatori di malware esfiltrano spesso i cookie di sessione dai dispositivi compromessi, consentendo l'accesso non autorizzato agli account utente. Poiché i cookie sono token bearer, grant access without requiring proof of possession, rappresentando quindi un obiettivo redditizio per gli attaccanti.

Le credenziali di sessione associate al dispositivo (DBSC) hanno lo scopo di interrompere il furto dei cookie creando una sessione autenticata associata a un dispositivo. Questo approccio riduce la probabilità che i cookie esfiltrati possano accedere agli account da un altro dispositivo.

Come funziona

Le credenziali di sessione associate al dispositivo introducono una nuova API che consente ai server di creare una sessione autenticata associata a un dispositivo. Quando viene avviata una sessione, il browser genera una coppia di chiavi pubblica/privata, archiviando la chiave privata in modo sicuro utilizzando lo spazio di archiviazione basato su hardware, ad esempio un TPM (Trusted Platform Module), se disponibile.

Il browser emette quindi un normale cookie di sessione. Durante la durata della sessione, il browser dimostra periodicamente di possedere la chiave privata e aggiorna il cookie della sessione. La durata del cookie può essere impostata su un periodo di tempo sufficientemente breve in modo che il furto del cookie non sia un vantaggio per gli utenti malintenzionati.

Componenti chiave

  • Registrazione delle sessioni:

    • Quando un utente accede, il server richiede una sessione associata al dispositivo utilizzando l'intestazione HTTP Sec-Session-Registration.
    • Il browser genera una nuova coppia di chiavi e memorizza la chiave privata in modo sicuro.
    • Viene inoltre stabilito e associato a questa coppia di chiavi un cookie di autenticazione di breve durata.
    • Il server associa la sessione alla corrispondente chiave pubblica, garantendo che possa essere utilizzata solo sul dispositivo originale.
  • Aggiornamento della sessione e prova di possesso:

    • Quando il cookie di breve durata scade, Chrome attiva un aggiornamento della sessione.
    • Il browser invia una richiesta a un endpoint di aggiornamento definito dal server (fornito durante la registrazione della sessione) e, se il server ne fornisce uno, una verifica firmata utilizzando l'intestazione Sec-Session-Challenge.
    • Il server verifica la prova di possesso convalidando la risposta firmata con la chiave privata della sessione.
    • Se è valido, il server emette un nuovo cookie di breve durata, consentendo di continuare la sessione.

Un vantaggio di questo approccio è che Chrome rimanda le richieste per le quali manca il cookie temporaneo aggiornato. Questo comportamento mantiene i cookie legati alla sessione disponibili in modo coerente per tutta la sessione e consente agli sviluppatori di fare affidamento su di essi con maggiore sicurezza rispetto agli approcci in cui i cookie potrebbero scadere o scomparire senza rinnovo automatico.

Esempio di implementazione

Un server può richiedere una sessione associata al dispositivo come questa:

HTTP/1.1 200 OK
Sec-Session-Registration: (ES256);path="/refresh";challenge="12345"

Quando la sessione è attiva, il server può verificarla con uno scambio di sfide e risposte:

HTTP/1.1 401 Unauthorized
Sec-Session-Challenge: "verify-session"

Il browser risponde con:

POST /refresh
Sec-Session-Response: "signed-proof"

Vantaggi

  • Riduce il furto di cookie: anche se i cookie di sessione vengono rubati, non possono essere utilizzati da un altro dispositivo.
  • Migliora la sicurezza senza modifiche sostanziali all'esperienza utente: funziona in modo trasparente in background senza richiedere ulteriore interazione da parte dell'utente.
  • Riduce la dipendenza dai cookie di sessione a lungo termine: i cookie di breve durata vengono aggiornati automaticamente finché la sessione rimane valida sul dispositivo originale.
  • Supporta i meccanismi crittografici standard: sfrutta lo spazio di archiviazione sicuro basato su TPM, se disponibile, per offrire una protezione efficace contro l'esfiltrazione.

Considerazioni su privacy e sicurezza

DBSC è progettato per migliorare la sicurezza preservando al contempo la privacy degli utenti:

  • Nessun vettore di monitoraggio aggiuntivo: a ogni sessione è associata una coppia di chiavi univoca, che impedisce il monitoraggio tra sessioni.
  • Nessun fingerprinting del dispositivo a lungo termine: i server non possono correlare diverse sessioni sullo stesso dispositivo, a meno che non sia consentito esplicitamente dall'utente.
  • Cancellabili dagli utenti: le sessioni e le chiavi vengono eliminate quando l'utente cancella i dati dei siti.
  • In linea con le norme relative ai cookie: i cookie dei dati dei browser rispettano lo stesso ambito basato sul sito dei cookie, garantendo che non vengano introdotte fughe di dati tra origini.

Prova

La prova Origin delle credenziali di sessione associate al dispositivo è disponibile da Chrome 135.

Per i test locali

Per testare DBSC localmente:

  • Vai a chrome://flags#device-bound-session-credentials e abilita la funzionalità.

Per i test pubblici

Per testare DBSC con la sperimentazione sull'origine in un ambiente pubblico:

  1. Visita la pagina delle prove di Origin di Chrome e registrati.
  2. Aggiungi il token fornito alle intestazioni HTTP del tuo sito:

    Origin-Trial: <your-trial-token>
    

Risorse

Partecipa e dai forma al futuro della sicurezza web

Aiutaci a rendere l'autenticazione web più sicura. Invitiamo gli sviluppatori web a testare DBSC, a integrarlo nelle loro applicazioni e a condividere feedback. Puoi interagire con noi su GitHub o partecipare alle discussioni con il gruppo di lavoro Web Application Security.

Implementando le credenziali di sessione associate al dispositivo, possiamo ridurre collettivamente i rischi di compromissione della sessione e migliorare la sicurezza dell'autenticazione per gli utenti. Inizia oggi stesso e contribuisci a definire il futuro della sicurezza web.