Blog

Las 10 mejores API de la serie OWASP de Coders Conquer Security: autenticación rota

September 16, 2020
Matias Madou, Ph.D.

No es de extrañar que la autenticación fallida haya figurado en la lista OWASP de problemas de API; los mecanismos de autenticación son notoriamente difíciles de implementar correctamente. Además, los atacantes tienen una pequeña ventaja porque, por su propia naturaleza, la mayoría de los desafíos de autenticación deben estar expuestos a los usuarios, lo que les da la oportunidad de estudiarlos y buscar patrones o vulnerabilidades que puedan aprovechar.

Por último, dado que la autenticación suele actuar como puerta de entrada tanto a una aplicación como, potencialmente, al resto de la red, son objetivos tentadores para los atacantes. Si un proceso de autenticación se interrumpe o es vulnerable, es muy probable que los atacantes descubran esa debilidad y la exploten.

Por lo tanto, en este capítulo, vamos a aprender cómo excluir a los malos cuando se trata de problemas de autenticación. Si primero quieres poner a prueba tus habilidades, no te pierdas nuestro desafío gamificado:

¿Quieres mejorar tu puntuación? Quédate conmigo mientras lo analizamos.

¿Cuáles son algunos ejemplos de autenticación rota o mal configurada?

Un ejemplo en el que el problema puede no ser tan evidente es cuando un método de autenticación es vulnerable al exceso de credenciales o al uso de listas de nombres de usuario y contraseñas conocidos para infringir la seguridad. Incluso un método de autorización que normalmente es muy seguro, como la autenticación multifactorial, puede resultar vulnerable si las solicitudes no se limitan, limitan o supervisan de otro modo.

Por ejemplo, un atacante podría activar una solicitud de recuperación de contraseña enviando una solicitud POST a/api/sistema/códigos de verificación y proporcionar un nombre de usuario en el cuerpo de la solicitud. Si una aplicación utiliza un desafío de mensajes de texto SMS en el que se envía un código de seis dígitos al teléfono del usuario, pero el campo de entrada no es limitado, se puede acceder a la aplicación en solo unos minutos. Un atacante solo tiene que enviar todas las combinaciones posibles de seis dígitos a la aplicación hasta que encuentre la correcta.

En ese escenario, a primera vista, parece que tener una autenticación de dos factores mantendrá segura una aplicación. Sin embargo, dado que la entrada del usuario no tiene una velocidad limitada, la autenticación no funciona y es vulnerable.

En otro ejemplo, una aplicación puede usar objetos de usuario codificados como cookies de autenticación. Sin embargo, si un atacante con un acceso de usuario de bajo nivel decodifica esa cookie con Base64, podría descubrir cómo la cookie define las sesiones y los usuarios de la aplicación. Por ejemplo, es posible que vean el siguiente JSON una vez decodificado:

{
«nombre de usuario»: «ShadyGuy»,
«rol»: «usuario»
{

En ese momento, el usuario malintencionado podría cambiar su nombre de usuario, rol o ambos. Podría convertirse en otro usuario con un nivel de privilegios más alto cambiando un par de valores:

{
«nombre de usuario»: «GoodGuy»,
«rol»: «administrador»
{

En ese momento, si el atacante recodifica la información y la establece como el valor de la cookie, básicamente se convierte en el nuevo usuario con un nivel de permiso más alto. A menos que existan métodos para evitar un cambio de este tipo, es muy probable que la aplicación acepte la transformación.

Eliminación de la autenticación rota o mal configurada

Si la autenticación falla, es muy probable que la seguridad general se vea comprometida. Sin embargo, seguir algunas pautas importantes al codificar las aplicaciones puede ayudar a mantener todo seguro.

En primer lugar, asegúrese de incluir comprobaciones de autenticación en todas partes que permitan a los usuarios acceder a las funciones del programa. Si la verificación de autenticación no existe en absoluto, la batalla está perdida desde el principio.

En cuanto a las prácticas recomendadas, una buena cosa a tener en cuenta es evitar exponer los ID de sesión en la URL a la que pueden acceder los usuarios. En el segundo ejemplo anterior, relativo a la autenticación interrumpida, evitar que un atacante intente descifrar la cookie de sesión es mucho más fácil si nunca la descubre.

También es una buena idea implementar la autenticación multifactor. Esto se puede hacer de forma segura mediante el uso de tokens de hardware que generan contraseñas de forma algorítmica en plazos ajustados. Si no puedes proporcionar a tus usuarios dispositivos como esos, los mensajes de texto SMS también pueden funcionar. Sin embargo, debes asegurarte de que las solicitudes de los usuarios se limiten a algo razonable, como tres o cuatro intentos en un período de 30 segundos, y de que los códigos caduquen todos juntos después de solo unos minutos. El uso de un código alfanumérico también puede mejorar la seguridad al añadir letras y números a las posibles contraseñas.

Por último, si es posible, evite utilizar nombres de usuario o valores secuenciales predecibles como ID de sesión. En su lugar, utilice un administrador de sesiones seguro del lado del servidor que genere un identificador de sesión aleatorio cada vez.

Implementar métodos de autenticación seguros es un poco más complicado que combatir la vulnerabilidad promedio. Sin embargo, dado que la autorización es tan importante para todas las aplicaciones, programas y API, vale la pena dedicar más tiempo a asegurarse de que se hace correctamente.

Eche un vistazo a la Secure Code Warrior páginas de blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otras fallas de seguridad. También puedes prueba una demo de la plataforma de formación Secure Code Warrior para mantener todas sus habilidades de ciberseguridad perfeccionadas y actualizadas.


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