Descripción del problema
Durante una evaluación de seguridad de nuestra implementación personalizada de Discourse, descubrimos una posible vulnerabilidad de recorrido de directorios relacionada con el endpoint /uploads/*.
Detalles del problema
-
Acceder a
/uploads/permite a los usuarios obtener archivos de directorios de carga arbitrarios manipulando la ruta de la URL. -
Por ejemplo, es posible recorrer y acceder a archivos en diferentes directorios de carga que deberían estar lógicamente separados o protegidos.
-
Este comportamiento podría permitir a usuarios no autorizados acceder a archivos o adjuntos confidenciales que no están destinados a ellos, lo que representa un riesgo de seguridad.
Ejemplo
Supongamos que el usuario A carga un archivo en sus mensajes privados (o en otro contexto restringido).
Un atacante puede crear una URL como:
https://\u003cdominio-de-tu-foro\u003e/uploads/default/original/1X/../../otro_directorio/archivo_secreto.jpg
Esto permite al atacante recorrer el árbol de directorios y acceder a archivos en otros directorios.
Impacto en la seguridad
-
Divulgación no autorizada de archivos privados, internos o restringidos de otro modo.
-
Posible escalada dependiendo del contenido del archivo.
Preguntas / Comentarios solicitados
-
¿Es este un comportamiento esperado en la implementación actual de carga?
-
¿Existen configuraciones o parches recomendados para prevenir el recorrido de directorios en
/uploads/? -
¿Se ha discutido o mitigado este problema en Discourse upstream?
-
¿Tienen alguna guía para asegurar aún más el acceso a archivos en implementaciones de Discourse?
Gracias por su atención y comentarios sobre este posible problema.