ApostropheCMS: The general public can access @apostrophecms/user objects via a relationship (viewRole is not applied to the general public)
What fixes it
- 4.33.0apostrophe, npmGitHub
npm install apostrophe@4.33.0
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Impact
Even though it is correctly applied to guests, contributors, etc., viewRole is not applied to the general public. This means that a secured content type like @apostrophecms/user can in theory be accessed.
This is greatly mitigated by the fact that there is no automatic public REST API for any content type. One has to expressly allow it. However, it does mean that developers can make the mistake of setting up a relationship between a content type like a blog post, and @apostrophecms/user. This could potentially expose some sensitive information if templates were written poorly, e.g. if they JSON-serialized the entire object. Note that password hashes are NOT affected because they reside in a separate collection.
The public demo project and its various flavors must be updated first because it inadvertently relies on the bug.
Patches
4.33.0
Workarounds
Never create relationships with @apostrophecms/user that are intended for non-admin display. If you need a relationship that expresses authorship, create a separate author piece type to publicly represent that.
Text from GitHub Advisory Database
Affected versions 3
- apostrophe, npm< 4.33.0GitHub
- apostropheaffected: < 4.33.0CVE List
- apostrophe, npmfrom first release, fixed in 4.33.0OSV
References 5
- github.com/apostrophecms/apostrophe/commit/9500b8b0e1d630d5e07fbb5fd2c25ed0943845ceFixvia CVE List
- github.com/apostrophecms/apostrophe/commit/f84fd41cbf6c22eb8d0008fc9c25df1f7130b350Fixvia CVE List
- github.com/apostrophecms/apostrophe/releases/tag/apostrophe@4.33.0Fixvia CVE List
- github.com/apostrophecms/apostrophe/security/advisories/GHSA-xf6w-q65w-4f2wAdvisoryvia CVE List
- github.com/advisories/GHSA-xf6w-q65w-4f2wAdvisoryvia GitHub