Cloud Functions Sin Validación
Las Cloud Functions de Firebase expuestas como endpoints HTTP aceptan y procesan requests sin verificar tokens de autenticación ni validar datos de entrada.
Cómo Funciona
Las Cloud Functions de Firebase pueden ser desplegadas como endpoints HTTP accesibles desde internet. A diferencia de las funciones callable que automáticamente verifican tokens de Firebase Auth, las funciones HTTP reciben requests crudos sin autenticación integrada. Si la función no verifica manualmente el header Authorization o el token de Firebase ID, cualquiera puede invocarla. Esto es especialmente peligroso para funciones que modifican datos, envían emails, procesan pagos o acceden a recursos admin. La URL de la función frecuentemente es descubrible desde código del cliente.
exports.deleteUser = functions.https.onRequest(async (req, res) => {
const { userId } = req.body;
await admin.auth().deleteUser(userId);
await admin.firestore().collection('users').doc(userId).delete();
res.json({ success: true });
});exports.deleteUser = functions.https.onCall(async (data, context) => {
if (!context.auth) {
throw new functions.https.HttpsError('unauthenticated', 'Must be signed in');
}
if (context.auth.uid !== data.userId) {
throw new functions.https.HttpsError('permission-denied', 'Cannot delete other users');
}
await admin.auth().deleteUser(context.auth.uid);
await admin.firestore().collection('users').doc(context.auth.uid).delete();
return { success: true };
});Ejemplo Real
En 2023, una app de e-commerce tenía una Cloud Function HTTP para aplicar códigos de descuento que no tenía autenticación. Los atacantes descubrieron la URL del endpoint y aplicaron descuentos ilimitados a pedidos, causando pérdidas financieras significativas antes de que la función fuera asegurada.
Cómo Prevenirlo
- Usa onCall en vez de onRequest para funciones llamadas desde tu app
- Para funciones HTTP, siempre verifica el Firebase ID token del header Authorization
- Valida y sanitiza todos los datos de entrada con un validador de schemas
- Aplica rate limiting usando Firebase App Check o un middleware
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Reglas Firestore con Read/Write True
criticalLas reglas de seguridad de Firestore configuradas como 'allow read, write: if true' dan a cualquier usuario — autenticado o no — acceso completo para leer, crear, modificar y eliminar todos los documentos.
Realtime Database Sin Autenticación
criticalLas reglas de Firebase Realtime Database con '.read: true' y '.write: true' a nivel raíz permiten a cualquiera en internet leer y modificar todos los datos.
Reglas de Storage de Firebase Permisivas
highLas reglas de Firebase Cloud Storage permiten a cualquier usuario leer, escribir o eliminar archivos sin autenticación, exponiendo contenido subido y habilitando manipulación de archivos.
Reglas en Cascada Mal Configuradas
highLas reglas Firebase a nivel padre sobreescriben reglas restrictivas de los hijos, otorgando involuntariamente acceso más amplio del pretendido a colecciones y documentos anidados.