criticalCWE-862

Realtime Database Sin Autenticación

Las 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.

Cómo Funciona

Firebase Realtime Database usa reglas de seguridad basadas en JSON. Configurar '.read: true' y '.write: true' en la raíz otorga acceso completo a todos los datos. A diferencia de Firestore, las reglas de Realtime Database cascadean hacia abajo — una regla permisiva en la raíz abre cada nodo hijo. Los atacantes pueden simplemente usar la API REST (https://your-project.firebaseio.com/.json) para descargar toda la base de datos como un solo archivo JSON, sin necesitar ningún SDK ni autenticación.

Código Vulnerable
{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Código Seguro
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    },
    "public_posts": {
      ".read": true,
      ".write": "auth !== null"
    }
  }
}

Ejemplo Real

Investigadores han encontrado que agregar /.json a una URL de Firebase Realtime Database exporta toda la base de datos. En 2019, un estudio encontró 12,000+ bases de datos Firebase públicamente accesibles, filtrando emails, passwords, números de teléfono y mensajes de chat de apps móviles populares.

Cómo Prevenirlo

  • Nunca uses '.read: true' o '.write: true' a nivel raíz
  • Limita las reglas a rutas específicas con validación de auth.uid
  • Usa el Firebase Rules Playground para probar patrones de acceso
  • Monitorea alertas de seguridad de Firebase en la Google Cloud Console

Tecnologías Afectadas

FirebaseNode.jsReactMobile

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas