Prevención de Fallas en Autenticación y Contraseñas Débiles

Clase 11 de 15Curso 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!