Answer in brief
CVE-2026-28396 records a Medium severity (CVSS 0.0) vulnerability in NocoDB's Refresh Tokens Not Revoked on Password Reset. The current sources do not mark it as known exploited. The current feed maps nocodb (npm), nocodb (npm). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 0.0. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps nocodb (npm), nocodb (npm). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| nocodbnpm | <=0.301.2 | 0.301.3 |
| nocodbnpm | >=0 <0.301.3 | 0.301.3 |
Published upstream
Mar 2, 2026
Evidence: source:ghsa:source_dates:source-dates:recordSource modified
Nov 5, 2026
Evidence: source:ghsa:source_dates:source-dates:recordFirst seen by HOL
Nov 5, 2026
### Summary The password reset flow did not revoke existing refresh tokens, allowing an attacker with a previously stolen refresh token to continue minting valid JWTs after the victim resets their password. ### Details `passwordReset()` in `users.service.ts` updated `token_version` (invalidating JWTs) but did not call `UserRefreshToken.deleteAllUserToken()`. The `refreshToken()` method only checked token existence, not `token_version`. Both `passwordChange()` and `signOut()` correctly deleted all refresh tokens. ### Impact An attacker who previously obtained a refresh token retains access after password reset until the token expires. ### Credit This issue was reported by [@bugbunny-research](https://github.com/bugbunny-research) (bugbunny.ai).
Quoted source text, attributed separately from HOL analysis.