Contraseña aceptada cuando se agregan caracteres

32

Descubrí accidentalmente que puedo iniciar sesión en la cuenta de mi universidad si escribo mi contraseña y agrego algunos caracteres. Así que si mi nombre de usuario es e. sol. "abc" y mi contraseña es "password", puedo iniciar sesión con "abc" / "password", pero también con "abc" / "password121312", "abc" / "password1", "abc" / "passworde" etc. (Hice solo algunos intentos, pero funcionó hasta ahora).

¿Esto es de alguna manera inseguro? (No puedo imaginar por qué (excepto que esto significa que hay otros problemas de seguridad con la red), pero no sé mucho sobre seguridad.) ¿Debo comunicárselo a mi universidad?

    
pregunta 20.10.2017 - 18:15
fuente

2 respuestas

17

Podría sugerir que cualquier rutina de hashing de contraseña que se esté utilizando esté truncando la entrada (usando solo los primeros x caracteres de la contraseña), o la comparación de las contraseñas correctas se ha implementado de manera deficiente, y solo está comparando la primera parte (esto podría implicar que se utilice un cifrado de bloque para almacenar contraseñas o que se almacenen contraseñas sin procesar).

Ninguna situación es particularmente buena.

En el caso de un truncamiento, da una falsa sensación de seguridad: es posible que haya elegido una contraseña aleatoria larga, pero si solo se están utilizando los primeros caracteres, no es tan seguro como podría pensar. es, y por lo tanto podría ser adivinado en un ataque de fuerza bruta más fácilmente. Espero que esta sea la explicación más probable.

En el caso de una rutina de comparación deficiente, esto sugiere que el desarrollador responsable de la rutina de autenticación no estaba familiarizado con las prácticas de desarrollo seguro. Al usar una comparación parcial (por ejemplo, SELECT * FROM users WHERE 'username' LIKE '$username%' AND 'password' LIKE '$password%' ), nuevamente aumenta las posibilidades de que funcionen los ataques de fuerza bruta, pero también sugiere que se pueden haber cometido otros errores: dado el ejemplo anterior, establecer una contraseña de a' OR 1=1'-- daría una Ataque de inyección SQL. Obviamente, este es un ejemplo ligeramente artificial, pero no más allá de los reinos de posibilidad.

En el caso de que se utilice un cifrado de bloque, en lugar de un algoritmo de hashing de contraseña, la longitud permitida en la base de datos puede ser insuficiente para una contraseña larga, una vez cifrada. Efectivamente, esto es truncamiento, pero de los datos cifrados, en lugar de la entrada. Sin embargo, el efecto final es el mismo: proporcionar una contraseña larga da una falsa sensación de seguridad.

    
respondido por el Matthew 20.10.2017 - 18:31
fuente
34

La razón más probable por la que esto sucede es que el sistema trunca las contraseñas. Para verificar esta hipótesis, podría intentar cambiar su contraseña a algo más y ver qué sucede: ¿el sistema reconoce "thisquitelongpassword" como "thisquitelong"? Si es así, el sistema definitivamente trunca las contraseñas. Si no, puede haber problemas serios con la validación de entrada, como se destaca en @Matthew.

Aunque el truncamiento de la contraseña puede ser necesario para interactuar con sistemas heredados, que también trunca los nombres de usuario, consulte esta respuesta en Serverfault , en general debe evitarse, ya que reduce el "espacio de contraseña", es decir, el número de contraseñas únicas que se pueden generar.

Los atacantes pueden ahorrar una gran cantidad de recursos (tiempo, dinero) si saben que su sistema de destino utiliza contraseñas truncadas, ya que saben que no necesitan probar contraseñas más largas que la longitud del truncamiento.

Si bien su comportamiento no me parece malicioso, algunas organizaciones son muy sensibles a que las personas encuentren fallas en sus sistemas.

Por lo tanto, puede intentar decirle a su universidad sobre esto, pero no enfatice demasiado su conocimiento de posibles ataques. Solo decir algo como "Leí esto puede ser señal de un problema de seguridad" debería estar bien. Además, no establezca las cosas de una manera absoluta como "esto es completamente irrazonable", ya que puede haber razones para eso (para el truncamiento de la contraseña, no para la validación de entrada incorrecta).

Obviamente, no realices demasiadas pruebas, no automatices las pruebas y no realices ataques.

    
respondido por el A. Darwin 20.10.2017 - 18:40
fuente

Lea otras preguntas en las etiquetas