GHSA-2299-ghjr-6vjp · Severity: low · Ecosystem: npm — Parse Server: MFA recovery code single-use bypass via concurrent requests
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.60 and 9.6.0-alpha.54, an attacker who obtains a user's password and a single MFA recovery code can reuse that recovery code an unlimited number of times by sending concurrent login requests. This defeats the single-use design of recovery codes. The attack requires the user's password, a valid recovery code, and the ability to send concurrent requests within milliseconds. This issue has been patched in versions 8.6.60 and 9.6.0-alpha.54.
Conclusion & alert: CVE-2026-33624 is rated Low Risk (12.3/100): CVSS Low severity, with low exploitation likelihood (EPSS 0.04%). Mandatory action: Low composite risk—no urgent action required; patch on your normal maintenance cycle and revisit priority if CVSS or EPSS increases.
Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.
EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).
| # | Date | Old EPSS score | New EPSS score | Delta (New - Old) |
|---|---|---|---|---|
| 1 | 2026-03-25 | — | 0.04% | — |
Full EPSS history (1 record total)
CVSS metrics for this CVE.
| Base score | Version | Severity | Vector | Exploitability | Impact | Score source |
|---|---|---|---|---|---|---|
| 2.1 | 4.0 | LOW |
|
— | — | [email protected] |
| 2.7 | 3.1 | LOW |
|
1.2 | 1.4 | [email protected] |
GHSA-2299-ghjr-6vjp · Severity: low · Ecosystem: npm — Parse Server: MFA recovery code single-use bypass via concurrent requests
| Vendor | Product | Version | Raw CPE |
|---|---|---|---|
| parseplatform | parse-server | < 8.6.60 | cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:* |
| parseplatform | parse-server | >= 9.0.0, < 9.6.0 | cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha1:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha10:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha11:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha12:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha13:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha14:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha15:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha16:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha17:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha18:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha19:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha2:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha20:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha21:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha22:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha23:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha24:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha25:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha26:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha27:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha28:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha29:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha3:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha30:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha31:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha32:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha33:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha34:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha35:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha36:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha37:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha38:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha39:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha4:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha40:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha41:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha42:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha43:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha44:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha45:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha46:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha47:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha48:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha49:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha5:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha50:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha51:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha52:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha53:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha6:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha7:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha8:*:*:*:node.js:*:* |
| parseplatform | parse-server | 9.6.0 | cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha9:*:*:*:node.js:*:* |