Escalacion de Privilegios
Endpoints de actualizacion de perfil que aceptan campos de rol o permisos del body del request permiten a los usuarios promoverse a admin agregando role: 'admin' a su request de actualizacion.
Cómo Funciona
La escalacion de privilegios ocurre cuando una aplicacion permite a los usuarios modificar su propio rol o permisos a traves de endpoints de actualizacion de perfil. Si el servidor pasa ciegamente el body del request a una actualizacion de base de datos, un atacante puede agregar campos extra como role: 'admin' o isAdmin: true a su request de actualizacion de perfil. El servidor actualiza todos los campos proporcionados, incluyendo el rol, efectivamente promoviendo al atacante a administrador. Esta es una forma de asignacion masiva que apunta especificamente a campos de autorizacion. Incluso si el formulario del frontend no incluye un campo de rol, el atacante puede agregarlo directamente al request de API usando curl o las herramientas de desarrollador del navegador.
app.patch('/api/profile', auth, async (req, res) => {
const updated = await db.user.update({
where: { id: req.userId },
data: req.body // Attacker sends { name: 'Hacker', role: 'admin' }
});
res.json(updated);
});app.patch('/api/profile', auth, async (req, res) => {
const { name, email, avatar } = req.body;
const updated = await db.user.update({
where: { id: req.userId },
data: { name, email, avatar } // Only allowed fields
});
res.json(updated);
});Ejemplo Real
En 2022, una vulnerabilidad de escalacion de privilegios en GitLab (CVE-2022-1162) permitia a cualquier usuario autenticado establecer un password hardcodeado en cuentas provisionadas a traves de un proveedor OmniAuth. Esto efectivamente daba a los atacantes acceso a cualquier cuenta creada a traves de SSO, incluyendo cuentas de admin.
Cómo Prevenirlo
- Desestructura explicitamente y permite solo campos autorizados del body del request
- Nunca pases req.body directamente a operaciones de actualizacion de base de datos
- Usa schemas Zod que solo incluyan campos editables por el usuario para actualizaciones de perfil
- Implementa endpoints separados solo para admin para cambios de rol con verificaciones de autorizacion adicionales
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Condicion de Carrera en Pagos
highOperaciones de lectura-modificacion-escritura en pagos sin transacciones de base de datos permiten a los atacantes explotar ventanas de tiempo y gastar el mismo saldo multiples veces.
Manipulacion de Precios
criticalAceptar precios del cliente en vez de buscarlos del lado del servidor permite a los atacantes modificar requests de checkout y comprar productos al precio que elijan.
Feature Flags Expuestos
lowFeature flags incluidos en el bundle de JavaScript del frontend revelan funciones no lanzadas, configuraciones internas de testing y superficies de ataque potenciales a cualquiera que inspeccione el codigo.
Rutas de Debug en Produccion
mediumRutas de desarrollo y testing como /debug, /test, /seed o /api/dev dejadas activas en produccion exponen datos internos, bypassean autenticacion o permiten manipulacion de estado.