highCWE-862

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.

Código Vulnerable
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 });
});
Código Seguro
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

FirebaseNode.jsReactMobile

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas