CVE-2026-21484

5.3 MEDIUM

📋 TL;DR

This vulnerability in AnythingLLM allows attackers to determine whether specific usernames exist in the system by observing different error messages from the password recovery endpoint. This enables username enumeration attacks, which can facilitate credential stuffing or targeted attacks. Anyone running vulnerable versions of AnythingLLM is affected.

💻 Affected Systems

Products:
  • AnythingLLM
Versions: All versions prior to commit e287fab56089cf8fcea9ba579a3ecdeca0daa313
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all deployments using the vulnerable password recovery endpoint.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers build a complete list of valid usernames, then conduct targeted password attacks or social engineering against identified users, potentially leading to account compromise.

🟠

Likely Case

Attackers enumerate some valid usernames and use them for credential stuffing attacks or to gather intelligence about the user base.

🟢

If Mitigated

With proper rate limiting and monitoring, enumeration attempts are detected and blocked before significant damage occurs.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Simple HTTP requests to password recovery endpoint with different usernames can reveal existence through response differences.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Commit e287fab56089cf8fcea9ba579a3ecdeca0daa313

Vendor Advisory: https://github.com/Mintplex-Labs/anything-llm/security/advisories/GHSA-47vr-w3vm-69ch

Restart Required: Yes

Instructions:

1. Update to commit e287fab56089cf8fcea9ba579a3ecdeca0daa313 or later. 2. Restart the AnythingLLM service. 3. Verify the fix by testing password recovery responses.

🔧 Temporary Workarounds

Rate Limit Password Recovery

all

Implement rate limiting on the password recovery endpoint to slow enumeration attempts.

# Configure rate limiting in your web server or application firewall

Disable Password Recovery

all

Temporarily disable the password recovery functionality if not essential.

# Modify application configuration to disable password recovery endpoint

🧯 If You Can't Patch

  • Implement web application firewall rules to detect and block username enumeration patterns
  • Monitor authentication logs for unusual patterns of password recovery attempts

🔍 How to Verify

Check if Vulnerable:

Send password recovery requests with valid and invalid usernames. If responses differ (e.g., different error messages or timing), the system is vulnerable.

Check Version:

Check git commit hash or version in application interface

Verify Fix Applied:

After patching, test password recovery with both valid and invalid usernames. Responses should be identical in format and timing.

📡 Detection & Monitoring

Log Indicators:

  • Multiple failed password recovery attempts for different usernames
  • Patterns of sequential username attempts

Network Indicators:

  • High volume of POST requests to password recovery endpoint
  • Requests with common username lists

SIEM Query:

source="web_logs" AND uri="/api/password-recovery" AND count by src_ip > 10 within 1h

🔗 References

📤 Share & Export