Control de Acceso Roto
Los usuarios pueden actuar fuera de sus permisos, accediendo a datos de otros usuarios o funcionalidad admin sin verificaciones de autorización.
Cómo Funciona
El control de acceso roto ocurre cuando una aplicación no verifica las restricciones sobre lo que un usuario autenticado puede hacer. Un atacante puede modificar la URL, request de API o estado interno para acceder a recursos no autorizados. Por ejemplo, cambiar /api/users/123 a /api/users/456 para ver el perfil de otro usuario. Esto se conoce como IDOR (Insecure Direct Object Reference). El servidor confía en el ID que envía el usuario sin verificar propiedad.
app.get('/api/users/:id', async (req, res) => {
const user = await db.users.findById(req.params.id);
res.json(user);
});app.get('/api/users/:id', async (req, res) => {
const user = await db.users.findById(req.params.id);
if (!user || user.id !== req.auth.userId) {
return res.status(403).json({ error: 'Forbidden' });
}
res.json(user);
});Ejemplo Real
En 2019, First American Financial expuso 885 millones de registros por una vulnerabilidad IDOR. Cambiar un solo número en la URL permitía acceder a documentos hipotecarios, números de seguro social y datos bancarios de cualquier cliente.
Cómo Prevenirlo
- Siempre verifica la propiedad del recurso en el servidor
- Usa IDs de sesión en vez de IDs proporcionados por el cliente
- Implementa control de acceso basado en roles (RBAC)
- Deniega acceso por default — requiere grants explícitos
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Fallos Criptográficos
highDatos sensibles expuestos por encriptación débil o faltante — usar algoritmos obsoletos como MD5/SHA1, guardar passwords en texto plano o transmitir datos sin TLS.
Fallos en Cadena de Suministro
mediumTu aplicación hereda vulnerabilidades de dependencias de terceros — paquetes desactualizados con CVEs conocidos que los atacantes explotan activamente.
Configuración de Seguridad Incorrecta
mediumConfiguraciones por default, CORS abierto, modo debug en producción o mensajes de error detallados exponen tu aplicación a atacantes.
Inyección (SQL, NoSQL, Comandos)
criticalEl atacante inserta código malicioso en queries o comandos explotando input de usuario sin sanitizar — inyección SQL, NoSQL y de comandos del sistema.