Necessità di una protezione CSRF che resista a un attacco XSS
Uno dei grandi pericoli dell'XSS è che spesso può ignorare la protezione CSRF e quindi eseguire qualsiasi azione che la vittima può compiere.
Se sarebbe possibile prevenire CSRF anche se esiste una vulnerabilità XSS, sembra che ciò attenui notevolmente il danno che XSS può fare. A causa di httpOnly, potrebbe non essere possibile rubare i cookie, che lascerebbero un aggressore con attacchi di phishing, deturpamento e lettura di dati accessibili al client.
Ma OWASP dice che non è possibile prevenire CSRF una volta che esiste una vulnerabilità XSS.
Utilizzare il referrer per verificare la corretta protezione CSRF?
Non dovrebbe essere possibile utilizzare i referral come protezione CSRF che funziona anche se esiste una vulnerabilità XSS?
Ovviamente un controllo del dominio non sarebbe sufficiente. Ma non funzionerebbe se lo script esatto fosse spuntato?
Ad esempio, se una richiesta viene inviata da http://example.com/add-user.php
, è necessario che il referrer sia http://example.com/add-user.php
.
Ciò significa ancora che un utente malintenzionato può eseguire CSRF su tale script, se tale script contiene una vulnerabilità XSS, ma non dovrebbero essere possibili attacchi CSRF su script diversi nello stesso dominio, poiché i referrer non possono essere impostati tramite JavaScript.
- I controlli dei referenti potrebbero non essere sempre pratici (ad esempio perché il client non invia referenti), ma se vengono utilizzati potrebbero essere utilizzati in questo modo?
- Se possono essere usati in questo modo, ci sono grossi inconvenienti a questo approccio?
- In caso contrario, potrebbe esistere teoricamente una protezione CSRF che funzioni se esiste una vulnerabilità XSS?