
Cómo evitar la enumeración de nombres de usuario | Secure Code Warrior
Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.


La enumeración de nombres de usuario se produce cuando los piratas informáticos utilizan ataques de fuerza bruta para obtener información sobre el nombre de usuario y la contraseña. Aprenda a evitar la enumeración de nombres de usuario con Secure Code Warrior.
应用安全研究员-研发工程师-博士生

Secure Code Warrior 您的组织在软件开发全生命周期中保护代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全管理员、开发人员、首席信息安全官,还是任何与安全相关的工作人员,我们都能助力您的组织降低不安全代码带来的风险。
预约演示应用安全研究员-研发工程师-博士生


Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.
Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.




%20(1).avif)
.avif)
