Non convinto sulla sicurezza di un token JWT Token + CSRF

0

Supponiamo che abbia un'applicazione Web che utilizza token JWT e token CSRF nel suo schema di autenticazione. A quanto ho capito, funziona così:

  1. Quando un utente effettua l'accesso, il client invia una richiesta di accesso.
  2. Server imposta un token JWT firmato come cookie con Set-Cookie ... ;Secure ;httpOnly nella sua intestazione di risposta. Ciò impedisce gli attacchi XSS poiché il cookie non può essere letto da Javascript.
  3. Il server
  4. invia anche un token CSRF senza httpOnly impostato in modo che possa essere letto dal codice JavaScript.
  5. Quando il cliente effettua richieste future, il cookie JWT verrà automaticamente inviato e il CSRF dovrà essere impostato nell'intestazione della richiesta. Questo dovrebbe prevenire gli attacchi CSRF dal momento che il cookie CSRF dovrà essere letto.

Quindi in breve abbiamo:

  • L'impostazione del token JWT con ;Secure;HttpOnly impedirà gli attacchi XSS.

  • Il fatto che il client imposti il cookie CSRF nell'intestazione della richiesta impedirà gli attacchi CSRF.

Ma cosa succede se un utente malintenzionato ottiene il token CSRF utilizzando XSS e lo imposta come intestazione per le richieste inviate da un sito Web dannoso con un exploit CSRF. Questo attacco è possibile? In tal caso, come potrei migliorare il mio schema di autenticazione?

Grazie in anticipo.

    
posta EJC 30.11.2018 - 00:29
fonte

1 risposta

1

CSRF will have to be set in the request header.

Il token anti-CSRF verrà inviato nel corpo del messaggio di richiesta. Se esiste una vulnerabilità XSS e un utente malintenzionato riesce a sfruttarlo, l'ultima cosa di cui probabilmente si preoccuperà è il token anti-CSRF. XSS è un attacco molto più potente e un attaccante può manipolare quasi qualsiasi cosa con XSS.

Inoltre, il token anti-CSRF è memorizzato in un campo modulo nascosto nel codice html.

Esiste in modo che ogni richiesta sia associata a una sessione utente specifica. Esiste letteralmente per rendere CSRF impossibile, anche se il token perde in qualche modo. Un utente malintenzionato sarebbe in grado di manipolare solo la sessione attiva corrente di quel particolare utente da cui ha rubato il token anti-CSRF.

But what if an attacker gets your CSRF token using XSS and sets it as a header for requests sent by a malicious website with a CSRF exploit. Is this attack possible?

Il JWT sarebbe comunque protetto. Ti suggerisco di leggere come funziona CSRF: link

    
risposta data 30.11.2018 - 00:57
fonte

Leggi altre domande sui tag