Control de acceso es la disciplina de seguridad que determina quién puede hacer qué y en qué condiciones entre sistemas, aplicaciones y datos. En ciberseguridad, el control de acceso no es sólo una lista estática de permisos, es una mecanismo de aplicación basado en políticas que media en cada solicitud de un recurso basándose en la identidad, el contexto y las reglas configuradas. Una lógica de control de acceso inadecuada o incorrecta es una de las principales causas de las principales brechas y de la exposición no autorizada de datos. owasp.org
Este artículo deconstruye el control de acceso tanto desde el punto de vista de la ingeniería como del de los atacantes, anclado en normas de seguridad autorizadas, casos reales de CVE y estrategias defensivas prácticas.
Qué significa realmente el control de acceso
En seguridad, el control de acceso (también conocido como autorización) se refiere a la mediación del acceso a los recursos basándose en la identidad y la política. Determina si a un sujeto (usuario, proceso o sistema) se le debe conceder acceso a un objeto (como un archivo, un punto final de API, un registro de base de datos o una función empresarial). A diferencia de autenticación-que verifica la identidad-el control de acceso verifica permisos e intención. owasp.org
En esencia, el control de acceso impone la "principio del menor privilegio": cada sujeto debe tener sólo el acceso necesario para realizar su función, nada más. owasp.org
Un control de acceso inadecuado puede llevar a una escalada de privilegios, a la divulgación no autorizada de información sensible y a comprometer por completo la integridad del sistema.

Panorama de las amenazas: cómo se rompe el control de acceso en la naturaleza
Los modelos modernos de amenazas a las aplicaciones sitúan sistemáticamente el control de acceso a la cabeza de las listas de riesgos. En los marcos de riesgo actuales de OWASP (incluidos Top 10 y Proactive Controls), control de acceso roto sigue siendo una categoría de vulnerabilidad persistente y crítica. owasp.org
Los vectores de amenaza de control de acceso más comunes incluyen:
- Referencias directas inseguras a objetos (IDOR) - los usuarios pueden acceder a registros que no deberían manipulando los identificadores. owasp.org
- Eludir los controles de autorización mediante la manipulación de URL - los atacantes modifican los parámetros para obtener acceso no autorizado. owasp.org
- Lógica de permisos por defecto inadecuada - los sistemas no deniegan solicitudes no especificadas. top10proactive.owasp.org
- Elevación de privilegios - los atacantes obtienen funciones o acciones superiores a las previstas. owasp.org
- Manipulación del JWT o de la sesión - modificar los tokens para obtener privilegios no autorizados. owasp.org
Estas amenazas surgen con frecuencia en API web, SPA, microservicios y entornos en la nube.

