CVE-2026-72917: AnythingLLM: Password recovery accepts one recovery code twice after whitespace normalization
AnythingLLM is an application that turns pieces of content into context that any LLM can use as references during chatting. From 1.0.0 to 1.15.0, AnythingLLM's unauthenticated account-recovery flow in server/utils/PasswordRecovery/index.js uses recoverAccount() to deduplicate the raw recoveryCodes values before trimming them, so one valid code submitted twice with different surrounding whitespace can satisfy the two-code check. Each normalized value can also match the same stored hash instead of consuming a distinct hash. An attacker who knows the target username and one recovery code can call POST /api/system/recover-account in multi-user mode, receive a password-reset token, and use POST /api/system/reset-password to take over the account, including an administrator account.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-72917?
CVE-2026-72917 has a severity rating of medium with a score of 5.9.
What is the risk associated with CVE-2026-72917?
CVE-2026-72917 has a risk rating of 35.
How do I fix CVE-2026-72917?
To fix CVE-2026-72917, update to AnythingLLM version 1.15.1 or later where the issue has been addressed.
What impact does CVE-2026-72917 have on security?
CVE-2026-72917 allows an unauthenticated user to reuse a password recovery code, potentially compromising account integrity.
Which versions of AnythingLLM are affected by CVE-2026-72917?
CVE-2026-72917 affects versions from 1.0.0 to 1.15.0 of AnythingLLM.