Skip to main content

Proteger las aplicaciones con autenticación y controles de acceso

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Describir la importancia de realizar la autenticación y el control de acceso.
  • Explicar los métodos de ataque que aprovechan la autenticación fallida.
  • Enumerar los métodos de ataque que aprovechan el control de acceso fallido.

Autenticación y acceso a aplicaciones

Imagine la seguridad en un aeropuerto. Antes de embarcar, los pasajeros deben mostrar una prueba de su identidad al agente de billetes, que comprueba la identificación con el manifiesto de pasajeros y la escanea con una base de datos de malos agentes. Estos pasos de autenticación física son muy parecidos a los pasos de autenticación lógica que los usuarios deben completar antes de poder acceder a los recursos tecnológicos, incluidas las aplicaciones. 

Un guardia de seguridad comprueba el documento de identidad y la tarjeta de embarque de un pasajero de avión

Los ingenieros de seguridad de las aplicaciones restringen el acceso a los datos a los usuarios identificados, autenticados y autorizados. La autenticación verifica la identidad de alguien mediante credenciales, normalmente nombre de usuario y contraseña, para iniciar sesión en una aplicación. Esto permite a la aplicación conceder a los usuarios los privilegios necesarios, que restringen al usuario el acceso a algunas cosas y le permiten acceder a otras. Este concepto de conceder y restringir el acceso a los recursos se denomina autorización. Todo el proceso de identificación, autenticación y autorización de usuarios se conoce como control de acceso.  

Los ingenieros de seguridad de aplicaciones desempeñan un papel clave en la gestión de la autorización de aplicaciones, el inicio de sesión y los permisos de usuario. Al hacerlo, se protegen de los atacantes que ponen en peligro contraseñas, claves o tokens. Al hacerlo, los ingenieros de aplicaciones controlan, gestionan y auditan el acceso a las aplicaciones, especialmente el acceso privilegiado (administrativo). 

Los ingenieros ejecutan las aplicaciones mediante el menor número de privilegios posible (un concepto conocido como mínimo privilegio). También comprueban si la aplicación presenta problemas de control de acceso verticales y horizontales. Un problema horizontal se produce si un usuario puede ver/modificar la información de otro usuario. Un problema vertical se produce si el usuario puede obtener acceso administrativo de forma inapropiada. 

Por ejemplo, los ingenieros de seguridad de aplicaciones protegen contra las referencias directas inseguras a objetos, que permiten a los atacantes saltarse la autorización y acceder directamente a los recursos del sistema. Esto ocurre cuando la aplicación toma una entrada proporcionada por el usuario y la utiliza para recuperar un objeto (como un registro de base de datos o un archivo) sin realizar suficientes comprobaciones de autorización. 

Nota

Un token se utiliza normalmente de la siguiente manera: En lugar de tener que autenticarse para cada recurso, el usuario se autentica de esa forma una vez (dentro de una sesión de duración limitada), obtiene a cambio un token de tiempo limitado del servidor y utiliza los datos de identidad de ese token para autenticarse posteriormente durante la sesión.

Protección contra la autenticación fallida

Uno de los riesgos contra los que se protegen los ingenieros de seguridad de aplicaciones es la autenticación fallida. Esto ocurre cuando un atacante obtiene acceso no autorizado a cuentas y compromete un sistema. El impacto de este riesgo puede ser grave, por ejemplo, si permite a un atacante blanquear dinero, robar las prestaciones de la seguridad social de alguien o incluso su identidad. El riesgo de que los atacantes exploten la autenticación fallida es alto. 

Los atacantes pueden acceder fácilmente a nombres de usuario y contraseñas válidos si adivinan la información a través de la presencia de alguien en las redes sociales o mediante credenciales válidas disponibles a la venta en la dark web (una técnica conocida como relleno de credenciales). Los atacantes comprueban si las aplicaciones y el software asociado utilizan cuentas administrativas predeterminadas. Si todo lo demás falla, el atacante utiliza un ataque de fuerza bruta para adivinar la contraseña del usuario o utiliza un programa automatizado que introduce sistemáticamente cada palabra de un diccionario como contraseña (lo que se conoce como ataque de diccionario) para obtener acceso ilícito. 

