ciberseguridad
pentesting
seguridad web
red team
owasp top 10
En septiembre de 2018, aproximadamente 50 millones de cuentas de Facebook fueron expuestas a una vulnerabilidad. Cualquier desarrollador web con algo de conocimiento en HTML/CSS podía generar tokens de inicio de sesión para esos usuarios simplemente haciendo clic en un botón. Este incidente resalta las graves consecuencias del Control de Acceso Roto, una vulnerabilidad crítica de seguridad web que sigue afectando a muchas aplicaciones hoy en día y por eso forma parte del OWASP top 10.
El control de acceso roto ocurre cuando los usuarios pueden acceder a más datos de los que deberían o realizar acciones más allá de lo que están autorizados, debido a la falta de aplicación adecuada de permisos o reglas de seguridad.
Esto puede conducir al acceso no autorizado a funcionalidades o datos, comprometiendo potencialmente todo el sistema. Además, puede resultar en:
No tienes un control de acceso roto (BAC, por sus siglas en inglés) si un usuario encuentra y explota una vulnerabilidad en el mecanismo de inicio de sesión para omitir la autenticación por completo y obtener acceso a funciones de administrador.
El BAC ocurre cuando los controles de acceso (permisos) están mal implementados o no son aplicados adecuadamente por el propio sistema, lo cual es diferente de tener usuarios que manipulan intencionalmente el sistema a través de técnicas maliciosas para acceder a características o datos que, de otro modo, estarían protegidos de manera segura.
El BAC ocurre debido a una mala configuración del sistema o fallos en el diseño, lo que permite acceso no deseado con mínima o ninguna manipulación.
Hackear implica explotar vulnerabilidades o fallas de seguridad a través de técnicas intencionadas, a menudo sofisticadas, para irrumpir en áreas protegidas del sistema.
Las vulnerabilidades de Control de Acceso Roto suelen surgir cuando:
En el caso de Facebook, la vulnerabilidad permitió a los atacantes robar tokens de acceso, que son claves digitales que mantienen a los usuarios conectados a Facebook. Esto les dio a los atacantes el control total sobre las cuentas comprometidas.
Las Referencias Directas Inseguras a Objetos (IDOR) son un tipo de vulnerabilidad de control de acceso que ocurre cuando una aplicación utiliza entradas proporcionadas por el usuario para acceder directamente a objetos. Esto puede llevar al acceso no autorizado a datos o funcionalidades si no se implementan verificaciones adecuadas de autorización.
Considera un sitio de comercio electrónico donde los usuarios pueden ver los detalles de sus pedidos:
Un usuario legítimo, Alice, inicia sesión y accede a su pedido en:
https://example.com/orders?id=1234
Alice nota el parámetro "id" en la URL y se pregunta qué sucedería si lo cambia:
https://example.com/orders?id=1235
Para sorpresa de Alice, ahora puede ver los detalles del pedido de Bob, incluidos su información personal e historial de compras.
Alice se da cuenta de que puede iterar a través de diferentes IDs para acceder a la información de pedidos de cualquier usuario.
Esta vulnerabilidad IDOR existe porque la aplicación no verifica que el usuario autenticado tenga derecho a acceder al ID de pedido solicitado. Supone que si un usuario está autenticado y proporciona un ID de pedido, debe estar autorizado para verlo.
Para prevenir esto, la aplicación debería implementar controles de acceso adecuados, como:
Al abordar las vulnerabilidades de IDOR, los desarrolladores pueden mejorar significativamente la seguridad de sus aplicaciones y proteger los datos sensibles de los usuarios contra accesos no autorizados.
La Escalada de Privilegios Vertical es un tipo de vulnerabilidad de control de acceso en la que un atacante obtiene acceso a recursos o funcionalidades que deberían estar restringidas a usuarios con mayores privilegios o roles diferentes.
Considera un sistema de gestión de contenido (CMS) para un sitio web de noticias:
Un usuario regular, Charlie, inicia sesión en su cuenta para leer artículos.
Charlie nota que la URL para editar un artículo es algo así:
https://news-cms.com/edit-article?id=5678
Aunque Charlie no ve un botón de "Editar" en su interfaz, intenta acceder a esta URL directamente.
Para su sorpresa, ahora puede editar cualquier artículo en el sitio web, una función destinada solo a editores y administradores.
Este tipo de vulnerabilidad de Escalada de Privilegios Vertical existe porque la aplicación no verifica adecuadamente el rol del usuario antes de permitir el acceso a funciones administrativas. Solo comprueba si un usuario ha iniciado sesión, pero no si tiene los privilegios necesarios.
Para prevenir esto, la aplicación debe implementar controles de acceso adecuados, tales como:
Al abordar las vulnerabilidades de Escalada de Privilegios Vertical, los desarrolladores pueden garantizar que los usuarios solo accedan a los recursos y realicen acciones apropiadas para sus roles asignados, manteniendo la integridad y seguridad del sistema.
La Escalada de Privilegios Horizontal es una vulnerabilidad de control de acceso en la que un atacante obtiene acceso no autorizado a los recursos o datos de otros usuarios con el mismo nivel de privilegio. Aunque está estrechamente relacionada con las Referencias Directas Inseguras a Objetos (IDOR), tiene características distintas.
Aunque la Escalada de Privilegios Horizontal a menudo involucra IDOR, es importante notar las distinciones:
manipulación de identificadores en solicitudes. La Escalada de Privilegios Horizontal también podría involucrar secuestro de sesiones, manipulación de cookies o explotación de fallas en la lógica de control de acceso.
3. Intención: IDOR se refiere al acceso a recursos manipulando referencias. La Escalada de Privilegios Horizontal tiene como objetivo específicamente acceder a los datos o la funcionalidad de otros usuarios en el mismo nivel de privilegio.
Considera una plataforma de comercio electrónico:
Alice inicia sesión en su cuenta y ve su perfil en:
https://shop.example.com/profile?token=a1b2c3d4
Alice nota el parámetro token
en la URL y se pregunta si puede ver los perfiles de otros usuarios.
Intercepta sus solicitudes utilizando una herramienta proxy y nota que el servidor también acepta un parámetro user_id
:
https://shop.example.com/profile?token=a1b2c3d4&user_id=5678
Cuando Alice agrega este parámetro con una ID de usuario diferente, puede ver los perfiles de otros usuarios, incluidos su información personal y su historial de compras.
Esta vulnerabilidad de Escalada de Privilegios Horizontal existe porque la aplicación no verifica adecuadamente que el usuario autenticado solo debe acceder a su propia información de perfil. Aunque implica un elemento de IDOR (el parámetro user_id
), la vulnerabilidad es más compleja que una simple manipulación de referencias.
Para prevenir esta Escalada de Privilegios Horizontal, la aplicación debería implementar controles de acceso adecuados, como:
Al abordar estas vulnerabilidades, los desarrolladores pueden garantizar que los usuarios solo accedan a sus propios datos y realicen acciones en sus propias cuentas, manteniendo la privacidad y seguridad de todos los usuarios en el sistema.
La Falta de Control de Acceso a Nivel de Función es otra vulnerabilidad crítica dentro de la categoría más amplia de Control de Acceso Roto. Esta vulnerabilidad ocurre cuando una aplicación no hace cumplir controles de acceso adecuados en funciones o puntos finales de API, lo que permite a usuarios no autorizados acceder a funcionalidades privilegiadas.
Aunque ambos son tipos de vulnerabilidades de control de acceso, difieren en aspectos clave:
Considera una aplicación bancaria en línea:
La aplicación tiene una función de administrador para transferir fondos entre cualquier cuenta:
POST /api/admin/transfer
{
"fromAccount": "1234567890",
"toAccount": "0987654321",
"amount": 1000
}
Esta función está destinada solo para uso de administradores y no debería ser accesible para usuarios regulares.
Sin embargo, los desarrolladores olvidaron implementar verificaciones de control de acceso en este punto final.
Un usuario malicioso, Bob, descubre este punto final a través de la documentación de la API o analizando el código JavaScript de la aplicación.
A pesar de ser un usuario regular, Bob ahora puede realizar solicitudes POST a este punto final y transferir fondos entre cualquier cuenta en el sistema.
Esta vulnerabilidad de Falta de Control de Acceso a Nivel de Función existe porque la aplicación no verifica que el usuario tenga privilegios de administrador antes de permitir el acceso a la función de transferencia de administrador.
Para prevenir esta vulnerabilidad, la aplicación debería:
Al abordar estas vulnerabilidades, los desarrolladores pueden asegurar que las funciones sensibles solo sean accesibles para usuarios autorizados, manteniendo la integridad y seguridad del sistema.