Permitir que los administradores siempre puedan editar correos electrónicos cuando 'Editar correo electrónico después del registro' esté deshabilitado

Editado para aclaraciones significativas y criterios de sugerencia mejor pensados para ayudar mejor a los miembros de la comunidad a comprender los beneficios de esta mejora de la función.

Actualice la configuración Email Editable para permitir opciones adicionales sobre quién puede editar las direcciones de correo electrónico, ya que la configuración está diseñada, por ejemplo:

  • Todos los usuarios
  • Solo usuarios [Los administradores normales o los moderadores no pueden hacerlo sin usar la consola de Rails o cambiar la configuración.]
  • Solo personal
  • Solo administradores

Si la configuración está activada [lo cual es el valor predeterminado], introduzca una medida de seguridad en modo Sudo para realizar la acción como administrador [no como el usuario al que pertenece la cuenta que se está editando]; Esto permite que esta configuración se introduzca con algunos puntos clave mencionados a continuación para protegerla contra cambios no deseados.

Razonamiento/por qué es necesario

Si desea desactivar la configuración porque desea tener control sobre esto (por ejemplo, deben solicitar el cambio, lo hace por prácticas de seguridad o por alguna otra razón), pero por alguna razón necesita editar el correo electrónico; con esta configuración desactivada, incluso los administradores no pueden editar los correos electrónicos.

Ahí es donde surge un nuevo problema si se aplica uno o más casos de uso.

Para editar correos electrónicos de usuarios actualmente; Puede 1) activarlo en otra pestaña y editar rápidamente el correo electrónico, o 2) abrir la consola de Rails y cambiar manualmente el correo electrónico.

Para la mayoría de las operaciones administrativas diarias regulares, esto puede generar un desafío técnico no deseado. si solo se basa en hacer todo en la consola de Rails, cuando la configuración existe.

¿Por qué medidas de seguridad adicionales podrían ayudar a hacer realidad esta función?

  • Si se deja activada debido a una implicación técnica, los usuarios comprometidos podrían tener sus correos electrónicos cambiados.
  • Los administradores podrían cometer errores o realizar cambios no autorizados.
  • Los usuarios sentirán que aquellos con dicho acceso están protegidos contra cambios realizados maliciosamente.

Esto se discutió por última vez en 2015, y aunque es cierto que se pueden editar correos electrónicos, no se pueden editar desde la vista de administración; le indica que vaya a la vista de preferencias del usuario, lo cual hago, y, incluso como administrador, no puedo debido a las restricciones de esta configuración.

1 me gusta

Sí, discrepo muy fuertemente aquí. Aunque tu caso de uso específico pueda parecerte lo suficientemente sencillo, implementar un anulación simple en la interfaz de usuario para esto introduciría un riesgo de seguridad significativo por una ganancia de comodidad muy menor.

¡La fricción es una característica de seguridad!

La incomodidad de tener que usar la consola de Rails o activar una configuración a nivel de sitio es, de hecho, una característica de seguridad crítica, ya que actúa como un «freno de seguridad» y obliga al administrador a realizar un proceso deliberado y de alta fricción para una operación muy sensible.

Cambiar la dirección de correo electrónico de un usuario equivale a entregar las llaves de su cuenta, ya que la nueva dirección de correo electrónico puede utilizarse para activar un restablecimiento de contraseña, lo que efectivamente bloquea al usuario original y otorga al nuevo propietario del correo electrónico el control total.

Algunos vectores de ataque principales que esta fricción previene:

  • ¡Comprometer cuentas de administrador! Este es el riesgo más significativo. Si un atacante obtiene acceso a la cuenta de un administrador (mediante phishing, reutilización de contraseñas, etc.), un simple botón o interruptor en la interfaz de usuario les permitiría tomar silenciosa y fácilmente el control de cualquier otra cuenta de usuario, incluidas las de otros empleados; el requisito de acceso a la terminal mediante la consola de Rails proporciona una sólida capa de seguridad.

  • Ingeniería social. Esto abre la puerta a la ingeniería social. Un usuario malintencionado podría hacerse pasar por un usuario legítimo y persuadir a un administrador para que le cambie la dirección de correo electrónico; nuevamente, el proceso actual de alta fricción hace que sea mucho más probable que el administrador verifique o considere la autenticidad de la solicitud.

  • Amenaza interna. Un administrador malintencionado podría abusar de esta función para tomar el control de cuentas.

Para este tipo de acciones administrativas infrecuentes y de alto riesgo, la consola de Rails es apropiada porque asegura que la persona que realiza la acción tenga acceso al servidor y no una sesión comprometida. Además, la acción es deliberada y requiere conocimientos técnicos específicos (y se registra en el historial de la terminal).