Nota

El relleno de credenciales se produce cuando un atacante toma nombres de usuario y contraseñas de una violación importante de otra empresa y utiliza esas credenciales para iniciar sesión en otros servicios digitales. Dado que muchas personas reutilizan los nombres de usuario y las contraseñas entre sitios, los atacantes pueden obtener acceso a otras cuentas además de las comprometidas originalmente.  

Todo esto suena bastante aterrador. ¿Cómo pueden ayudar los ingenieros de seguridad de aplicaciones? Tienen una función clave a la hora de evaluar una aplicación para asegurarse de que no es vulnerable a una autenticación fallida. Al hacerlo, los ingenieros de seguridad de aplicaciones comprueban las siguientes vulnerabilidades.

Contraseñas predeterminadas, débiles o conocidas

Los ingenieros comprueban que la aplicación no utilice credenciales predeterminadas (como admin/admin para cuentas administrativas). Comprueban que la aplicación no utilice contraseñas débiles, que exija a los usuarios crear contraseñas con una determinada cantidad de caracteres, caracteres especiales y que no permita contraseñas comunes. El Instituto Nacional de Estándares y Tecnología (NIST) tiene directrices sobre longitud, complejidad y rotación de contraseñas. 

Autenticación basada en el conocimiento (KBA)

A menudo, los sitios web permiten a los usuarios restablecer una contraseña mediante preguntas KBA, como el nombre de la calle donde crecieron o el nombre de su perro. El problema con este enfoque es que gran parte de esta información personal se puede obtener a través de las redes sociales de una persona o a través de la información disponible en la dark web de violaciones anteriores. 

Los ingenieros de seguridad de aplicaciones implementan mecanismos de recuperación de cuentas más potentes que la KBA, como exigir el envío de un código a un email registrado o a un número de teléfono al que el usuario tenga acceso. También limitan y retrasan los intentos fallidos de inicio de sesión para evitar que los atacantes utilicen la fuerza bruta y los ataques de diccionario para adivinar las contraseñas, y se aseguran de que la aplicación avisa a los administradores de los intentos fallidos de inicio de sesión. 

Contraseñas en texto sin formato o con hash débil 

Almacenar y permitir que los usuarios introduzcan contraseñas en texto sin formato significa que los actores maliciosos pueden leerlas fácilmente. Los ingenieros de seguridad de aplicaciones se aseguran de que todas las contraseñas de los recursos de la aplicación estén cifradas de manera aleatoria. Esto puede parecer una receta de libro de cocina, pero lo que significa es que se añaden datos adicionales a la contraseña y se codifican de forma que no se puedan invertir. 

De este modo, aunque alguien robe la contraseña, no podrá utilizarla. Algunos de los algoritmos informáticos (como MD5) que se utilizan para cifrar contraseñas son débiles, ya que pueden descifrarse rápidamente mediante ingeniería inversa. Los ingenieros de seguridad de las aplicaciones deben evitar el uso de estos algoritmos e implementar algoritmos hash potentes en su lugar.  

Autenticación de factor único 

Utilizar solo el nombre de usuario y la contraseña (algo que el usuario conoce) se denomina autenticación de factor único (SFA). Dado que un atacante puede adivinar o robar contraseñas, los ingenieros de seguridad de aplicaciones implementan la autenticación de múltiples factores (MFA) siempre que sea posible para proteger la autenticación de aplicaciones. 

La MFA utiliza tanto algo que el usuario conoce (como una contraseña) como algo que tiene (como un teléfono) o algo único (como su cara o huella dactilar). Por ejemplo, un usuario introduce su nombre de usuario y contraseña en una aplicación. Se envía una solicitud de autenticación independiente a su teléfono móvil, que también debe aprobar. Esta capa adicional de seguridad hace más difícil que los atacantes pongan en peligro las cuentas. 

