mediumCWE-287

Auth de Firebase Sin Restricciones

Firebase Authentication permite registro sin verificación de email, habilitando a atacantes a crear cuentas ilimitadas y abusar de funciones que solo requieren autenticación.

Cómo Funciona

Firebase Authentication por default permite a cualquiera crear cuentas sin verificación de email. Esto significa que un atacante puede crear programáticamente miles de cuentas usando emails falsos y obtener acceso autenticado a tu app. Muchas reglas de seguridad solo verifican 'request.auth != null', lo cual estas cuentas falsas satisfacen. Sin verificación de email, el abuso de password reset y la enumeración de cuentas se vuelven más fáciles. Los atacantes también pueden registrarse con emails desechables para hacer spam, abusar tiers gratuitos o manipular features de la plataforma como votaciones o reviews.

Código Vulnerable
// No email verification required
const userCredential = await createUserWithEmailAndPassword(
  auth, email, password
);
// User immediately has full access
await setDoc(doc(db, 'users', userCredential.user.uid), {
  email, createdAt: new Date()
});
Código Seguro
const userCredential = await createUserWithEmailAndPassword(
  auth, email, password
);
await sendEmailVerification(userCredential.user);
// In security rules, check emailVerified:
// allow write: if request.auth != null
//   && request.auth.token.email_verified == true;

Ejemplo Real

Una startup de redes sociales usando Firebase vio 50,000 cuentas falsas creadas en una semana por bots. Las cuentas fueron usadas para postear spam y manipular algoritmos de trending. La app solo verificaba 'auth != null' en las reglas, así que todas las cuentas falsas tenían acceso completo de escritura.

Cómo Prevenirlo

  • Habilita verificación de email y verifica email_verified en reglas de seguridad
  • Agrega rate limiting en endpoints de creación de cuentas
  • Usa Firebase App Check para prevenir registros automatizados
  • Implementa CAPTCHA en formularios de registro

Tecnologías Afectadas

FirebaseNode.jsReactMobile

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas