GitHub Advisoryadvisory · npm

GHSA-m5qg-rvjq-727p NocoDB: OAuth Token Scope Not Enforced at ACL Layer Allows Scope Escalation

LOW Published 2026-05-21 Modified 2026-07-20 Official page ↗
Aliases
CVE-2026-46549
Ecosystem
npm
Packages
nocodb
Severity
Low
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:L/I:N/A:N
Weaknesses
CWE-863
Reviewed
2026-05-21

Affected packages

• npm nocodb: <= 0.301.3 (no fix yet)

Description

Summary The OAuth token strategy attached `oauth_scope` and `oauth_granted_resources` to the request user, but the ACL middleware never consulted either. An OAuth token issued with a restricted scope (e.g. MCP-only) therefore inherited the full permissions of the underlying user across all routes; the `granted_resources.base_id` restriction was bypassed on org-level endpoints that don't populate `req.context.base_id`. Details In `packages/nocodb/src/strategies/oauth-token.strategy.ts`, the strategy set `is_oauth_token`, `oauth_client_id`, `oauth_granted_resources`, and `oauth_scope` on the user object, then mapped through to the user's existing `roles` / `base_roles`. The ACL middleware in `extract-ids.middleware.ts` honoured `is_api_token` via `blockApiTokenAccess` but had no equivalent gate for `is_oauth_token` or scope-string enforcement. The base/workspace restriction logic short-circuited when `req.context.base_id` was unset (org-level routes), so an OAuth token scoped to one base could still call org-level endpoints as the underlying user. The fix adds a path-prefix allowlist (`['/mcp', '/api/v3/', '/auth/user/me']`) enforced inside the strategy and a `blockOAuthTokenAccess` ACL flag for endpoints that should never accept OAuth tokens. Impact • Scope escalation: tokens issued with a narrow scope received the underlying user's full role. • Resource boundary bypass: per-base restrictions did not apply to org-level routes. • Violates least-privilege expectation for third-party OAuth integrations. Credit This issue was reported by @ik0z.

Related

Alias · CVE (1)

  • CVE-2026-46549 NocoDB is software for building databases as spreadsheets. vulnerability

Weakness · CWE (1)

  • CWE-863 Incorrect Authorization weakness

References