Comparación de los principales modelos de control de acceso
Los distintos modelos ofrecen diferentes equilibrios de simplicidad, expresividad y seguridad:
| Modelo | Concepto básico | Mejor ajuste | Debilidad |
|---|---|---|---|
| DAC (Control de acceso discrecional) | Los propietarios definen el acceso | Aplicaciones sencillas | Riesgo de acumulación de privilegios |
| MAC (control de acceso obligatorio) | Aplicación centralizada de las políticas | Alta seguridad | Rígido |
| RBAC (Control de acceso basado en funciones) | Derechos por funciones | Sistemas de empresa | Explosión del papel |
| ABAC (Control de acceso basado en atributos) | Atributos precisos | Nube/Confianza cero | Complejo |
| PBAC (Control de acceso basado en políticas) | Políticas declarativas | Microservicios modernos | Requiere utillaje |
En sistemas grandes, distribuidos y con varios inquilinos, ABAC y PBAC suelen ser más expresivos y seguros que un simple RBAC, especialmente cuando el contexto y el entorno son importantes.
Ejemplo real de CVE: Control de acceso defectuoso en una API importante
Una vulnerabilidad de control de acceso impactante (basada en patrones descritos en marcos OWASP) existía en una API empresarial popular en la que ciertos puntos finales carecían de comprobaciones de autorización consistentes. Esto permitía a los atacantes enumerar y acceder a los datos de otros usuarios modificando los parámetros de solicitud sin la aplicación adecuada.
Aunque el identificador específico varía, estos defectos suelen corresponder a CWE-862: Falta Autorización y CWE-863: Autorización incorrectacatalogadas en el ASVS como debilidades clave del control de acceso. top10proactive.owasp.org
Esto demuestra que incluso las API ampliamente adoptadas pueden fracasar a la hora de aplicar las políticas de manera uniforme, especialmente cuando la lógica de autorización se implementa ad hoc en los distintos servicios.
Diseñar un control de acceso que funcione
Un control de acceso robusto requiere una estrategia a varios niveles:
- Centralizar la lógica de autorización
Cada solicitud de acceso debe pasar por un punto centralizado de aplicación de políticas para evitar comprobaciones incoherentes. Evite dispersar las comprobaciones de autorización entre varios módulos o condicionales ad hoc. top10proactive.owasp.o
Ejemplo (middleware Node.js/Express):
javascript
function enforcePolicy(req, res, next) {const { usuario, recurso } = req;if (!policy.canAccess(user, resource)) {return res.status(403).json({ error: "Forbidden" }); }next(); } app.use(enforcePolicy);
Aplicar denegación por defecto
Un sistema seguro debe denegar el acceso a menos que se permita explícitamente. Las políticas faltantes o malformadas no deben conceder acceso por defecto. top10proactive.owasp.org
Utilizar el mínimo privilegio y un ámbito temporal limitado
Conceda sólo los permisos mínimos necesarios durante el menor tiempo posible. Para las operaciones privilegiadas, aplique Justo a tiempo (JIT) y Acceso justo y suficiente (JEA) mecanismos. top10proactive.owasp.org
Registro y supervisión
El registro de las decisiones de control de acceso permite detectar actividades anómalas o malintencionadas. Un diseño cuidadoso de los registros ayuda en el análisis posterior a incidentes y en el cumplimiento continuo. cheatsheetseries.owasp.org
Control de acceso en API y microservicios
En las arquitecturas distribuidas modernas, aplicar el control de acceso es más complejo:
- Cada API debe verificar el acceso de forma independiente, incluso si los componentes anteriores ya lo han comprobado.
- Los servicios de Gestión de Identidades y Accesos (IAM) deben alinearse con la lógica de la aplicación.
- Los microservicios deben compartir un modelo de confianza coherente para evitar políticas contradictorias.
Un fallo en cualquiera de estas capas suele provocar escalada de privilegios horizontal o vertical.
Tabla: Patrones típicos de fallos en el control de acceso
| Tipo de fallo | Manifestación | Impacto |
|---|---|---|
| IDOR | El usuario altera el identificador del recurso en la URL | Fuga de datos |
| No se aplica ninguna denegación | Faltan comprobaciones para puntos finales "sólo para administradores | Escalada de privilegios |
| Fuga de funciones | Funciones excesivamente amplias concedidas a los usuarios | Acceso no autorizado |
| Mala configuración de CORS | API accesibles desde orígenes no fiables | Exfiltración de datos |
Cada uno de estos patrones corresponde a comportamientos de riesgo documentados en normas de seguridad publicadas. owasp.org
Ejemplos de código ilustrativo: Ataque frente a defensa
Falta el control de acceso (IDOR)
Vulnerable:
javascript
app.get("/pedidos/:id", (req, res) => { res.json(db.pedidos[req.params.id]); });
Defensa:
javascript
if (order.owner !== req.user.id) {return res.status(403).send("Prohibido"); }
Riesgo de manipulación de JWT
Peligroso:
javascript
const token = jwt.sign({ role: "admin" }, secret);
Más seguro:
javascript
const payload = { role: user.role };const token = jwt.sign(payload, secret, { expiresIn: '15m' });
Asegúrese de que las solicitudes de token se validan en el servidor y no se confía en ellas a ciegas.
Comprobación de la política ABAC
python
def comprobar_acceso(usuario, recurso, acción, contexto):
return (usuario.departamento == recurso.departamento
y context.time < resource.expiry)
Los motores políticos permiten tomar decisiones contextuales más ricas.
Penligent: Descubrimiento de riesgos de control de acceso basado en IA
En grandes bases de código y entornos dinámicos, los errores de control de acceso a menudo se ocultan en lo más profundo de la lógica empresarial o en las integraciones de servicios. Los escáneres tradicionales tienen dificultades con ellos porque carecen de contexto semántico.
Plataforma de pentesting de Penligent basada en IA llena este vacío:
- Identificación automática de comprobaciones de control de acceso incoherentes o ausentes en las API
- Simulación de rutas de ataque que eluden controles menos estrictos
- Correlacionar los patrones de acceso con la lógica empresarial para poner de relieve la exposición peligrosa
- Elaboración de informes procesables con arreglo a las normas de seguridad (OWASP Top 10, ASVS)
Para los equipos de ingeniería, esto significa una detección más temprana de rutas de autorización maliciosas y ciclos de corrección más cortos.
Prácticas recomendadas para las pruebas de control de acceso
- Incluya comprobaciones de control de acceso en las pruebas unitarias y de integración. cheatsheetseries.owasp.org
- Trate la lógica de la política como el código: versión, prueba, auditoría.
- Aprovechar marcos y bibliotecas estandarizados en lugar de comprobaciones ad hoc.
- Aplicar políticas en ambos nivel de operación y nivel de datos como recomiendan los marcos ASVS. cheatsheetseries.owasp.org
Conclusión: El control de acceso refuerza la confianza, no sólo los permisos
En 2025 y más allá, el control de acceso es fundamental para la fiabilidad del sistema. En él se entrecruzan la identidad, la política, el contexto y la aplicación, y las malas implementaciones siguen siendo explotadas en incidentes reales. Al basar su lógica de autorización en principios de seguridad documentados y combinarlos con pruebas automatizadas habilitadas por IA, puede evitar muchas clases de compromiso antes de que lleguen a la producción.

