Come protegge ViewState contro CSRF?

2

Secondo OWASP Foglio trucchi CSRF viewStateUserKey per ASP.NET ViewState è accettabile per prevenire gli attacchi csrf, ma davvero non capisco come. Ho capito che questo rende difficile per un utente malintenzionato modificare lo stato di visualizzazione poiché in pratica dovrebbero conoscere l'ID di sessione dell'utente, ma i parametri di un modulo non vengono memorizzati nello stato di sessione, quindi non è necessario modificarlo nel tuo attacco .

L'intero concetto riguarda il fatto che è difficile ottenere un viewstate valido per cominciare o mi manca qualcosa?

Questa è davvero considerata una tecnica valida per prevenire csrf?

    
posta Jarrod Everett 23.08.2012 - 21:14
fonte

2 risposte

4

Se si attiva ViewStateUserKey, il server proteggerà l'integrità dello stato di visualizzazione aggiungendo un checksum casuale e non diagnosticabile. Questo checksum funziona come un token CSRF casuale.

In particolare, ViewStateUserKey calcolerà un Message Authentication Code (MAC) sui campi dello stato di visualizzazione. Un MAC è come un checksum con chiave dei dati, in cui la chiave è nota solo al server. Poiché l'utente malintenzionato non conosce la chiave, l'utente malintenzionato non può generare un checksum valido (digest MAC) per alcuni altri valori dei parametri dello stato di visualizzazione.

Se si utilizza ViewStateUserKey, la chiave utilizzata è specifica per l'utente specifico. Ciò significa che un malintenzionato Mandy non può apprendere un valore valido del digest MAC per l'utente Bob. Mandy non può indovinarlo, perché un algoritmo MAC è progettato per impedire di indovinare il digest MAC. Mandy non può apprenderlo contattando il server, perché se si connette al server, il server utilizzerà la sua chiave di crittografia, non la chiave di Bob, quindi il digest MAC inviato a Mandy non sarà correlato a quello utilizzato per Bob.

In effetti, il digest MAC agisce come una stringa casuale a 128 bit che l'utente malintenzionato non può indovinare. Questo è ciò che impedisce CSRF. Le difese CSRF standard prevedono l'inclusione di una stringa casuale nei parametri di richiesta (casuali, in modo che l'attaccante non possa prevederlo). Con un ViewStateUserKey, il digest MAC agisce come quella stringa casuale.

Vedi anche Microsoft su Securing View State e ASP.NET Viewstate impedisce implicitamente gli attacchi CSRF? Che cosa significa questo per MVC? .

    
risposta data 24.08.2012 - 05:48
fonte
3

Da quello che ho capito, il punto di ViewStateUserKey è che assicura che il ViewState sia specifico per un determinato utente. Poiché ViewState è un campo nascosto che deve essere inviato come parte di un modulo in qualche modo come la maggior parte dei token di difesa CSRF, se l'attaccante non è in grado di prevederne il valore sarà difficile per lui eseguire un attacco riuscito.

Va notato che deve essere usato insieme a ViewStateMAC perché funzioni (come notato qui) poiché è ciò che viene controllato dall'applicazione sul postback.

    
risposta data 23.08.2012 - 22:25
fonte

Leggi altre domande sui tag