GHSA-gv85-m34f-27g4: Coop has a data leak via unauthenticated GraphQL Query.allOrgs
Coop is an open source review and moderation tool from ROOST. Prior to 1.0.0, an unauthenticated actor can query Query.allOrgs through /api/v1/graphql on a publicly accessible deployment and obtain data for all organizations, including organization IDs, names, email addresses, website URLs and on-call alert email addresses. The usersWhoCanReviewEveryQueue field also exposes reviewing users' IDs, email addresses, first and last names, roles, permissions and creation dates. Running the service on an authenticated private network prevents outside actors from directly querying the GraphQL API. This issue is fixed in version 1.0.0.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Coopto a version that resolves this vulnerability.Fixed in 1.0.0 - Compensating control
Run the service on an authenticated private network to prevent outside actors from directly querying the GraphQL API.
Event History
Frequently Asked Questions
Which deployments are exposed to unauthenticated data access?
Coop deployments prior to 1.0.0 are exposed when their GraphQL endpoint at /api/v1/graphql is publicly accessible. Deployments running only on an authenticated private network prevent outside actors from directly querying the API.
What can an unauthenticated attacker retrieve?
An attacker can query Query.allOrgs to obtain organization IDs, names, email addresses, website URLs, and on-call alert email addresses. The usersWhoCanReviewEveryQueue field can also reveal reviewer IDs, email addresses, names, roles, permissions, and account creation dates.
What should teams do if they cannot immediately upgrade?
Restrict access to /api/v1/graphql by placing the service on an authenticated private network so outside actors cannot directly query the GraphQL API. Upgrade to version 1.0.0 when possible.