{"id":"GHSA-2299-ghjr-6vjp","summary":"Parse Server: MFA recovery code single-use bypass via concurrent requests","details":"### Impact\n\nAn 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.\n\n### Patches\n\nThe login handler now uses optimistic locking when updating auth data that contains consumed single-use tokens. If a concurrent request has already modified the recovery array, the update fails and the login is rejected.\n\n### Workarounds\n\nThere are no known workarounds.","aliases":["BIT-parse-2026-33624","CVE-2026-33624"],"modified":"2026-03-27T22:11:19.871863Z","published":"2026-03-24T19:48:24Z","database_specific":{"github_reviewed":true,"github_reviewed_at":"2026-03-24T19:48:24Z","nvd_published_at":"2026-03-24T19:16:55Z","cwe_ids":["CWE-367"],"severity":"LOW"},"references":[{"type":"WEB","url":"https://github.com/parse-community/parse-server/security/advisories/GHSA-2299-ghjr-6vjp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-33624"},{"type":"WEB","url":"https://github.com/parse-community/parse-server/pull/10275"},{"type":"WEB","url":"https://github.com/parse-community/parse-server/pull/10276"},{"type":"WEB","url":"https://github.com/parse-community/parse-server/commit/5e70094250a36bfcc14ecd49592be2b94fba66ff"},{"type":"WEB","url":"https://github.com/parse-community/parse-server/commit/fc3da35a81d5083b453e8967cabcc880f1a3bd0c"},{"type":"PACKAGE","url":"https://github.com/parse-community/parse-server"}],"affected":[{"package":{"name":"parse-server","ecosystem":"npm","purl":"pkg:npm/parse-server"},"ranges":[{"type":"SEMVER","events":[{"introduced":"9.0.0"},{"fixed":"9.6.0-alpha.54"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-2299-ghjr-6vjp/GHSA-2299-ghjr-6vjp.json"}},{"package":{"name":"parse-server","ecosystem":"npm","purl":"pkg:npm/parse-server"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"8.6.60"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-2299-ghjr-6vjp/GHSA-2299-ghjr-6vjp.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N"}]}