highCWE-863

Reglas en Cascada Mal Configuradas

Las reglas Firebase a nivel padre sobreescriben reglas restrictivas de los hijos, otorgando involuntariamente acceso más amplio del pretendido a colecciones y documentos anidados.

Cómo Funciona

En Firebase Realtime Database, las reglas cascadean del padre a los nodos hijos. Si una ruta padre tiene '.read: true', todos los nodos hijos heredan ese acceso sin importar sus propias reglas. Los devs frecuentemente ponen reglas permisivas en un padre pensando que agregarán restricciones en los hijos, pero las restricciones de los hijos son ignoradas. En Firestore, el comportamiento es diferente: las reglas no cascadean, pero un wildcard amplio como '/{document=**}' puede sobreescribir reglas más específicas si se coloca incorrectamente.

Código Vulnerable
{
  "rules": {
    "app_data": {
      ".read": true,
      ".write": true,
      "admin_config": {
        ".read": "auth !== null && auth.token.admin === true",
        ".write": "auth !== null && auth.token.admin === true"
      }
    }
  }
}
Código Seguro
{
  "rules": {
    "app_data": {
      "public": {
        ".read": true,
        ".write": "auth !== null"
      },
      "admin_config": {
        ".read": "auth !== null && auth.token.admin === true",
        ".write": "auth !== null && auth.token.admin === true"
      }
    }
  }
}

Ejemplo Real

Una app educativa popular pretendía restringir la configuración admin solo a admins. Sin embargo, una regla '.read: true' en el nodo padre hacía que los settings de admin (incluyendo API keys de servicios de terceros) fueran legibles por cualquiera. La mala configuración pasó sin detectarse por 8 meses.

Cómo Prevenirlo

  • Nunca pongas reglas permisivas en nodos padre que contengan hijos sensibles
  • En Realtime Database, recuerda que las reglas del padre siempre sobreescriben a las de los hijos
  • Estructura los datos para separar rutas públicas y privadas a nivel superior
  • Prueba el comportamiento de cascada de reglas usando el Firebase Rules Playground

Tecnologías Afectadas

FirebaseNode.jsReactMobile

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas