PII disclosure with GraphQL native user relations
Beschreibung
Die GraphQL-Schemata von Craft werden pro Benutzergruppe festgelegt, und die "Benutzer"-Abfrage auf oberster Ebene setzt diesen Bereich korrekt durch. Das native Element→User Relations – `author`, `authors`, `uploader`, `draftCreator`, `revisionCreator` – wird jedoch direkt vom Quellelement ohne Benutzergruppenumfangsfilter aufgelöst. Ein token (oder das öffentliche schema), das auf die schreibgeschützte benutzergruppe a ausgerichtet ist, kann daher den benutzernamen, die e-mail und den vollständigen namen eines content-autors oder uploaders lesen - einschließlich des site-administrators. ## Wurzelursache - `src/helpers/Gql.php` `canQueryUsers()` prüft nur, dass *einige* `usergroups.*:read` scope existiert - nicht *welche* Gruppe. - Die Benutzergruppenfilterung wird **nur ** in den Benutzerauflösungsfeldern der obersten Ebene (`src/gql/resolvers/elements/User.php`) und benutzerdefinierten Benutzerfeldern (`src/gql/fields/Users.php`) angewendet. - Die nativen User Relations werden in `src/gql/ElementQueryConditionBuilder.php` (L 292) als "special eager-load nodes" behandelt und erhalten niemals `getEagerLoadingGqlConditions()` (was nur auf benutzerdefinierte Inhaltsfelder angewendet wird, L 456). Sie lösen sich direkt aus `$source->author` in `src/gql/base/ObjectType.php` (L 72), ohne Umfangseinschränkung. Ein GraphQL-Token, das für einen engen Zweck gedacht ist - z. B. ein Headless-Frontend oder eine Partnerintegration, die Blog-Inhalte und eine Benutzergruppe lesen soll - kann die E-Mail-Adressen, Benutzernamen und vollständigen Namen jedes Inhaltsautors und Uploaders auf der gesamten Website lesen. ID des Berichts: 1543
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 5.11.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Pixel & Tonic Craft CMS.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.