CVE-2026-46552 — nocodb
MEDIUMCVE-2026-46552 is a medium-severity (CVSS 5.8) CWE-285 vulnerability in nocodb. No vendor fix is recorded yet; mitigation options are listed below.
NocoDB: Shared-base link access can invite arbitrary users as persistent base members
Exploitation Status
No confirmed exploitation observed yet
- CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2026-46552.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2026-46552 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 382,205 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.
nocodbnpmDescription
Summary
Shared-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.
Details
Shared-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.
The end-to-end chain:
GET /api/v2/meta/bases/:baseId/usersreturned the member list to shared-base callers (@Acl('baseUserList')).POST /api/v2/meta/bases/:baseId/usersaccepted an invite from shared-base callers (@Acl('userInvite'));base-users.service.tsinserted a realnc_users_v2row withinvite_tokenand anc_base_users_v2row for the target base, withinvited_by = null.- The invited account redeemed the invite through the normal signup path (
users.service.ts), gaining a persistent JWT scoped to the base. - Revoking the shared link did not affect the redeemed account.
Impact
- Confidentiality: shared-base link exposes member email addresses.
- Integrity: shared-base link can mutate base ACL state by creating new members.
- Persistence: link-based access converts into durable authenticated access that survives revocation of the share.
Credit
This issue was reported by @0xmrma.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | nocodb | all versions | No fix |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for nocodb, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Remediation status
No patched version of nocodb has shipped for CVE-2026-46552 yet. Where your build allows, override or pin the dependency away from the vulnerable range, and apply any maintainer-recommended mitigation.
Mitigate without a patch
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is CVE-2026-46552 in your dependencies?
Find it across npm, including transitive dependencies.