Prevención de Fallas en Autenticación y Contraseñas Débiles
Clase 11 de 15 • Curso de OWASP Top 10: Riesgos en Aplicaciones
Resumen
¿Qué son las fallas de identificación y autenticación?
Las fallas de identificación y autenticación forman parte del Top 10 riesgos de seguridad más comunes en aplicaciones. Estas fallas están relacionadas con la vulneración de credenciales y el proceso de autenticación, donde es esencial autenticar a los usuarios y asignarles roles específicos para realizar ciertas acciones. Un ejemplo típico es el uso de contraseñas débiles, como "admin", "admin", y "12345", vulnerabilidades que deben ser abordadas por los equipos de desarrollo.
¿Cómo proteger las credenciales de acceso?
Es imperativo proteger las credenciales para evitar compromisos de seguridad. Estas medidas son esenciales:
- No permitir contraseñas débiles: Evitar contraseñas evidentes como "123456", "admin", o nombres comunes.
- Verificar bases de datos filtradas: Utilizar servicios web donde se pueda ingresar un correo o número de teléfono para verificar si se ha sido parte de una base de datos comprometida.
- Habilitar múltiples factores de autenticación: Es fundamental activar el multifactor de autenticación para garantizar una capa adicional de seguridad.
- Implementar controles como Antivox o Captchas: Herramientas como Passkey o Passwordless añaden una capa extra de seguridad en el proceso de autenticación.
¿Cuáles son las estrategias de desarrollo para mejorar la seguridad?
El desarrollo de software debe integrar medidas y controles de seguridad eficazmente:
Crear campañas de "Quick Password Checks"
Consiste en utilizar diccionarios de contraseñas para reforzar las claves de los sistemas. Detectar claves como "123456" es esencial para realizar cambios inmediatos y mejorar la cultura de ciberseguridad en la organización.
Velar por la creación de diccionarios propios
El encargado de ciberseguridad puede recolectar datos de perfil de usuarios, como el ID o fechas de cumpleaños, y efectuar ataques de diccionario controlados para verificar si están utilizando información personal como contraseña. Esto ayuda a identificar vulnerabilidades y establecer controles adecuados.
Limitar intentos de inicio de sesión
Implementar un límite en los intentos de inicio de sesión automatizados para prevenir ataques por diccionario o fuerza bruta es crucial. Este tipo de medida ayuda a mitigar los riesgos y proteger de accesos no autorizados.
¿Cómo mitigar el riesgo de ataques en aplicaciones web?
Luego de identificar vulnerabilidades en una aplicación a través de herramientas como Burp Suite, donde se puede simular un ataque de diccionario, es posible aplicar controles para mitigar estos riesgos.
Ejemplo de restricción de peticiones en código
A continuación, se muestra cómo restringir peticiones en el código de una aplicación web vulnerable para controlar ataques:
# Ejemplo de código para limitar peticiones
# Líneas que ilustran la restricción y control de accesos
from flask_limiter import Limiter
from flask import Flask
app = Flask(__name__)
limiter = Limiter(
app,
key_func=get_remote_address,
default_limits=["200 per day", "50 per hour"]
)
Este fragmento de código muestra cómo limitar las peticiones por día y por hora. Implementar limitadores evita ataques automatizados y mantiene la integridad y seguridad de la aplicación.
Con estos consejos y prácticas, las aplicaciones pueden ser más seguras y resistentes a fallas de identificación y autenticación. La clave está en mantenerse proactivo, aplicar controles adecuados y fomentar una cultura de ciberseguridad robusta dentro de la organización. ¡Adelante, sigue perfeccionando tus habilidades en ciberseguridad!