¿Es correcto que el software almacene las contraseñas localmente en texto sin formato?

5

Ya hay muchas preguntas sobre qué hacer cuando los sitios web almacenan contraseñas de texto simple . Pero este es un poco diferente.

Uso un software de código abierto (ver más abajo) para jugar juegos. Requiere una cuenta de usuario que no esté directamente vinculada a ningún servicio. El inicio de sesión consiste en ingresar un nombre de usuario y una contraseña en un diálogo, pero ese diálogo también brinda la opción "Guardar contraseña".

Esta opción guarda la contraseña utilizando una API diseñada para almacenar configuraciones en aplicaciones multiplataforma. Pero debido al hecho de que está destinado a guardar configuraciones no confidenciales que se pueden cambiar fuera de la aplicación, guarda los datos en texto sin formato. Y lo hace en ubicaciones que no requieren permisos especiales para acceder. Por ejemplo, en Windows, la API almacena la configuración en el registro (en una ubicación en la que incluso los que no son administradores también tienen acceso de solo lectura).

A la API se le pasa la contraseña en texto sin formato y, por lo tanto, se almacena la contraseña en texto sin formato. Esto significa que ahora puedo ejecutar un comando simple desde un indicador no elevado en mi máquina y obtener la última contraseña que usé en texto sin formato.

Además, cualquier software en mi computadora puede acceder fácilmente a esta información. Recientemente escribí un pequeño programa que actualizó ciertos archivos que usa el software. Sin embargo, comencé a recibir quejas de que el programa no podía editar los archivos a pesar de que los encontraba. Resultó que los usuarios no habían estado ejecutando el programa como administrador. Pero eso significa que, aunque mi programa no tenía permiso para acceder a los archivos del juego del programa, sí podía leer las mismas claves de registro que contienen la contraseña de texto sin formato, incluso cuando la seguridad de Windows lo había bloqueado como un programa descargado. / p>

Ya he mencionado el problema anteriormente, pero a pesar de mis mejores esfuerzos, nadie parece estar tomando esto como un problema grave (ver más abajo).

Pregunta: ¿Estoy haciendo 'mucho ruido por nada', o estoy almacenando la contraseña en texto sin formato localmente un problema tan grave como creo que almacenar la contraseña en texto sin formato en cualquier lugar es?

Nota: El hecho de ser de código abierto significa que podría "solucionar" el problema, pero hay algunos problemas:

  • Es totalmente multiplataforma (y no se utiliza ningún código específico de plataforma). La mayoría de los sistemas que conozco que podrían almacenar la contraseña de una forma relativamente segura dependen mucho de la plataforma (como DPAPI)

  • El grupo de desarrollo principal es extremadamente pequeño, y parece que ninguno de ellos comprende la importancia de proteger las contraseñas. He mencionado el tema anteriormente, y la respuesta que recibí hace que sea poco probable que una RP obtenga algún resultado. La única persona que ejecuta un servidor que utiliza el software que conozco lo ignoró como "argumentando por el simple hecho de discutir". Su respuesta fue:

  

"No sé si estoy de acuerdo con que la responsabilidad recae en la herramienta, es como decir que no deberíamos construir armas porque pueden usarse de manera incorrecta. Depende de la persona que usa la herramienta para usar esa herramienta. responsabilidad "..." si alguien es lo suficientemente tonto como para poner la contraseña de la cuenta bancaria en [el programa] tal vez debería considerar investigar un poco sobre seguridad ".

Luego recordé haber visto algo acerca de las contraseñas almacenadas con cifrado, así que traté de convencerlo de que parte del mismo razonamiento que dicta las bases de datos debería cifrar las contraseñas aplicadas a las contraseñas almacenadas localmente. Pero no estuvo de acuerdo (parece que el hecho de que las contraseñas estén cifradas es un poco de programación de culto de carga):

  

"la base de datos es de acceso público [no veo por qué debería ser ese otro problema], eso es completamente diferente. su máquina no debería estar en el mundo para que la gente acceda" ... "una vez más , si tu máquina está colgando en el mundo sin protección, no vengas a llorar "

  • El usuario promedio tampoco parece entender la relevancia, por lo que forzar el repositorio y proporcionar una solución no hará nada. Dado que el software es para un juego gratuito sin clasificación ni monetización, no entienden por qué me preocupa tanto que alguien descubra mi contraseña (o por qué debería serlo). Los un poco más conocedores simplemente lo descartan diciendo que es culpa del usuario si su contraseña no es exclusiva de esa cuenta.

  • No estoy de acuerdo en que debería haber una función de "Guardar contraseña". Almacenar contraseñas localmente es muy difícil de hacer correctamente (incluso sistemas como DPAPI están lejos de ser perfectos). Raramente siento que vale la pena proporcionar la funcionalidad. Y especialmente no veo el punto para un programa como este.

pregunta Selali Adobor 02.10.2014 - 19:37
fuente

3 respuestas

4

Respuesta corta, nunca está bien almacenar contraseñas de texto sin formato y hacerlo es una mala práctica. Según su descripción, existe un riesgo limitado asociado con la organización que respalda la aplicación porque no hay riesgos de cumplimiento ni riesgos monetarios directos asociados. Ese riesgo se pasa a los usuarios. Es posible que los usuarios de este software tengan sus contraseñas filtradas. Eso plantea riesgos para la organización en malas relaciones públicas si se elimina. Eso podría ser usado para justificar el costo de arreglarlo.

