El control de acceso es un mecanismo de seguridad para poner restricciones a las accesibilidades de los recursos y decidir quién o qué puede ver o utilizar los recursos de una empresa. Esto se verifica después de la autenticación y lo que los usuarios autorizados pueden hacer. No es una tarea fácil de hacer, cualquier falla durante la verificación puede provocar la modificación o destrucción de datos o el desempeño no autorizado de las funciones comerciales, etc. A veces, los desarrolladores no diseñan el control de acceso específicamente, sino que simplemente lo diseñan junto con el sitio web. Como resultado, esa colección especial de reglas se vuelve difícil de entender.
¿Qué es el control de acceso roto?
La implementación deficiente del mecanismo de control de acceso conduce a un control de acceso defectuoso, que puede explotarse fácilmente. Esto se llama control de acceso roto. Debido al control de acceso roto, los usuarios no autorizados pueden ver contenido que no pueden ver, pueden realizar funciones no autorizadas, incluso un atacante puede eliminar el contenido o hacerse cargo de la administración del sitio.
Vulnerabilidades de control de acceso
Podemos dividir las vulnerabilidades de control de acceso principalmente en tres categorías:
1. Escalada horizontal de privilegios:
Cuando los usuarios pueden acceder a los datos de otros usuarios que tienen el mismo nivel de permisos que ellos.
Por ejemplo , cuando inicia sesión en su cuenta de redes sociales, puede ver su contenido y realizar cambios en él, pero no puede acceder a las cuentas de otros usuarios. Sin embargo, las cosas podrían salir mal si el control de acceso es defectuoso.
2. Escalada vertical de privilegios:
Cuando los usuarios pueden acceder a los datos de aquellos usuarios que tienen permisos para realizar algunas acciones que los usuarios normales no tienen, con controles de acceso verticales, diferentes tipos de usuarios tienen acceso a diferentes funciones de la aplicación.
Por ejemplo , para realizar ciertas funciones y acceder a ciertos recursos, un usuario debe tener privilegios de administrador, un usuario normal no tiene tales privilegios. Los controles de acceso verticales rotos permiten a los atacantes acceder a esas funcionalidades.
3. Escalada de privilegios dependiente del contexto:
Cuando a un usuario se le permite realizar acciones en el orden incorrecto.
Por ejemplo , después de comprar los artículos de un sitio web de comercio electrónico, no se debe permitir que un usuario modifique su carrito de compras. El control de acceso dependiente del contexto no permite que un usuario cambie los artículos después del pago, pero si se rompe, el usuario podrá realizar cambios.
Impactos del control de acceso roto
1. Cada vez que creamos una cuenta en un sitio web, se nos otorga una identificación única. Al usar esa identificación, podemos acceder a la base de datos donde se guardan todos nuestros contenidos confidenciales. Suponga que ha iniciado sesión en un sitio web y su ID de usuario es 986 . La URL de su página de perfil debería verse así: https://brokenaccesscontrol.com/profile?id=986 . Debemos tener en cuenta que, al igual que usted, todos los demás que crean su cuenta en ese sitio web reciben una identificación de usuario única. Entonces, si reemplaza su identificación con la identificación de usuario de otra persona, entonces puede obtener acceso a su perfil. Sí, esto puede suceder si el control de acceso no se implementa correctamente en el servidor.
2. Los piratas informáticos pueden aprovechar las fallas de acceso para obtener acceso a los recursos y servicios que no deberían ser accesibles para los usuarios normales.
Por ejemplo , la página de administración de una aplicación web solo debe ser accesible para el administrador y no debe estar disponible para ningún otro usuario. Sin embargo, si el control de acceso está roto, los piratas informáticos pueden acceder fácilmente a él simplemente haciendo algunos cambios en la URL. Con ese privilegio, pueden robar los datos de otros usuarios o implementar cargas maliciosas para destruir todo el ecosistema de alojamiento de aplicaciones.
3. Hay posibilidades de ataques de denegación de servicio distribuido (DDOS) . Con acceso a esas cuentas de usuario, los atacantes pueden intentar interrumpir el tráfico normal de un servidor objetivo mediante la implementación de bots. Esto dificulta que el servidor distinga el tráfico de usuarios legítimos del tráfico de ataque.
¿Cómo prevenir el control de acceso roto?
OWASP (Open Web Application Security Project) , una comunidad en línea que analiza las debilidades y los ataques a las aplicaciones web, ha proporcionado una lista de las 10 vulnerabilidades más peligrosas, y Broken Access Control es una de ellas. Muestra que la mayoría de las aplicaciones web tienen poca seguridad. Para evitar el control de acceso roto, el equipo de seguridad puede adoptar las siguientes prácticas:
1. Inspección Continua y Pruebas de Control de Acceso:
La prueba e inspección continuas y eficientes del mecanismo de control de acceso es una forma eficaz de detectar las nuevas vulnerabilidades y corregirlas lo antes posible.
2. Denegar acceso por defecto:
Diseñe el control de acceso de tal manera que no todos puedan acceder a los recursos y funcionalidades a menos que esté destinado a ser de acceso público. Puede aplicar el acceso JIT (Just-in-Time) , que ayuda a eliminar los riesgos asociados con los privilegios permanentes.
3. Limitación del uso de CORS:
El protocolo CORS (Cross-Origin Resource Sharing) proporciona una forma controlada de compartir recursos de origen cruzado. La implementación de CORS se basa en los encabezados del Protocolo de transferencia de hipertexto ( HTTP ) que se utilizan en la comunicación entre el cliente y la aplicación de destino. Cuando el protocolo CORS está mal configurado, hace posible que un dominio sea controlado por una parte malintencionada para enviar requests a su dominio.
4. Habilite el control de acceso basado en funciones:
Este es un mecanismo de control de acceso ampliamente utilizado. De acuerdo con esto, a los usuarios se les otorgan permisos en función de sus roles. En lugar de identificar a cada usuario individualmente, los usuarios se asignan a un grupo de roles, de esta manera se puede reducir la dificultad de soporte y administración de TI y se maximizará la eficiencia operativa.
5. Habilite el control de acceso basado en permisos:
Este es un método de control de acceso, donde la capa de autorización verifica si el usuario tiene permiso para acceder a datos particulares o para realizar una acción en particular, generalmente verificando si los roles del usuario tienen este permiso o no.
6. Habilite el control de acceso obligatorio:
Es un método de seguridad que restringe la capacidad de acceder a los recursos en función de la confidencialidad de la información que contiene el recurso. Esta política de seguridad solo puede ser controlada por el administrador, los usuarios regulares no tienen la capacidad de cambiar esa política. Debido a esta administración centralizada, se considera muy seguro.