¿Es una mala idea pedir el correo electrónico del usuario y la contraseña de correo electrónico?

5

Trabajo como probador en una empresa que fabrica dispositivos de seguridad de red, estoy teniendo algunas conversaciones con un desarrollador sobre una característica.

La función es que los correos electrónicos de notificación enviados al usuario por el dispositivo se enviarán usando las credenciales del usuario (correo electrónico y contraseña de correo electrónico) usando cualquier servidor de correo que el usuario use (gmail, servidor de correo local, etc)

Estas credenciales están dentro de la máquina en texto sin formato y están disponibles con un gato al archivo correcto. El desarrollador argumenta que no tiene sentido intentar usar ningún cifrado porque siempre tendrán que descifrarlo al enviar las credenciales al servidor de correo.

Ahora no sé qué pensar, ¿hay una forma correcta de hacer esto? ¿O es la característica insegura y no hay una forma segura de hacerlo?

    
pregunta Dodd 22.11.2017 - 19:05
fuente

4 respuestas

2

¿Cuál es tu modelo de amenaza? ¿Quién va a intentar robar la contraseña y cómo?

Si ejecuta la aplicación como su propio usuario, y solo ese usuario puede acceder a ese archivo de contraseña y confía en la raíz, entonces está bien.

Lo ideal sería que la aplicación enviara desde su propia cuenta de correo electrónico, de modo que si hubiera un compromiso, el impacto es mínimo (o el cliente siempre puede crear una nueva cuenta de correo electrónico solo para esta aplicación)

Si no confías en la raíz (porque estás ejecutando en AWS o similar), entonces no estás bien.

Pero no podemos saberlo hasta que nos cuentes tu modelo de amenaza

    
respondido por el Neil McGuigan 22.11.2017 - 20:59
fuente
-2

Su desarrollador debe sentarse para hablar sobre las buenas prácticas de seguridad.

Esencialmente, dejar los datos cifrados en el disco significa que todo lo que un atacante tiene que hacer es acceder al cuerpo de ese archivo. Su desarrollador no puede garantizar que su software esté libre de vulnerabilidades de seguridad, el otro software del sistema está libre de vulnerabilidades y el sistema operativo está libre de vulnerabilidades. Tampoco puede garantizar que el sistema funcionará en modo de usuario único o con una buena seguridad a nivel de sistema de archivos aplicada al sistema. Tampoco puede garantizar que el disco duro nunca termine montado en un sistema operativo diferente que no se preocupa por ningún nivel de seguridad del sistema.

Esencialmente, él se asegura de que comparte los datos de los usuarios con cualquier otra persona que tenga acceso a ese sistema operativo (legítimo o no). Él está haciendo esto sin el conocimiento de los usuarios finales.

Pero, también está llegando a la mitad con la idea de cifrar los datos del usuario. En realidad, no debería almacenar la contraseña del usuario en absoluto; debería utilizar la API del cliente de correo electrónico en cuestión, como la integración OAuth2 de Gmail enlace para conectarse a la cuenta de correo electrónico. Esta es la forma correcta de hacerlo y evita tener credenciales por ahí, encriptadas o no. Lo mismo es cierto para casi cualquier cliente de correo: integre con su API dada. Lo más probable es que no sea necesario conocer la contraseña del usuario más que quizás en el primer apretón de manos.

    
respondido por el Adonalsium 22.11.2017 - 19:22
fuente
-3

El almacenamiento de una contraseña en texto sin formato se considera inseguro sin importar el uso o las medidas de seguridad. Como se discutió en la sección de comentarios, su pregunta es sobre los usuarios que entregan sus credenciales de inicio de sesión, los detalles del servidor y la información sobre su proveedor de correo para ser usados para enviar notificaciones a ese mismo usuario.

Para ser muy claros acerca del almacenamiento de la contraseña en texto simple: Esta no es una forma segura de manejar las contraseñas en absoluto. Para más detalles sobre esto, alguien podría piratear la máquina del servidor, use una falla o error en la aplicación misma o roba cualquier copia de seguridad que se realice. Hay muchas formas de filtrar los detalles de inicio de sesión, me cuesta encontrar alguna razón por la que almacenar las credenciales en texto sin formato.

Como se puede leer en este documento , ha habido muchos incidentes importantes de pérdida de contraseña Recientemente donde las contraseñas fueron almacenadas en texto plano. El documento también explica mucho sobre los conceptos de contraseña y su almacenamiento seguro, una lectura valiosa para el desarrollador que supongo.

El desarrollador tiene razón cuando dice que necesitaría descifrar las contraseñas para enviarlas al proveedor de correo, aunque la aplicación debería utilizar la API de los proveedores de servidores de correo para enviar notificaciones sin siquiera necesitar la contraseña en primer lugar.

    
respondido por el Kevin Voorn 22.11.2017 - 19:50
fuente
-3

Esto es completamente incorrecto.

Para enviar un correo electrónico, todo lo que se necesita es un servidor smtp en ejecución (no necesariamente requiere ninguna credencial, y mucho menos de un usuario final) y una dirección "a". Es responsabilidad del dispositivo proporcionar o utilizar un servidor smtp adecuado.

No es necesario utilizar las credenciales del usuario. De hecho, nunca le daría a nadie la contraseña de mi cuenta de correo electrónico. No sirve de nada, excepto para mí.

Su desarrollador obtuvo el proceso de envío de correo electrónico totalmente incorrecto.

    
respondido por el nulldev 22.11.2017 - 23:54
fuente

Lea otras preguntas en las etiquetas