¿La fecha en que se cambió la contraseña por última vez es útil para un atacante?

2

Obviamente, quiero que los usuarios de mi aplicación cambien sus contraseñas de forma regular (de hecho, algunas de nuestras aplicaciones deben estar aprobadas por UL, y requieren un sistema para hacer cumplir las contraseñas cada 90 días). La forma más sencilla de hacerlo es almacenar la última vez que el usuario cambió su contraseña en su registro. También estoy implementando un indicador que, si se establece, básicamente marca su contraseña como "temporal", lo que obliga al usuario a cambiar su contraseña en su próximo inicio de sesión exitoso.

La pregunta es simple: ¿el almacenamiento de estos datos en texto sin formato (la bandera y / o la fecha) expone una vulnerabilidad?

Veo un vector de ataque principal, y es bastante serio; un atacante que obtuvo derechos de edición en la tabla de usuario podría modificar el campo o la bandera de la fecha, obligando al usuario a cambiar su contraseña a voluntad, posiblemente exponiéndolo a un keylogger instalado en la máquina cliente. Eso requiere múltiples "ins", pero si lo hacen de una manera, pueden hacerlo de otra manera. La información de solo lectura podría proporcionar un vector similar al identificar al siguiente usuario que debe cambiar su contraseña, lo que los convierte en el próximo objetivo para detectar su nueva contraseña.

Ya tengo un sistema para el cifrado de datos de usuario basado en contraseña que confunde otros datos confidenciales en el sistema; La pregunta (que bien podría haber respondido yo mismo) es si incluir estos campos en el blob encriptado. Si lo hago, esto obliga legítimamente a los usuarios a cambiar sus contraseñas más difíciles (es posible que desee forzar a cada usuario a cambiar su contraseña, y algunos otros datos para iniciar, si tuviera que descubrir que el DB se había volcado), pero también evita que un atacante haga lo mismo.

    
pregunta KeithS 21.12.2012 - 22:18
fuente

2 respuestas

1

Estuche para texto plano:

  1. El atacante podría cambiar todas las fechas una vez y repetirlas. No es una vulnerabilidad de seguridad, pero podría molestar al cliente antes de que se descubriera.
  2. Su atacante podría aumentar el número de restablecimientos de contraseñas, por lo que obtiene más datos para usar en un ataque.
  3. Si se usa un ataque de diccionario, el atacante sabe reiniciar su ataque del diccionario.
  4. Aumentar la fecha le daría al atacante más tiempo para cualquier ataque que elija y violará tu planificación de seguridad
  5. Como la mayoría de los usuarios generalmente cambian solo un número o letra en su contraseña, esto podría generar un ataque dado algunos esquemas de cifrado. Si el atacante sabe cuándo verificar el texto cifrado, sería más fácil construir un diccionario de contraseñas pasadas.
  6. Si está utilizando campos agrupados (mencionó blobs) y enumera la fecha en que cambió, el atacante sabe la diferencia exacta entre los dos textos cifrados.

Estuche para texto encriptado:

  1. Sobre la base del esquema de encriptación, un historial de los textos cifrados podría exponer algo de conocimiento del texto sin formato. Si el atacante ha descubierto que está usando fechas en su blob (es posible, ya que no están enumeradas en otro lugar), entonces él / ella tiene un espacio clave muy limitado de texto sin formato para esa parte del blob. Esto podría abrir algunas vulnerabilidades.

No sé si algo de esto es práctico. Estoy basando esto en un curso de 6 semanas en criptografía en coursera, pero mis dos centavos.

    
respondido por el user17471 22.12.2012 - 19:50
fuente
1

Creo que sería útil para un atacante. Supongamos que

  1. Me las arreglé para obtener una copia de seguridad con fecha de tu tabla de contraseñas.
  2. El último cambio se almacena en texto sin formato.

Entonces podría estimar la distribución de las edades de las contraseñas. Esto me ayudaría a determinar si vale la pena mi tiempo de cómputo para intentar forzar las contraseñas de forma bruta.

Por ejemplo, si la tabla de contraseñas tiene más de 2 años y la antigüedad máxima de las contraseñas es de casi un año, supondré que se fuerza un cambio de contraseña cada año y todas las contraseñas están obsoletas.

Alternativamente, si la tabla de contraseñas tiene un día de antigüedad y la antigüedad mínima de las contraseñas tiene un año (o pertenece a usuarios nuevos), lo más probable es que todas las contraseñas aún estén vigentes.

    
respondido por el emory 18.09.2015 - 15:38
fuente

Lea otras preguntas en las etiquetas