Dify
CVE-2025-63388
CRITICAL
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLure authenticated Dify operator to malicious page
-
DeliveryBrowser auto-sends session cookies cross-origin
-
ExploitEndpoint reflects Origin and allows credentials
-
ExecutionAttacker JS reads system-features response
-
ImpactExfiltrate disclosed configuration data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
|
| Exploitation Conditions | Exploitation requires (1) a Dify console user with an active authenticated session who (2) visits or is redirected to an attacker-controlled web page while that session is live; the attacker's JavaScript then issues a credentialed cross-origin request to the specific /console/api/system-features endpoint, which reflects the arbitrary Origin and returns Access-Control-Allow-Credentials: true. Limiting factors: the attack fails if the victim is not logged in, reaches only this single endpoint's data rather than arbitrary API access, and - per the supplier's dispute - may expose nothing beyond unauthenticated content, which would make the condition exploitable but of negligible value. No vendor-side configuration toggle is cited as a precondition; the permissive CORS behavior is described as present in default Dify v1.9.1. |
| Impact | The input assigns CVSS 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N), which on paper indicates a critical, network-exploitable, unauthenticated flaw. However, multiple signals conflict with that severity. First, this is a CORS misconfiguration (CWE-346): such attacks are not truly 'no user interaction' - they require an already-authenticated Dify console user to visit an attacker-controlled web page, so the real-world precondition is stronger than UI:N suggests. Second, the I:H (integrity high) rating is questionable because reading a reflected cross-origin response is an information-disclosure primitive (the input's own tag is 'Information Disclosure'), not a write/modify primitive. Third, and most importantly, the SUPPLIER DISPUTES the vulnerability, arguing that credentialed requests to /console/api/system-features expose nothing beyond what an unauthenticated request already returns - if true, the confidentiality impact collapses toward negligible. No EPSS score, KEV listing, or SSVC decision data was provided, so exploitation probability and automatability cannot be quantified from the input. Two referenced gists and a GitHub discussion thread exist but are not confirmed as working exploit code in the input metadata. Net assessment: this is most likely a high-CVSS-but-contested, low-real-risk issue whose actual severity hinges entirely on whether the /console/api/system-features response contains sensitive data - a fact the vendor explicitly disputes and which should be verified before prioritization. |
| Exploit ScenarioDerived | An attacker hosts a malicious web page and lures a currently-logged-in Dify console operator to visit it. JavaScript on that page issues a credentialed cross-origin fetch to the victim instance's /console/api/system-features endpoint; because the endpoint reflects the arbitrary Origin header and sets Access-Control-Allow-Credentials: true, the attacker's script can read the authenticated JSON response and exfiltrate whatever system-feature data it contains. No confirmed public exploit code is identified in the input, though two referenced gists may contain technical proof-of-concept details. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Cross-origin read access to Dify v1.9.1's /console/api/system-features endpoint is possible because the server reflects arbitrary Origin headers while returning Access-Control-Allow-Credentials: true, letting an attacker-controlled web page make credentialed requests in the context of a logged-in console user's browser session. Exploitation requires the victim to hold an active authenticated Dify session and to visit or be redirected to the attacker's page, and the exposure is limited to that single endpoint's data rather than arbitrary API access; the vendor disputes the finding, arguing that credentialed requests provide no more access than unauthenticated ones. No public exploit code was identified at time of analysis, and our independent assessment rates the practical risk far below the 9.1 score assigned in the input, since the realistic worst case is low-confidentiality disclosure requiring user interaction.
RemediationAI
No vendor-released patch version is identified in the provided data, and the supplier disputes the issue, so no upstream fixed release can be cited as confirmed; the references (the two Cristliu gists and the langgenius/dify GitHub Discussions thread) should be checked for updated vendor guidance before planning a fix. Actionable compensating controls, in order of preference: (1) correct the endpoint's CORS handling at the application or reverse-proxy layer so that Access-Control-Allow-Origin is emitted only for an explicit allow-list of trusted console origins and Access-Control-Allow-Credentials is never returned alongside a reflected or wildcard origin - this is the direct fix and removes the flaw, though it must be validated against any legitimate cross-origin console or embedded-widget use cases or those will break; (2) set the Dify session cookie to SameSite=Strict (or Lax as a weaker fallback) so browsers do not attach it to cross-site requests - effective and low-cost, but it may disrupt legitimate cross-site or embedded flows and does not help if the console is accessed through a same-site subdomain; (3) block or restrict external access to /console/api/* at the reverse proxy to trusted networks or IP ranges, which eliminates the remote attack path entirely at the cost of reducing legitimate remote console accessibility; and (4) where the endpoint's data is confirmed to be non-sensitive per the supplier's dispute, treat the finding as low risk and document the accepted-risk decision rather than applying disruptive controls. If a patched Dify version is later published, plan the upgrade to that exact version; do not assume any specific release number without vendor confirmation.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue is a Cross-Origin Resource Sharing (CORS) trust-boundary error (CWE-346, Origin Validation Error) in the Dify console API endpoint /console/api/system-features. A correctly configured CORS policy must only echo back origins from an explicit allow-list and must never pair a reflected, attacker-supplied Origin with Access-Control-Allow-Credentials: true, because that combination authorizes the browser to attach the victim's session cookies to the cross-origin response read. Dify v1.9.1 instead reflects arbitrary Origin values and sets that credentials flag, so any external domain's JavaScript running in a logged-in user's browser can read the endpoint's JSON response. Per the CPE (cpe:2.3:a:langgenius:dify:1.9.1:*:*:*:*:node.js:*:*), the affected artifact is Dify 1.9.1; the endpoint in question serves console system-feature configuration data, so the data exposed is bounded by what that endpoint returns rather than the full authenticated API surface. Our assessed vector (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N) reflects that the browser session, not the attacker, supplies the credentials, so confidentiality impact is limited and no integrity or availability loss is demonstrated; the supplier further contends the response contains nothing beyond what an unauthenticated caller can already obtain.
Know when Dify gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CORS credential theft needs an authenticated victim to visit a malicious page (UI:R); it only discloses one endpoint's data (C:L), performs no modification (I:N) and no availability impact.
Primary rating from NVD.
CVSS VectorNVD
DescriptionNVD
A Cross-Origin Resource Sharing (CORS) misconfiguration vulnerability exists in Dify v1.9.1 in the /console/api/system-features endpoint. The endpoint implements an overly permissive CORS policy that reflects arbitrary Origin headers and sets Access-Control-Allow-Credentials: true, allowing any external domain to make authenticated cross-origin requests. NOTE: the Supplier disputes this, providing the rationale of "sending requests with credentials does not provide any additional access compared to unauthenticated requests."
Executive ViewAI
Dify v1.9.1, the open-source platform used to build and operate AI applications and assistants, carries a cross-origin data exposure in its administrative console that could reveal system configuration details to a malicious website visited by an operator who is currently signed in. The exposure is confined to a single endpoint and a low-confidentiality class of data, and it requires operator interaction, so this is a narrow disclosure risk rather than a route to platform or data compromise. Leadership should treat it as a short-term hardening and monitoring item, and track the vendor's response given their dispute of the reported severity.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict console access to trusted networks, VPN, or an identity-aware proxy; block or strip cross-origin requests to /console/api/system-features at the reverse proxy or WAF unless the Origin matches the console domain; enforce SameSite=Strict or Lax on console session cookies; shorten session lifetimes and require re-authentication; alert on anomalous Origin headers; and instruct operators not to visit untrusted sites while signed into the console.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)NVD
Dify 1.9.1 permits unauthenticated remote GET requests to the /console/api/system-features console endpoint, letting ano
Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al
Path traversal in Dify versions 0 through 1.14.1 allows authenticated tenants to escape their authorized tenant path and
Cross-tenant authorization bypass in LangGenius Dify versions through 1.14.1 lets any logged-in editor reroute another t
A vulnerability in langgenius/dify v0.10.1 allows an attacker to take over any account, including administrator accounts
SQL injection in Dify's MyScale vector store backend (versions before 1.16.0-rc1) lets authenticated attackers execute a
Plaintext exposure of third-party service API keys in Dify prior to version 1.11.0 allows any authenticated non-administ
Cross-tenant document disclosure in Dify 1.14.1 and prior allows any authenticated user to read up to 3,000 characters o
langgenius/dify version v0.10.1 contains a vulnerability where there are no limits applied to the number of code guess a
In langgenius/dify v0.10.1, the `/forgot-password/resets` endpoint does not verify the password reset code, allowing an
Dify is an open-source LLM app development platform. Rated high severity (CVSS 7.6), this vulnerability is remotely expl
A stored cross-site scripting (XSS) vulnerability exists in langgenius/dify version latest, specifically in the chat log
NVD
CVE.org
EPSS
GitHub
Exploit-DB