
Cómo evitar la enumeración de nombres de usuario | Secure Code Warrior
Un ataque de canal lateral es cuando un hacker puede obtener 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 utilizar para dejar esto más claro es una forma de hacer la enumeración de nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestra página web para ver un vídeo explicativo o juega a un reto para ver si puedes identificarlo en el código.
Ahora, para entender cómo se puede hacer la enumeración de nombres de usuario a través de un ataque de canal lateral, es necesario tener un poco de conocimiento de cómo se manejan las contraseñas (o al menos deberían manejarse) en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no guarda o almacena tu contraseña en ningún sitio. Entonces, ¿cómo sabe que lo que has escrito es correcto y que es tu contraseña? Bueno, tu contraseña está cifrada.
Una función hash es una operación matemática que es fácil de realizar en un sentido (aunque algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de los buenos algoritmos hash, la salida es única dependiendo de 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 te registras, la aplicación web realiza el hash de tu entrada y compara el resultado con el hash almacenado. Si quieres saber más sobre el almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algún tiempo en un ordenador 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 hash cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (y por tanto no hay que comprobar la contraseña) pueden responder al usuario inmediatamente. De esta manera, se puede omitir el lento cálculo de la contraseña. Si el nombre de usuario es correcto, se hará un hash de la contraseña introducida y se comparará con el hash almacenado.
Llegados a este punto, ya habrás adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing tarda sólo unos milisegundos, un hacker puede utilizar este retraso añadido para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto tendrá una respuesta ligeramente más rápida porque no se ha realizado el hashing. Este tipo de ataque de canal lateral se llama ataque de tiempo 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.
Así que aunque las contraseñas se manejen perfectamente, y el mensaje que se muestra sea genérico y no avise de si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es fácil, siempre hash la contraseña o retrasar el envío de la respuesta el tiempo que tardaría en hash.
La información obtenida puede ser utilizada por un atacante para obtener una lista de usuarios en el sistema. Esta información puede ser utilizada para atacar la aplicación web, por ejemplo, a través de un ataque de fuerza bruta o de nombre de usuario/contraseña por defecto.


La enumeración de nombres de usuario se produce cuando los hackers 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 le ayuda a proteger el código a lo largo de todo el ciclo de vida del desarrollo de software y a crear una cultura que dé prioridad a la ciberseguridad. Tanto si es gestor de seguridad de aplicaciones, desarrollador, CISO o responsable de seguridad, le ayudamos a reducir los riesgos asociados al código inseguro.
Reservar una demostraciónアプリケーションセキュリティ研究者-研究開発エンジニア-博士候補者


Un ataque de canal lateral es cuando un hacker puede obtener 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 utilizar para dejar esto más claro es una forma de hacer la enumeración de nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestra página web para ver un vídeo explicativo o juega a un reto para ver si puedes identificarlo en el código.
Ahora, para entender cómo se puede hacer la enumeración de nombres de usuario a través de un ataque de canal lateral, es necesario tener un poco de conocimiento de cómo se manejan las contraseñas (o al menos deberían manejarse) en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no guarda o almacena tu contraseña en ningún sitio. Entonces, ¿cómo sabe que lo que has escrito es correcto y que es tu contraseña? Bueno, tu contraseña está cifrada.
Una función hash es una operación matemática que es fácil de realizar en un sentido (aunque algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de los buenos algoritmos hash, la salida es única dependiendo de 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 te registras, la aplicación web realiza el hash de tu entrada y compara el resultado con el hash almacenado. Si quieres saber más sobre el almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algún tiempo en un ordenador 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 hash cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (y por tanto no hay que comprobar la contraseña) pueden responder al usuario inmediatamente. De esta manera, se puede omitir el lento cálculo de la contraseña. Si el nombre de usuario es correcto, se hará un hash de la contraseña introducida y se comparará con el hash almacenado.
Llegados a este punto, ya habrás adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing tarda sólo unos milisegundos, un hacker puede utilizar este retraso añadido para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto tendrá una respuesta ligeramente más rápida porque no se ha realizado el hashing. Este tipo de ataque de canal lateral se llama ataque de tiempo 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.
Así que aunque las contraseñas se manejen perfectamente, y el mensaje que se muestra sea genérico y no avise de si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es fácil, siempre hash la contraseña o retrasar el envío de la respuesta el tiempo que tardaría en hash.
La información obtenida puede ser utilizada por un atacante para obtener una lista de usuarios en el sistema. Esta información puede ser utilizada para atacar la aplicación web, por ejemplo, a través de un ataque de fuerza bruta o de nombre de usuario/contraseña por defecto.

Un ataque de canal lateral es cuando un hacker puede obtener 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 utilizar para dejar esto más claro es una forma de hacer la enumeración de nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestra página web para ver un vídeo explicativo o juega a un reto para ver si puedes identificarlo en el código.
Ahora, para entender cómo se puede hacer la enumeración de nombres de usuario a través de un ataque de canal lateral, es necesario tener un poco de conocimiento de cómo se manejan las contraseñas (o al menos deberían manejarse) en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no guarda o almacena tu contraseña en ningún sitio. Entonces, ¿cómo sabe que lo que has escrito es correcto y que es tu contraseña? Bueno, tu contraseña está cifrada.
Una función hash es una operación matemática que es fácil de realizar en un sentido (aunque algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de los buenos algoritmos hash, la salida es única dependiendo de 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 te registras, la aplicación web realiza el hash de tu entrada y compara el resultado con el hash almacenado. Si quieres saber más sobre el almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algún tiempo en un ordenador 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 hash cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (y por tanto no hay que comprobar la contraseña) pueden responder al usuario inmediatamente. De esta manera, se puede omitir el lento cálculo de la contraseña. Si el nombre de usuario es correcto, se hará un hash de la contraseña introducida y se comparará con el hash almacenado.
Llegados a este punto, ya habrás adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing tarda sólo unos milisegundos, un hacker puede utilizar este retraso añadido para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto tendrá una respuesta ligeramente más rápida porque no se ha realizado el hashing. Este tipo de ataque de canal lateral se llama ataque de tiempo 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.
Así que aunque las contraseñas se manejen perfectamente, y el mensaje que se muestra sea genérico y no avise de si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es fácil, siempre hash la contraseña o retrasar el envío de la respuesta el tiempo que tardaría en hash.
La información obtenida puede ser utilizada por un atacante para obtener una lista de usuarios en el sistema. Esta información puede ser utilizada para atacar la aplicación web, por ejemplo, a través de un ataque de fuerza bruta o de nombre de usuario/contraseña por defecto.

Haga clic en el siguiente enlace para descargar el PDF de este recurso.
Secure Code Warrior le ayuda a proteger el código a lo largo de todo el ciclo de vida del desarrollo de software y a crear una cultura que dé prioridad a la ciberseguridad. Tanto si es gestor de seguridad de aplicaciones, desarrollador, CISO o responsable de seguridad, le ayudamos a reducir los riesgos asociados al código inseguro.
Mostrar informeReservar una demostraciónアプリケーションセキュリティ研究者-研究開発エンジニア-博士候補者
Un ataque de canal lateral es cuando un hacker puede obtener 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 utilizar para dejar esto más claro es una forma de hacer la enumeración de nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestra página web para ver un vídeo explicativo o juega a un reto para ver si puedes identificarlo en el código.
Ahora, para entender cómo se puede hacer la enumeración de nombres de usuario a través de un ataque de canal lateral, es necesario tener un poco de conocimiento de cómo se manejan las contraseñas (o al menos deberían manejarse) en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no guarda o almacena tu contraseña en ningún sitio. Entonces, ¿cómo sabe que lo que has escrito es correcto y que es tu contraseña? Bueno, tu contraseña está cifrada.
Una función hash es una operación matemática que es fácil de realizar en un sentido (aunque algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de los buenos algoritmos hash, la salida es única dependiendo de 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 te registras, la aplicación web realiza el hash de tu entrada y compara el resultado con el hash almacenado. Si quieres saber más sobre el almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algún tiempo en un ordenador 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 hash cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (y por tanto no hay que comprobar la contraseña) pueden responder al usuario inmediatamente. De esta manera, se puede omitir el lento cálculo de la contraseña. Si el nombre de usuario es correcto, se hará un hash de la contraseña introducida y se comparará con el hash almacenado.
Llegados a este punto, ya habrás adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing tarda sólo unos milisegundos, un hacker puede utilizar este retraso añadido para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto tendrá una respuesta ligeramente más rápida porque no se ha realizado el hashing. Este tipo de ataque de canal lateral se llama ataque de tiempo 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.
Así que aunque las contraseñas se manejen perfectamente, y el mensaje que se muestra sea genérico y no avise de si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es fácil, siempre hash la contraseña o retrasar el envío de la respuesta el tiempo que tardaría en hash.
La información obtenida puede ser utilizada por un atacante para obtener una lista de usuarios en el sistema. Esta información puede ser utilizada para atacar la aplicación web, por ejemplo, a través de un ataque de fuerza bruta o de nombre de usuario/contraseña por defecto.
Índice
アプリケーションセキュリティ研究者-研究開発エンジニア-博士候補者

Secure Code Warrior le ayuda a proteger el código a lo largo de todo el ciclo de vida del desarrollo de software y a crear una cultura que dé prioridad a la ciberseguridad. Tanto si es gestor de seguridad de aplicaciones, desarrollador, CISO o responsable de seguridad, le ayudamos a reducir los riesgos asociados al código inseguro.
Reservar una demostración[Descargar]Recursos para empezar
Temas y contenidos de la formación en código seguro
Nuestro contenido, líder en el sector, evoluciona constantemente para adaptarse al entorno de desarrollo de software en constante cambio, teniendo siempre en cuenta las funciones de nuestros clientes. Abarca todo tipo de temas, desde la inteligencia artificial hasta la inyección de XQuery, y está diseñado para satisfacer las necesidades de diversos perfiles, desde arquitectos e ingenieros hasta gestores de productos y responsables de control de calidad. Echemos un vistazo al contenido que ofrece nuestro catálogo, clasificado por temas y funciones.
La Cámara de Comercio establece el estándar para la seguridad impulsada por desarrolladores a gran escala
Kamer van Koophandel comparte cómo ha integrado la codificación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de Trust Score y una cultura de responsabilidad compartida en materia de seguridad.
Modelado de amenazas con IA: convertir a cada desarrollador en un modelador de amenazas
Saldrá mejor equipado para ayudar a los desarrolladores a combinar ideas y técnicas de modelado de amenazas con las herramientas de IA que ya utilizan para reforzar la seguridad, mejorar la colaboración y crear software más resistente desde el principio.
Recursos para empezar
Cybermon ha vuelto: la misión de IA para derrotar al jefe ya está disponible bajo demanda.
Ahora se puede jugar a «Cybermon 2025 Beat the Boss» en SCW durante todo el año. Introduzca retos de seguridad avanzados de IA/LLM y refuerce a gran escala el desarrollo seguro de la IA.
Explicación de la Ley de Resiliencia Cibernética: su significado para el desarrollo de software seguro desde el diseño
Descubra qué exige la Ley de Resiliencia Cibernética (CRA) de la UE, a quién se aplica y cómo puede prepararse el equipo de ingeniería para las prácticas de seguridad desde el diseño, la prevención de vulnerabilidades y el desarrollo de las capacidades de los desarrolladores.
Enable 1: Criterios de éxito predefinidos y medibles
Enabler 1 es la primera parte de la serie Enablers of Success, compuesta por diez partes, y presenta cómo madurar un programa a largo plazo vinculando la codificación segura con resultados empresariales como la reducción de riesgos y la velocidad.




%20(1).avif)
.avif)
