Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSelf-register Dify Cloud account
-
DeliveryEnumerate or guess victim app UUID
-
ExploitPOST attacker Langfuse creds to /trace-config endpoint
-
ExecutionEnable tracing via /trace endpoint
-
PersistVictim prompts and LLM responses mirrored to attacker
-
ImpactHarvest system prompts and user data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | The attacker must hold an authenticated console session in some tenant of the target Dify instance (any editor-level account suffices) and must know or guess the target application's UUID, which is passed as the app_id path parameter to /console/api/apps/<app_id>/trace and /console/api/apps/<app_id>/trace-config. On Dify Cloud this prerequisite is effectively void because unauthenticated self-registration is open, matching the CVSS PR:N rating; on self-hosted deployments that require SSO, invitation, or admin-approved onboarding the bar is meaningfully higher. No user interaction by the victim is required and no special non-default Dify configuration is needed - the trace-config endpoints exist in the default console API; the only situational requirement is that the victim application be one whose telemetry the attacker wants to siphon (so a configured or about-to-be-used LLM app, otherwise no traffic flows through the redirected trace provider). |
| Impact | CVSS 4.0 scores this 9.1 with AV:N/AC:H/PR:N and high confidentiality and integrity impact, but those signals deserve nuance. PR:N is technically correct for Dify Cloud because self-registration is open, so the listed 'authenticated editor' requirement collapses to zero friction; for self-hosted deployments behind SSO or invite-only onboarding the practical privilege barrier is higher. AC:H is questionable given the exploit is a straightforward IDOR - the huntr bounty report and one-line diff indicate trivial reproduction, so attack complexity is arguably overstated. Exploitation is automatable (iterating app_ids), data confidentiality impact is severe (every prompt/response can be siphoned to an attacker's trace endpoint), and a working POC is public via huntr. EPSS and CISA KEV status were not supplied in the input data, so widespread active exploitation cannot be confirmed; treat this as a high-priority patch-now item for any internet-facing Dify Cloud or multi-tenant self-hosted instance. |
| Exploit ScenarioDerived | An attacker self-registers a free Dify Cloud account, enumerates or guesses target application UUIDs (or harvests them from public sharing links), then POSTs to /console/api/apps/<victim_app_id>/trace-config with their own Langfuse credentials and enables tracing via the /trace endpoint. Every subsequent prompt submitted to the victim's chatbot, along with the LLM's responses, is mirrored to the attacker's trace dashboard - exfiltrating proprietary system prompts, end-user PII, and business data in real time. Working exploit guidance is published in the huntr bounty report. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – May 18, 2026
Cross-tenant authorization bypass in LangGenius Dify versions through 1.14.1 lets any logged-in editor reroute another tenant's LLM trace traffic - including prompts and model responses - to an attacker-controlled observability provider. Because Dify Cloud permits free self-registration, the authentication barrier is effectively trivial; publicly available exploit code exists and a vendor patch is shipped via PR #35793. The flaw is an instance of CWE-639 (insecure direct object reference) in the trace-configuration endpoints, which accepted an app_id without validating tenant ownership.
Earlier versions of this analysis (1)
Authorization bypass in Dify 1.14.1 and prior allows authenticated editor users to hijack trace configurations for any application across all tenants. Attackers can redirect all messages and responses from victim applications to attacker-controlled LLM trace providers by exploiting missing tenant ownership checks in the trace configuration endpoints. With Dify Cloud offering free unauthenticated self-registration, this vulnerability is trivially exploitable by any attacker who can create an account and access editor functionality.
RemediationAI
Upgrade Dify to the version that incorporates PR #35793 (https://github.com/langgenius/dify/pull/35793), which introduces the @get_app_model tenant-ownership decorator on the AppTraceApi and TraceAppConfigApi GET/POST/PATCH/DELETE handlers; an exact tagged release version was not provided in the input data, so confirm the fix is included against the vendor's release notes before deploying. Where immediate upgrade is impossible, compensating controls include disabling external trace-provider integrations entirely (removes the high-value sink, at the cost of losing Langfuse/observability features), placing the /console/api/apps/<app_id>/trace and /trace-config endpoints behind a reverse-proxy WAF rule that enforces session-to-tenant binding, and on Dify Cloud temporarily disabling open self-registration to raise the cost of account creation (which breaks the public signup flow). Rotate any third-party LLM trace-provider API keys that may have been exposed and audit existing trace configurations across applications for unfamiliar provider endpoints.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Dify is an open-source LLM application development platform (CPE cpe:2.3:a:langgenius:dify) whose console API exposes per-application tracing controls that integrate with external observability providers such as Langfuse. The vulnerable handlers in api/controllers/console/app/app.py (AppTraceApi) and api/controllers/console/app/ops_trace.py (TraceAppConfigApi) accepted a raw app_id UUID from the URL and forwarded it directly to OpsTraceManager / OpsService without confirming that the caller's tenant owned the application - a textbook CWE-639 Authorization Bypass Through User-Controlled Key. The upstream fix replaces the raw UUID parameter with the @get_app_model decorator, which resolves the app through the requesting account's tenant scope and returns 404 when the app belongs to another tenant, as the new integration test test_trace_endpoints_hide_apps_from_other_tenants demonstrates.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Primary rating from Vendor (VulnCheck) · only source for this CVE.
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
4DescriptionCVE.org
Dify version 1.14.1 and prior contains an authorization bypass vulnerability that allows authenticated editor users to set and enable trace configurations for any application regardless of tenant ownership. Attackers can exploit missing tenant ownership checks in the trace configuration endpoints to redirect all messages and responses from victim applications to attacker-controlled LLM trace providers. NOTE: Dify Cloud allows unauthenticated free self-registration, making account creation trivially accessible to any attacker.
Executive ViewAI
LangGenius Dify versions through 1.14.1 contain a critical cross-tenant authorization bypass where publicly available exploit code exists, allowing any registered user to redirect competitors' or other tenants' LLM traffic-including proprietary prompts and model responses-to attacker-controlled monitoring systems. Organizations running Dify Cloud or multi-tenant Dify deployments face immediate risk of proprietary data exfiltration, with free self-registration eliminating practical barriers to exploitation.
Apply vendor patch.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
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
langgenius/dify version 0.9.1 contains a Server-Side Request Forgery (SSRF) vulnerability. Rated high severity (CVSS 7.5
EUVD-2026-30772
GHSA-48v9-p8g8-55vg
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB