A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones
Editar en Github

Que es el Broken Access Control con ejemplos y codigos de casos especificos

¿Qué es el Control de Acceso Roto?
  • Se trata de permisos, no de hackeo

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.

¿Qué es el Control de Acceso Roto?

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:

  1. Filtraciones de datos: Información sensible puede ser expuesta a partes no autorizadas.
  2. Manipulación del sistema: Los atacantes podrían modificar o eliminar datos críticos.
  3. Escalada de privilegios: Los usuarios pueden obtener permisos de nivel superior a los previstos.
  4. Incumplimiento normativo: Violaciones de leyes de protección de datos y estándares industriales.
  5. Daño reputacional: Pérdida de confianza de los usuarios y posible impacto en el negocio.
  6. Pérdidas financieras: Tanto por robo directo como por los costos indirectos de la remediación de la brecha.
  7. Interrupción del servicio: Actores maliciosos podrían interferir con las operaciones normales del sistema.

Se trata de permisos, no de hackeo

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.

¿Cómo funciona el Control de Acceso Roto?

Las vulnerabilidades de Control de Acceso Roto suelen surgir cuando:

  1. Faltan o son ineficaces las verificaciones de control de acceso.
  2. La entrada controlada por el usuario se usa en decisiones de control de acceso.
  3. La manipulación de metadatos permite eludir los controles de acceso.
  4. La aplicación no hace cumplir el control de acceso en el lado del servidor.

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.

Tipos Comunes de Control de Acceso Roto

  1. Referencias Directas Inseguras a Objetos (IDOR)
  2. Escalada de Privilegios Vertical
  3. Escalada de Privilegios Horizontal
  4. Falta de Control de Acceso a Nivel de Función

1. Referencias Directas Inseguras a Objetos (IDOR)

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.

¿Cómo funciona IDOR?

  1. La aplicación expone una referencia a un objeto de implementación interna, como un archivo, directorio, registro de base de datos o clave.
  2. El atacante manipula estas referencias para acceder a otros objetos.
  3. La aplicación no verifica la autorización del usuario para acceder al objeto solicitado.

Escenario Ejemplo

Considera un sitio de comercio electrónico donde los usuarios pueden ver los detalles de sus pedidos:

  1. Un usuario legítimo, Alice, inicia sesión y accede a su pedido en:

    https://example.com/orders?id=1234
    
  2. Alice nota el parámetro "id" en la URL y se pregunta qué sucedería si lo cambia:

    https://example.com/orders?id=1235
    
  3. Para sorpresa de Alice, ahora puede ver los detalles del pedido de Bob, incluidos su información personal e historial de compras.

  4. 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:

  1. Verificar que el pedido solicitado pertenezca al usuario autenticado.
  2. Utilizar tokens específicos de sesión en lugar de IDs predecibles.
  3. Implementar control de acceso basado en roles (RBAC) para restringir el acceso según los roles de los usuarios.

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.

2. Escalada de Privilegios Vertical

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.

¿Cómo funciona la Escalada de Privilegios Vertical?

  1. El atacante comienza con una cuenta de bajo privilegio en el sistema.
  2. Explota una vulnerabilidad o falla en el mecanismo de control de acceso de la aplicación.
  3. El atacante obtiene acceso a características o datos destinados a usuarios de mayor privilegio, como administradores.

Escenario Ejemplo

Considera un sistema de gestión de contenido (CMS) para un sitio web de noticias:

  1. Un usuario regular, Charlie, inicia sesión en su cuenta para leer artículos.

  2. Charlie nota que la URL para editar un artículo es algo así:

    https://news-cms.com/edit-article?id=5678
    
  3. Aunque Charlie no ve un botón de "Editar" en su interfaz, intenta acceder a esta URL directamente.

  4. 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:

  1. Verificar el rol y permisos del usuario antes de permitir el acceso a cualquier función privilegiada.
  2. Implementar verificaciones de control de acceso en el servidor, sin depender únicamente de ocultar elementos de la interfaz de usuario.
  3. Usar control de acceso basado en roles (RBAC) para definir y hacer cumplir claramente los privilegios de los usuarios.
  4. Registrar y monitorear los intentos de acceso para detectar posibles ataques de escalada de privilegios.

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.

3. Escalada de Privilegios Horizontal

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.

¿Cómo funciona la Escalada de Privilegios Horizontal?

  1. El atacante tiene una cuenta válida en el sistema.
  2. Explota una falla en el mecanismo de control de acceso de la aplicación.
  3. El atacante accede a datos o realiza acciones en nombre de otros usuarios con el mismo nivel de privilegio.

Diferencia con IDOR

Aunque la Escalada de Privilegios Horizontal a menudo involucra IDOR, es importante notar las distinciones:

  1. Alcance: IDOR es una vulnerabilidad específica donde se expone una referencia interna a un objeto que los usuarios pueden manipular. La Escalada de Privilegios Horizontal es un concepto más amplio que puede involucrar IDOR, pero también puede utilizar otras técnicas.
  2. Método: IDOR generalmente implica la

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.

Escenario Ejemplo

Considera una plataforma de comercio electrónico:

  1. Alice inicia sesión en su cuenta y ve su perfil en:

    https://shop.example.com/profile?token=a1b2c3d4
    
  2. Alice nota el parámetro token en la URL y se pregunta si puede ver los perfiles de otros usuarios.

  3. 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
    
  4. 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:

  1. Utilizar autenticación basada en sesión para determinar al usuario actual, en lugar de depender de parámetros que pueden ser manipulados.
  2. Implementar verificaciones de autorización adecuadas para cada acción sensible o acceso a datos.
  3. Evitar exponer identificadores internos o usar identificadores predecibles para usuarios y recursos.
  4. Aplicar el principio de privilegios mínimos, asegurando que los usuarios solo puedan acceder a lo que realmente necesitan.

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.

4. Falta de Control de Acceso a Nivel de Función

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.

¿Cómo funciona la Falta de Control de Acceso a Nivel de Función?

  1. La aplicación expone funciones o puntos finales de API sensibles.
  2. La aplicación no verifica adecuadamente la autorización del usuario para estas funciones.
  3. Un atacante descubre y explota estas funciones desprotegidas, obteniendo acceso no autorizado a operaciones privilegiadas.

Diferencia con la Escalada de Privilegios Horizontal

Aunque ambos son tipos de vulnerabilidades de control de acceso, difieren en aspectos clave:

  1. Objetivo: La Escalada de Privilegios Horizontal apunta a datos o acciones de otros usuarios en el mismo nivel de privilegio. La Falta de Control de Acceso a Nivel de Función apunta a funciones u operaciones que deberían estar restringidas a niveles de privilegio más altos.
  2. Método: La Escalada de Privilegios Horizontal a menudo implica la manipulación de identificadores o parámetros. La Falta de Control de Acceso a Nivel de Función generalmente implica el acceso directo a puntos finales o funciones desprotegidas.
  3. Impacto: La Escalada de Privilegios Horizontal resulta en acceso no autorizado a los datos de pares. La Falta de Control de Acceso a Nivel de Función puede llevar a la ejecución no autorizada de operaciones privilegiadas, lo que potencialmente afecta a todo el sistema.

Escenario Ejemplo

Considera una aplicación bancaria en línea:

  1. 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  
    }  
    
  2. Esta función está destinada solo para uso de administradores y no debería ser accesible para usuarios regulares.

  3. Sin embargo, los desarrolladores olvidaron implementar verificaciones de control de acceso en este punto final.

  4. 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.

  5. 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:

  1. Implementar verificaciones de autenticación y autorización adecuadas para todas las funciones sensibles y puntos finales de API.
  2. Usar control de acceso basado en roles (RBAC) para asegurar que solo los usuarios con los roles apropiados puedan acceder a las funciones de administrador.
  3. Aplicar el principio de privilegios mínimos, asegurando que cada rol de usuario tenga acceso solo a las funciones que realmente necesita.
  4. Evitar depender únicamente de la seguridad por oscuridad: no asumas que una función es segura solo porque no se expone en la interfaz de usuario.

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.