{"id":"CVE-2026-46552","aliases":["GHSA-chqv-vrj7-qffp"],"url":"https://o3.security/vulnerability/CVE-2026-46552","summary":"NocoDB: Shared-base link access can invite arbitrary users as persistent base members","details":"### Summary\n\nShared-base sessions were granted the same base-member capabilities as authenticated viewers. Using only the shared-base UUID (`xc-shared-base-id`), an attacker could enumerate base members and invite an arbitrary email into the base as a real member. The invited user could then redeem the invite via the normal signup flow and retain authenticated access even after the owner revoked the shared link.\n\n### Details\n\nShared-base sessions were mapped to `ProjectRoles.VIEWER` in `packages/nocodb/src/strategies/base-view.strategy/base-view.strategy.ts`, and `packages/nocodb/src/utils/acl.ts` granted `baseUserList` and `userInvite` to that role. The shared frontend (`packages/nc-gui/composables/useApi/interceptors.ts`) deliberately removed auth headers in favour of the shared-base header, but the ACL middleware did not distinguish shared sessions from genuine viewers.\n\nThe end-to-end chain:\n\n- `GET /api/v2/meta/bases/:baseId/users` returned the member list to shared-base callers (`@Acl('baseUserList')`).\n- `POST /api/v2/meta/bases/:baseId/users` accepted an invite from shared-base callers (`@Acl('userInvite')`); `base-users.service.ts` inserted a real `nc_users_v2` row with `invite_token` and a `nc_base_users_v2` row for the target base, with `invited_by = null`.\n- The invited account redeemed the invite through the normal signup path (`users.service.ts`), gaining a persistent JWT scoped to the base.\n- Revoking the shared link did not affect the redeemed account.\n\n### Impact\n\n- Confidentiality: shared-base link exposes member email addresses.\n- Integrity: shared-base link can mutate base ACL state by creating new members.\n- Persistence: link-based access converts into durable authenticated access that survives revocation of the share.\n\n### Credit\n\nThis issue was reported by [@0xmrma](https://github.com/0xmrma).","published":"2026-06-23T20:38:29.333Z","modified":"2026-08-12T03:51:25.250010693Z","cvss":{"score":5.8,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N"},"epss":{"score":0.00313,"percentile":0.23431,"asOf":"2026-08-24"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"nocodb","fixedVersion":null}],"fix":null,"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/46xxx/CVE-2026-46552.json"},{"type":"ADVISORY","url":"https://github.com/nocodb/nocodb/security/advisories/GHSA-chqv-vrj7-qffp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-46552"},{"type":"PACKAGE","url":"https://github.com/nocodb/nocodb"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:25.250010693Z"}}