Blog

Cómo evitar la enumeración de nombres de usuario | Secure Code Warrior

October 9, 2017
Pieter De Cremer

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.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

Share on social
Lema

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
book a demo
Lema

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Post-Quantum Cryptography: Quantum Computers Will Break Today’s Encryption – Are You Ready?

Post-quantum cryptography (PQC) is critical for protecting data from quantum computing threats. Learn how “harvest now, decrypt later” exposes risk and how developers can prepare for quantum-safe security.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Enabler 2: Senior Leadership Sponsorship

Explore Enabler 2: Senior Leadership Sponsorship. Learn why active buy-in from the CIO, CTO, and CISO is vital to drive developer adoption and program credibility.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI

While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Book a demo