Skip to content

GHSA-r989-7g3j-wjhw CVE-2026-53928

NocoDB: Refresh Tokens Persist Through Password Recovery

Medium npm
Severity
0.0 / 10
Medium · CVSS 4.0
Exploit chance (EPSS)
0.36%
Chance of exploitation in the next 30 days. Higher than 29.35% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-613 Insufficient Session Expiration
Fix
None yet
No fixed version published

Description

Summary

A stolen refresh token survived a password-forgot flow and could be used to mint fresh JWTs even after the user reset their password.

Details

passwordChange and passwordReset deleted the user's refresh tokens, but passwordForgot only rotated token_version and revoked OAuth tokens — it did not call UserRefreshToken.deleteAllUserToken(user.id). An attacker holding a captured refresh cookie could still exchange it for a new access token after the victim triggered the recovery flow.

Impact

Persistent unauthorized access after password recovery. Once a refresh token leaks, the documented "Forgot password" recovery flow did not in fact revoke the attacker's session.

Credit

This issue was reported by @bugbunny-research.

Affected versions

npm

PackageVulnerableFixed in
nocodb
<= 0.301.3
No fix yet

How to fix

No fixed version has been published yet. Until one is, remove or replace the package, or turn off or isolate the affected feature. This page updates when a fix ships.

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Attack vector
Network
Attack complexity
High
Attack requirements
None
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
Low
Integrity (vulnerable system)
Low
Availability (vulnerable system)
Low
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None

Weakness

CWE-613: Insufficient Session Expiration

According to WASC, "Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization."

How to prevent it
  • Implementation: Set sessions/credentials expiration date.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-hmcr-rmjq-47qr
NocoDB: Server-Side Request Forgery via Spreadsheet Import Endpoint
Medium Also affects nocodb
GHSA-h6vv-pcq8-7xm4
NocoDB: Server-Side Request Forgery via Base Migration URL
Medium Also affects nocodb
GHSA-6mhr-74x2-98v9
NocoDB: Stored Cross-Site Scripting via Secure Attachment
Medium Also affects nocodb
GHSA-gprh-27j3-g5h4
NocoDB: Server-Side Request Forgery via Spreadsheet Fetch URL
Medium Also affects nocodb
GHSA-g72g-r7m4-9x4g
NocoDB: OAuth Tokens Persist Through Security Events
Medium Also affects nocodb
GHSA-xxpj-q764-9r6q
NocoDB: Missing Ownership Check in MCP Attachment Read
Low Also affects nocodb
GHSA-hj85-ph9q-78jg
NocoDB: Stored Cross-Site Scripting via Form View Redirect URL
High Also affects nocodb
GHSA-8m7c-hf24-5g47
NocoDB: OAuth Authorization Code Race Condition
Medium Also affects nocodb
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor