Según tengo entendido, una aplicación web es vulnerable a RFD (descarga de archivos reflejada) solo cuando el encabezado Content-Disposition: el archivo adjunto que fuerza la descarga se configura en una respuesta con el cuerpo de JSON,
No necesariamente.
Vea, por ejemplo, este artículo que establece que IE 8 y 9 descargarán todos los archivos JSON como archivo, y que el atributo download
en un enlace puede usarse para forzar una descarga en otros navegadores.
Probé esto con una versión actual de Firefox, y al menos allí, no funciona de origen cruzado (excepto haciendo clic con el botón derecho - > guardar como). Si puede publicar enlaces HTML al origen original, aún es posible un ataque con Firefox. No puedo probar en Chrome, pero debería funcionar sin eso.
pero, en cualquier caso, ¿queremos guardar un archivo JSON en la computadora del usuario?
Un atacante quiere guardar un archivo en la computadora de los usuarios con un nombre y una extensión que controlen y con el contenido que controlan al menos parcialmente, y desean que este archivo se entregue desde un dominio confiable (por la aplicación vulnerable) para que un usuario confíe y lo ejecute.
¿ y dar un nombre significativo a este archivo a través de Content-Disposition: attachment; filename="whatever.txt"
realmente mitiga el ataque?
Sí. La idea de RFD es que un atacante puede determinar el nombre de archivo del archivo para que contenga una extensión maliciosa. Si establece el nombre de archivo, eso no es posible. No tengo conocimiento de ninguna omisión que permita a un atacante sobrescribir el nombre de archivo dado.