Los usuarios de cualquier software esperarán que el software esté tomando las precauciones adecuadas con sus contraseñas. La mayoría de los usuarios no piensan mucho en guardar sus contraseñas. Asumirán que está guardado de forma segura, el software no les advertirá que está en texto sin formato y la mayoría de los usuarios reutilizarán las contraseñas. Sí, es una mala práctica de su parte, pero guardarlo en texto sin formato solo empeora las cosas. El argumento de 'sheeple merece ser hackeado' es incorrecto. Hay una razón por la cual los enrutadores inalámbricos domésticos ahora tienen su seguridad más fuerte. Eso se hizo para proteger a las personas que no saben cómo encenderlo. Nadie es un experto en todo y no todos comprenderán los aspectos básicos de la seguridad. Parte de nuestro rol como profesionales de la seguridad es cuidar a las personas que no saben lo suficiente como para protegerse.

Creo que tienes una ardua batalla por arreglar esto. Llamaría a guardar contraseñas en texto sin formato una violación de la confianza del usuario. Ahí está el riesgo que mencioné anteriormente. Sin embargo, con la actitud que ya ha visto, es probable que la rechacen y que continuar rechazando esa cultura puede que no valga la pena. Aunque creo que es lo correcto. Sé que eso me ha hecho impopular cuando surgieron promociones / aumentos en trabajos anteriores, pero lo hice de todos modos. Los usuarios esperan que tome precauciones con sus contraseñas. Si se da cuenta de que no lo hace, es posible que no recupere esa confianza.

    
respondido por el Paraplastic2 02.10.2014 - 21:10
fuente
2

Personalmente, no estoy de acuerdo con el almacenamiento de las contraseñas de texto sin formato SIEMPRE es malo, ya que depende de la aplicación o el propósito de la contraseña que se almacena. En términos generales, sí, almacenar contraseñas en texto sin formato es una mala opción de seguridad por todas las razones obvias. Sin embargo, eso no significa que sea una opción super-mala en todas las circunstancias.

Si la contraseña no se transmite abiertamente (a través de Internet, o incluso a la red local), se almacena localmente en los archivos del programa para la autenticación, y no hay nada que valga la pena proteger, a quién le importa si almacena la contraseña. en texto plano? Eso es como proteger con contraseña su acceso a notepad.exe. El ÚNICO riesgo es que el usuario final seleccione un nombre de usuario y una contraseña que usen para otras aplicaciones existentes con mayor riesgo. Si esa información se ve comprometida por causas ajenas a la suya, es posible que sus usuarios finales estén expuestos a algún daño.

Heck, incluso hay algunas aplicaciones, (¡tal vez enseñando a alguien a descifrar aplicaciones mal escritas! = D), donde puede elegir deliberadamente almacenar contraseñas de texto sin formato.

El riesgo es increíblemente pequeño, y puede que ni siquiera valga la pena preocuparse. No es como si estuviera almacenando contraseñas para acceder a los códigos de lanzamiento del arsenal nuclear de una nación aquí. Pero existe ALGUNO riesgo, incluso si es pequeño, y tomar medidas sencillas para proteger a sus usuarios es algo agradable.

    
respondido por el Desthro 02.10.2014 - 23:07
fuente
0

El conjunto " único y aleatorio " cumple un doble propósito en este mundo imperfecto, donde los sitios web no pueden hacer lo correcto ni tener buenas intenciones.

El sitio web podría vender las combinaciones de contraseña de nombre de usuario a los crackers para la investigación e incorporación a ataques de diccionario avanzados. Aka haciendo daño intencional. Proporcione un juego gratuito, requiera registro, vea cuántos dummies usan las mismas credenciales que sus cuentas de Facebook o Google.

Entonces, por supuesto, solo hay los tontos que no saben nada sobre seguridad y los almacenan en texto sin formato.

De cualquier manera, es malo y usted, como usuario, debe asumir que el sitio web no es confiable y usar una contraseña única y aleatoria.

Y si eres un desarrollador que hace un juego de Internet tonto, considera que tus usuarios podrían no conocer buenas prácticas de seguridad y terminar usando las mismas credenciales para tu juego que para su cuenta bancaria, y si tu juego de Internet es pirateado. y la tabla de contraseñas robada, entonces podría haber hecho un gran daño involuntario a sus clientes.

Entonces, sí, digo que siempre es importante tomar en serio la seguridad, ya sea un desarrollador o un usuario. Y si toma en serio la seguridad, entonces no está bien nunca almacenar contraseñas en texto plano, ni es aceptable no eliminarlas u otras malas prácticas anticuadas.

En su caso particular, desearía cifrar las contraseñas basadas en algo que solo el usuario de su software sabe en lugar de eliminarlas, porque parece que su aplicación es algo así como un administrador de contraseñas . Hay bibliotecas por ahí que lo hacen fácil dependiendo de la tecnología que estés usando. .NET?

    
respondido por el Andrew Hoffman 02.10.2014 - 23:18
fuente

Lea otras preguntas en las etiquetas