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.
{
"rules": {
"app_data": {
".read": true,
".write": true,
"admin_config": {
".read": "auth !== null && auth.token.admin === true",
".write": "auth !== null && auth.token.admin === true"
}
}
}
}{
"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
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.
API Key de Firebase Expuesta en Código
mediumLa configuración de Firebase (apiKey, projectId, databaseURL) está hardcodeada en bundles de JavaScript y públicamente accesible, permitiendo a atacantes interactuar con tus servicios de Firebase.