Necesidad de protección CSRF que resista un ataque XSS
Uno de los grandes peligros de XSS es que a menudo puede pasar por alto la protección CSRF y, por lo tanto, realizar cualquier acción que la víctima pueda realizar.
Si sería posible prevenir el CSRF, incluso si existe una vulnerabilidad XSS, parece que eso mitigaría en gran medida el daño que XSS puede hacer. Debido a httpOnly, puede que no sea posible robar cookies, lo que dejaría a un atacante con ataques de phishing, desfiguración y lectura de datos accesibles para el cliente.
Pero OWASP dice que no es posible prevenir el CSRF una vez que existe una vulnerabilidad XSS.
¿Está utilizando la verificación de referencias para una protección CSRF adecuada?
¿No debería ser posible usar las verificaciones de referencia como protección CSRF que funciona incluso si existe una vulnerabilidad XSS?
Por supuesto, una verificación de dominio no sería suficiente. ¿Pero no funcionaría si se verifica el script exacto?
Por ejemplo, si una solicitud se envía desde http://example.com/add-user.php
, se requeriría que la referencia sea http://example.com/add-user.php
.
Esto aún significa que un atacante puede realizar CSRF en ese script, si ese script contiene una vulnerabilidad XSS, pero no deberían ser posibles ataques de CSRF en diferentes scripts en el mismo dominio, ya que las referencias no se pueden establecer a través de JavaScript.
- Es posible que las verificaciones de los remitentes no siempre sean prácticas (por ejemplo, porque el cliente no envía remitentes), pero si se usan, ¿podrían usarse de esa manera?
- Si se pueden usar de esta manera, ¿hay desventajas importantes en este enfoque?
- Si no, ¿podría haber una protección CSRF que funcione si existe una vulnerabilidad XSS?