Tengo entendido que el hallazgo informado por el equipo de seguridad es válido. Veamos el escenario que probablemente informaron, ya que yo también lo he visto en las evaluaciones de aplicaciones manuales.
Escenario 1:
Tomemos, por ejemplo, la página de inicio de sesión de una aplicación o, mejor aún, un formulario de solicitud de tarjeta de crédito. Después de completar todos los campos del formulario y hacer clic en el botón 'Enviar', el cliente envía los datos confidenciales en una solicitud POST al servidor. Si la respuesta del servidor es "200 OK", el navegador mantendrá los datos POST en la memoria del navegador, lo que permitirá ataques de repetición. Como se indicó en una respuesta anterior, uno podría presionar el botón "atrás", luego "Reenviar" y luego "Actualizar" en el que el navegador reenviará los datos confidenciales de la POST nuevamente. A menudo recibirá un mensaje emergente de su navegador que le informará que está a punto de reenviar los datos enviados previamente.
Escenario 2:
Los mismos datos se envían a través de una solicitud POST al servidor. Esta vez, el servidor responde con un código de estado de 300, probablemente un redireccionamiento 302 que envía al cliente a la página siguiente. Sin embargo, el navegador del cliente que recibió una respuesta de tipo 300 NO mantiene ni almacena en caché los datos de POST en la memoria del navegador. NO SE PUEDE repetir el experimento de retroceder, adelantar, actualizar y esperar ver los datos de POST publicados anteriormente. Todo esto depende de la respuesta del servidor.
Puede probarlo usted mismo si tiene acceso a un proxy local como Burp.
Configure el navegador para que apunte a su proxy. Accede a la página web vulnerable.
Rellene los campos, haga clic en enviar y observe la solicitud que se envió en su herramienta de proxy. Debería ver los diversos campos de formulario que contienen datos confidenciales en la sección de datos de la solicitud POST. Suponiendo que la respuesta del servidor fue un '200 OK', pase al siguiente paso. En el navegador, presione el botón Atrás, luego avance y luego actualice. Debería recibir el mensaje emergente de su navegador para avisarle que está a punto de reenviar los datos enviados previamente. Pulsa OK. Ahora mira esa última solicitud en tu herramienta proxy. Se reenviará la solicitud POST y los mismos datos confidenciales anteriores. AHORA, intente este mismo experimento en un sitio web que devuelve 302 redireccionamientos a datos de POST. NO podrá hacer que el navegador reproduzca los datos publicados.
Entonces, ¿cuál es el riesgo o la amenaza que puede plantear? En primer lugar están los ataques de repetición.
Su mayor preocupación debe ser el malware. Tu segundo vector de amenaza más grande sería un dispositivo compartido. La preocupación es que el malware o una persona con acceso al dispositivo podrían "reproducir" la solicitud y luego ver los datos confidenciales que se enviaron en la solicitud POST. El malware solo leerá los datos directamente de la memoria del navegador. Una persona tendría que usar una herramienta para ver la solicitud POST nuevamente.
*** Algunas advertencias:
* El uso de Autocompletar = desactivado solo evita que los datos se almacenen en contenedores de almacenamiento de campos de formulario. Es independiente y no tiene relación con este tema. Sin embargo, sugeriría que se asegure de que cualquier campo de formulario que acepte información confidencial debe tener autocompletado configurado en "desactivado". El malware con frecuencia busca y lee datos de campos de formularios guardados, ya que generalmente contiene información jugosa.
** El uso de encabezados de control de caché tampoco tiene relación con este problema, ya que es para las páginas que se almacenan en caché en el disco (directorios temporales de Internet). Una vez más, debe utilizar las directivas de control de caché y evitar que los datos confidenciales se almacenen en texto sin cifrar en su sistema.
La respuesta
*** '200 OK' en los datos POST 'en una solicitud json no es un problema. Es casi el único escenario en el que puedo pensar que no se puede realizar el ataque de repetición cuando el servidor responde con un '200 OK'.
Espero que esto ayude. Estoy seguro de que no está listado como una vulnerabilidad de alta calificación debido a las limitaciones del vector de ataque. ¡Es solo 1 de innumerables capas en la cebolla de seguridad!