Browse / CVEs / CVE-2026-28288
CVE-2026-28288· CWE-204
Dify User Enumeration via Observable Response Discrepancy
mediumseverity
5.3CVSS score
0.7%likelihood of exploitation, next 30 days
53%of all CVEs are less likely
Readycheck to confirm it
Dify is an open-source LLM app development platform. Prior to 1.9.0, responses from the Dify API to existing and non-existent accounts differ, allowing an attacker to enumerate email addresses registered with Dify. Version 1.9.0 fixes the issue.
Impact
Attackers can enumerate registered email addresses, potentially aiding further targeted attacks or phishing.
Fix
Update to version 1.9.0 or later.
How to confirm it
Send: POST /console/api/login
Positive when: contains "Account not found" AND contains in content_type "application/json" AND status 400Run it with nuclei: nuclei -id CVE-2026-28288 -u <target>
The full check
id: CVE-2026-28288
info:
name: Dify User Enumeration via Observable Response Discrepancy
author: DhiyaneshDk
severity: medium
description: |
Dify is an open-source LLM app development platform. Prior to 1.9.0, responses from the Dify API to existing and non-existent accounts differ, allowing an attacker to enumerate email addresses registered with Dify. Version 1.9.0 fixes the issue.
impact: |
Attackers can enumerate registered email addresses, potentially aiding further targeted attacks or phishing.
remediation: |
Update to version 1.9.0 or later.
reference:
- https://github.com/langgenius/dify/security/advisories/GHSA-9qpf-wcv3-w3qx
- https://github.com/langgenius/dify/issues/24323
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-28288
epss-score: 0.00689
epss-percentile: 0.53065
cwe-id: CWE-204
metadata:
verified: true
max-request: 1
tags: cve,cve2026,dify,user-enum,info-leak
http:
- raw:
- |
POST /console/api/login HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"email":"nonexistent{{randstr}}@example.com","password":"{{randstr}}","language":"en-US","remember_me":true}
matchers-condition: and
matchers:
- type: word
part: body
words:
- "Account not found"
- type: word
part: content_type
words:
- "application/json"
- type: status
status:
- 400References
- https://github.com/langgenius/dify/security/advisories/GHSA-9qpf-wcv3-w3qx
- https://github.com/langgenius/dify/issues/24323
Use this check only on systems you are authorised to test. Where the data comes from