GitHub Advisoryadvisory · npm

GHSA-8m7c-hf24-5g47 NocoDB: OAuth Authorization Code Race Condition

MEDIUM Published 2026-06-05 Modified 2026-07-20 Official page ↗
Aliases
CVE-2026-47386
Ecosystem
npm
Packages
nocodb
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Weaknesses
CWE-362
Reviewed
2026-06-05

Affected packages

• npm nocodb: < 2026.05.1 → fixed in 2026.05.1

Description

Summary Two concurrent token-exchange requests using the same OAuth authorization code could each mint a distinct valid `(access_token, refresh_token)` pair, breaking the single-use guarantee that PKCE relies on. Details The token-exchange flow read `is_used` and called `markAsUsed` as an unconditional update at the end of the path. A new `OAuthAuthorizationCode.claimByCode` method now performs an atomic compare-and-swap (`WHERE code = ? AND is_used = false`) and is called immediately before `OAuthToken.insert`, after redirect-URI, PKCE, and client authentication have all succeeded. Only the first concurrent caller's `UPDATE` wins; the rest see `invalid_grant: Authorization code has already been used`. Impact An attacker who has observed an authorization code and the corresponding PKCE verifier (for example through a malicious OAuth-aware client or by racing a real exchange) could obtain a long-lived refresh token in addition to the legitimate one. Credit This issue was reported by @eddieran.

Related

Alias · CVE (1)

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

Weakness · CWE (1)

  • CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization weakness

References