In Elide before 4.5.14, it is possible for an adversary to "guess and check" the value of a model field they do not have access to assuming…
GitHub_M·CWE-285·Published 2020-03-30
In Elide before 4.5.14, it is possible for an adversary to "guess and check" the value of a model field they do not have access to assuming they can read at least one other field in the model. The adversary can construct filter expressions for an inaccessible field to filter a collection. The presence or absence of models in the returned collection can be used to reconstruct the value of the inaccessible field. Resolved in Elide 4.5.14 and greater.
In Elide before 4.5.14, it is possible for an adversary to "guess and check" the value of a model field they do not have access to assuming they can read at least one other field in the model. The adversary can construct filter expressions for an inaccessible field to filter a collection. The presence or absence of models in the returned collection can be used to reconstruct the value of the inaccessible field. Resolved in Elide 4.5.14 and greater.
### Impact It is possible for an adversary to "guess and check" the value of a model field they do not have access to assuming they can read at least one other field in the model. The adversary can construct filter expressions for an inaccessible field to filter a collection. The presence or absence of models in the returned collection can be used to reconstruct the value of the inaccessible field. For example, a User model has two fields: _name_ and _role_. The adversary has read permissions to see the _name_ field of the User collection but not the _role_. By constructing a filter like the one below, the adversary can determine which users have admin role by presence or absence in the returned collection: `filter=role=="Admin"` ### Patches Resolved in Elide 4.5.14 and greater. ### Workarounds The adversary can only access the fields if a model includes fields with different read permission levels (some less secure and some more secure). Model security can be adjusted by restricting read permissions on existing models. ### References Fixed in https://github.com/yahoo/elide/pull/1236 ### For more information If you have any questions or comments about this advisory: * Open an issue in [elide](https://github.com/yahoo/elide) * Contact us at [spectrum](https://spectrum.chat/elide?tab=posts)
### Impact It is possible for an adversary to "guess and check" the value of a model field they do not have access to assuming they can read at least one other field in the model. The adversary can construct filter expressions for an inaccessible field to filter a collection. The presence or absence of models in the returned collection can be used to reconstruct the value of the inaccessible field. For example, a User model has two fields: _name_ and _role_. The adversary has read permissions to see the _name_ field of the User collection but not the _role_. By constructing a filter like the one below, the adversary can determine which users have admin role by presence or absence in the returned collection: `filter=role=="Admin"` ### Patches Resolved in Elide 4.5.14 and greater. ### Workarounds The adversary can only access the fields if a model includes fields with different read permission levels (some less secure and some more secure). Model security can be adjusted by restricting read permissions on existing models. ### References Fixed in https://github.com/yahoo/elide/pull/1236 ### For more information If you have any questions or comments about this advisory: * Open an issue in [elide](https://github.com/yahoo/elide) * Contact us at [spectrum](https://spectrum.chat/elide?tab=posts)
En Elide versiones anteriores a 4.5.14, es posible que un adversario "guess and check" el valor de un campo modelo al que no tiene acceso, asumiendo que pueda leer al menos otro campo en el modelo. El adversario puede construir expresiones de filtro para un campo inaccesible para filtrar una colección. La presencia o ausencia de modelos en la colección devuelta puede ser usada para reconstruir el valor del campo inaccesible. Solucionado en Elide versiones 4.5.14 y superiores.
| Version | Type | Source | Base | Exp | Impact | Vector |
|---|---|---|---|---|---|---|
| 2.0 | Primary | NVD | 4.0 | 8.0 | 2.9 | AV:N/AC:L/Au:S/C:P/I:N/A:N |
| 3.1 | Primary | cve.org | 6.8 | — | — | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:N |
| 3.1 | Primary | NVD | 6.5 | 2.8 | 3.6 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
| 3.1 | Secondary | NVD | 6.8 | 2.3 | 4.0 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:N |
| 3.1 | Secondary | GHSA | 6.8 | — | — | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:N |