Divulgación de información sensible: OAuth2 client secret expuesto en la configuración de administrador (no enmascarado)

Descripción del problema

Durante una revisión de seguridad de nuestra implementación personalizada de Discourse, encontramos una posible divulgación de información sensible en la interfaz de Admin

Configuración con respecto a los secretos de cliente OAuth2.

Detalles

  • En la página de configuración de administrador, el secreto del cliente OAuth2 (y potencialmente otros tokens/claves sensibles) se muestran en texto plano, en lugar de estar ocultos (por ejemplo, con asteriscos).

  • Se requiere que los administradores ingresen directamente el secreto en texto plano en la configuración. Cualquiera con acceso a la UI de administrador puede ver el secreto completo.

  • Si un atacante obtiene acceso (incluso temporalmente) a una sesión de administrador, podría obtener fácilmente el secreto del cliente y usarlo para solicitudes de tokens OAuth2 no autorizadas o para falsificar solicitudes a servicios de terceros.

Impacto de seguridad

  • La exposición en texto plano de secretos en la UI de administrador aumenta el riesgo de fuga de credenciales.

  • La falta de ocultación no se alinea con las mejores prácticas de seguridad para el manejo de secretos.

  • Los secretos/tokens podrían ser abusados para escalada de privilegios, suplantación de identidad o ataques adicionales contra servicios integrados.

Preguntas

  • ¿Existe un plan para ocultar campos sensibles como los secretos OAuth2 en la UI de configuración de administrador (por ejemplo, mostrar como ****** con la opción de revelar si es necesario)?

  • ¿Existen enfoques recomendados o plugins para mejorar la protección de credenciales sensibles en implementaciones de Discourse?

  • ¿Se ha discutido este problema anteriormente? ¿Hay soluciones alternativas disponibles hasta una corrección oficial?

¡Gracias por su atención a esta importante preocupación de seguridad!

Hola @Evie_Tao

Estás informando de muchas preocupaciones de seguridad. ¿Has pensado en informarlas en HackerOne, tal como se explica en el repositorio de GitHub?

2 Me gusta

No consideramos que la divulgación de información a los administradores sea un problema, pero sí debería marcarse como sensible para evitar que aparezca innecesariamente, al igual que, por ejemplo, google_oauth2_client_secret.

Esta es una solución sencilla:

Existe un equilibrio entre el secreto y la conveniencia; no permitir que los secretos se enmascaren en la interfaz de usuario solo proporcionaría una ilusión de inaccesibilidad, hay otras formas para que un administrador los lea fácilmente de la base de datos.

Sin embargo, cualquier secreto (cualquier configuración del sitio, en realidad) se puede especificar a través del entorno, entonces no aparecerá en la interfaz de administración.

(¿verdad @pmusaraj?)

2 Me gusta