1 me gusta

Agradezco tu preocupación, pero creo que puedes estar malinterpretando el panorama general. Hay un agujero serio en tu argumento sobre la “seguridad”.

Ya puedes editar los correos electrónicos si esta configuración está activada; y lo está por defecto

¡Compromiso de cuentas de administrador! Este es el riesgo más significativo. Si un atacante obtiene acceso a una cuenta de administrador (mediante phishing, reutilización de contraseñas, etc.), un simple botón de la interfaz o un interruptor les permitiría tomar el control silenciosa y fácilmente de cualquier otra cuenta de usuario, incluidas las de otros empleados; el requisito de acceso a la terminal a través de rails console proporciona una capa de seguridad sólida.

Si una cuenta de administrador está comprometida, el intruso simplemente podría activar la configuración que ya existe hoy y hacer las cosas que mencionaste.

Cambiar la dirección de correo electrónico de un usuario es equivalente a entregar las llaves de su cuenta, ya que la nueva dirección de correo electrónico puede usarse para iniciar un restablecimiento de contraseña, bloqueando efectivamente al usuario original y otorgando al nuevo propietario del correo electrónico el control total.

Para este tipo de acciones administrativas infrecuentes y de alto riesgo, la consola de rails es apropiada porque asegura que la persona que realiza la acción tenga acceso al servidor y no una sesión comprometida. Además, la acción es deliberada y requiere conocimientos técnicos específicos (y se registra en el historial de la terminal).

No siempre, y como dije en el mensaje inicial. Solo tienes que activar y desactivar la configuración para habilitar la función de edición. El único problema es que activar la configuración, que debería estar desactivada [activada por defecto], introduce la posibilidad de que usuarios que no son administradores puedan editar su correo electrónico mientras se realiza una edición simple.

1 me gusta

Vale, ahora entiendo tu punto sobre cuándo se activa esa configuración.

Sigo pensando firmemente que la consola de Rails es la mejor opción aquí. Quizás sea posible un plugin.

Cuando la configuración está ACTIVADA

“Permitir a los usuarios cambiar su dirección de correo electrónico después del registro”

Esto habilita la edición para TODOS los usuarios (y administradores). La solicitud de función sencilla es: permitir que la configuración sea, por ejemplo: “Solo administradores, administradores + usuarios o usuarios”.

Si simplemente lo “activas”, se habilita la capacidad en todo el sitio para que cualquiera [o los administradores] puedan cambiar el correo electrónico de un usuario. Mientras esté habilitado.

Establecer una opción, que ya parcialmente existe, para que se aplique solo a administradores permite que una funcionalidad simple que ya existe no sea solo un escenario de todo o nada.

1 me gusta

Bueno, pensándolo más a fondo, creo que un método de interfaz de usuario de alta fricción tipo sudo podría ser la mejor opción, ya que esa configuración es “insegura” para la ventana de edición y no todos los administradores tienen acceso a la consola de Rails (piensa en sitios alojados, por ejemplo).

Quizás algo como esto: cuando un administrador intenta guardar el nuevo correo electrónico, debería aparecer un cuadro de diálogo modal que lo obligue a volver a ingresar su propia contraseña para confirmar la acción (o un desafío de autenticación en dos pasos si está habilitado). Es obvio que esta acción debe registrarse en detalle en los registros del personal. Creo que aún se requiere alguna forma de verificación obligatoria del usuario para darle a un usuario legítimo la oportunidad de informar una toma de control de cuenta, y también debería enviarse una notificación a la nueva dirección de correo electrónico confirmando el cambio. :thinking:

Me opongo firmemente a la idea de que un administrador pueda simplemente cambiar las direcciones de correo electrónico a petición de los usuarios. Debe haber algún nivel de fricción o complejidad con la verificación.

1 me gusta

Sí, esa funcionalidad definitivamente necesita atención y actualizaciones. Ahora mismo, si la activas, un administrador puede editar el correo electrónico de cualquier cuenta de usuario sin ninguna protección adicional. Me gusta tu idea de la autenticación en dos pasos o la contraseña.

1 me gusta

Gracias por hacerme pensar en la función de «editar correo electrónico». ¡Es una discusión interesante y algo compleja de considerar! :slight_smile:

1 me gusta

He realizado una edición en el mensaje original para mejorar significativamente la redacción y añadir esas sugerencias adicionales sobre cómo proteger el cambio :wink: Creo que mejorará las cosas de manera considerable en general.

1 me gusta