JWT è sicuro da usare come identificatore di sessione?

3

Stavo leggendo questo articolo e afferma che potrebbero esserci alcune vulnerabilità con JWT.

Dall'articolo:

There were two ways to attack a standards-compliant JWS library to achieve trivial token forgery:

  1. Send a header that specifies the "none" algorithm be used
  2. Send a header that specifies the "HS256" algorithm when the application normally signs messages with an RSA public key.

Ma per inviare queste intestazioni, l'attaccante non dovrebbe avere accesso al segreto?

    
posta Migore 17.03.2017 - 19:53
fonte

1 risposta

3

Un JWT è composto da tre parti. L'intestazione, il payload e la firma. L'intestazione specifica quale metodo di firma viene utilizzato, quindi la firma non può essere verificata prima di leggere l'intestazione. Si noti che questo è un errore di implementazione; l'intestazione non dovrebbe essere in grado di modificare l'algoritmo della firma.

Send a header that specifies the "none" algorithm be used

In questo caso non c'è una firma, quindi l'attaccante può modificare il messaggio a piacimento.

Send a header that specifies the "HS256" algorithm when the application normally signs messages with an RSA public key.

In questo caso l'attaccante deve conoscere il segreto. Tuttavia, RS256 utilizza la crittografia asimmetrica, in cui viene spesso pubblicata la chiave pubblica. Se l'utente malintenzionato riesce a passare a HS256, la chiave pubblica viene invece utilizzata come chiave simmetrica. Quindi l'hacker conosce il segreto perché è la chiave pubblica.

    
risposta data 17.03.2017 - 22:47
fonte

Leggi altre domande sui tag