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.
Investigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónInvestigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor


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 y descargue el PDF de este recurso.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Ver el informeReservar una demostraciónInvestigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor
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
Investigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDescargarRecursos para empezar
Servicios profesionales - Acelerar con experiencia
El equipo de servicios de estrategia de programas (PSS) de Secure Code Warriorle ayuda a crear, mejorar y optimizar su programa de codificación segura. Tanto si empieza de cero como si está perfeccionando su enfoque, nuestros expertos le proporcionarán orientación personalizada.
Temas y contenidos de la formación sobre código seguro
Nuestro contenido, líder en el sector, evoluciona constantemente para adaptarse al cambiante panorama del desarrollo de software teniendo en cuenta su función. Temas que cubren todo, desde IA a XQuery Injection, ofrecidos para una variedad de roles desde Arquitectos e Ingenieros a Product Managers y QA. Eche un vistazo a lo que ofrece nuestro catálogo de contenidos por tema y función.
Búsqueda: Aprendizaje líder en la industria para mantener a los desarrolladores por delante mitigando el riesgo.
Quests es una learning platform que ayuda a los desarrolladores a mitigar los riesgos de seguridad del software mediante la mejora de sus habilidades de codificación segura. Con rutas de aprendizaje curadas, desafíos prácticos y actividades interactivas, capacita a los desarrolladores para identificar y prevenir vulnerabilidades.
Recursos para empezar
Inyección indirecta y riesgos de seguridad de las herramientas de codificación agéntica
Cómo se engañó a un agente de codificación para que escribiera código propenso a inyecciones SQL, instalara herramientas de shell y tal vez incluso acechara a su usuario.
La Década de los Defensores: Secure Code Warrior Cumple Diez Años
Secure Code Warriorha permanecido unido, dirigiendo el barco a través de cada lección, triunfo y contratiempo durante toda una década. Estamos creciendo y listos para afrontar nuestro próximo capítulo, SCW 2.0, como líderes en gestión de riesgos para desarrolladores.
10 predicciones clave: Secure Code Warrior sobre la influencia de la IA y el diseño seguro en 2025
Las organizaciones se enfrentan a decisiones difíciles sobre el uso de la IA para apoyar la productividad a largo plazo, la sostenibilidad y el retorno de la inversión en seguridad. En los últimos años nos ha quedado claro que la IA nunca sustituirá por completo el papel del desarrollador. Desde las asociaciones entre IA y desarrolladores hasta las crecientes presiones (y confusión) en torno a las expectativas de seguridad por diseño, echemos un vistazo más de cerca a lo que podemos esperar durante el próximo año.