Gestión inadecuada de identificadores y tokens de sesión 

Una gestión inadecuada del identificador de sesión y del token puede permitir a un atacante apropiarse de una sesión y hacerse pasar por la víctima. Para evitar que se apropien del identificador de sesión, los ingenieros hacen varias cosas. Se aseguran de que el nombre de la Id. no sea descriptivo para que los atacantes no puedan obtener información sobre las tecnologías y los lenguajes de programación utilizados por la aplicación. 

Al igual que las contraseñas, los identificadores de sesión deben ser lo suficientemente largos para evitar ataques de fuerza bruta. Y deben ser impredecibles para evitar que el atacante pueda adivinarlos. Los ingenieros de seguridad de aplicaciones también almacenan el significado o la lógica de negocio de los identificadores de sesión en el lado del servidor (no en el lado del cliente disponible para el usuario). 

Por último, los ingenieros de seguridad de aplicaciones implementan herramientas de gestión de sesiones integradas en lugar de crear otras nuevas desde cero y son conscientes de las vulnerabilidades del marco que deciden utilizar. Para obtener más información sobre la gestión de sesiones, consulte la hoja de referencia de OWASP asociada. 

Nota

Una sesión es una serie de peticiones y respuestas asociadas a un usuario enviadas a una aplicación. Los identificadores de sesión establecen los derechos de acceso a las interacciones de los usuarios mientras dure la sesión.

Protección frente a un control de acceso fallido

Mientras que la autenticación registra a un usuario en una cuenta, el control de acceso aplica las políticas de permisos de usuario. Cuando se rompe, los atacantes encuentran maneras de ver o editar las cuentas de otra persona o actuar como administradores, mediante funciones privilegiadas para acceder, cambiar o eliminar registros. Se trata de una vulnerabilidad de seguridad común y el impacto puede ser grave en función del tipo de datos a los que pueda acceder el atacante. 

Los ingenieros de seguridad de las aplicaciones las protegen contra este riesgo mediante varias estrategias.

  • Denegar por defecto: Si una solicitud no está específicamente permitida, se deniega. Por ejemplo, si un administrador crea una nueva cuenta de usuario, la cuenta debería tener un acceso mínimo o nulo por defecto hasta que se configure.
  • Mínimo privilegio: Todos los usuarios tienen el menor acceso posible.
  • Imponer la propiedad de los registros: Solo determinados usuarios crean, leen, actualizan o eliminan cualquier registro.
  • Registrar los errores de control de acceso: Cree un registro y avise a los administradores cuando se introduzca una contraseña incorrecta.
  • Gestión de tokens: Establezca tiempos de caducidad para los tokens y elimine los tokens almacenados al cerrar la sesión. Esto evita que los tokens se utilicen indefinidamente y evita que un atacante manipule los tokens para elevar los privilegios.
  • Pruebas tempranas y frecuentes: Por último, el ingeniero de seguridad de aplicaciones comprueba estas protecciones de control de acceso durante el proceso de control de calidad y a lo largo del SDLC.

Resumen

Se han presentado las estrategias que los ingenieros de seguridad de aplicaciones utilizan para proteger las funciones de autenticación y control de acceso de una aplicación para garantizar que solo los usuarios legítimos puedan acceder a los recursos y funcionalidades asignados. Ahora es el momento de profundizar en una última consideración en torno a la protección de las aplicaciones: garantizar que los datos confidenciales no queden expuestos.

Recursos

¡Siga aprendiendo gratis!
Regístrese para obtener una cuenta y continuar.
¿Qué hay para usted?
  • Consiga recomendaciones personalizadas para sus objetivos profesionales
  • Practique sus aptitudes con retos prácticos y pruebas
  • Siga y comparta su progreso con empleadores
  • Póngase en contacto para recibir asesoramiento y oportunidades laborales