Dify
CVE-2026-105762
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed Dify console endpoint
-
DeliveryPOST crafted internal/metadata URL
-
ExploitServer fetches attacker-controlled URL (SSRF)
-
ExecutionReturn internal response data
-
ImpactPivot to internal services / harvest cloud credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | No special conditions beyond network reachability - the pre-1.13.0 /console/api/remote-files/upload (POST) and /remote-files/<path:url> (GET) endpoints accepted an attacker-controlled URL with NO authentication (PR:N confirmed by the added @login_required in the fix), so a remote unauthenticated attacker can trigger the server-side fetch against default configurations. The practical LIMITING factor is Dify's existing ssrf_proxy wrapper, which may filter internal/metadata targets depending on its allowlist configuration; exploitation impact also depends on the instance being network-exposed to the attacker and on internal services/cloud metadata being reachable from the Dify host. |
| Impact | This is a genuine, actionable SSRF (CWE-918) rather than a paper-high score. The provided CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L, base 8.3) indicates network-reachable, low-complexity, unauthenticated exploitation with a scope change, and the source-code evidence corroborates this directly: the fixing PR (#32236) adds @login_required to the previously anonymous /console/api/remote-files/upload and /remote-files/<path:url> handlers, confirming the pre-1.13.0 endpoints performed server-side fetches of attacker-supplied URLs with no authentication. The scope change (S:C) is well-justified because the server can be coerced into reaching internal-only services and cloud metadata endpoints - a different security authority than the Dify app itself. Countervailing signals temper urgency: no EPSS score, no CISA KEV listing, and no public POC were supplied, so there is no evidence of active exploitation or mass scanning yet. Note also that Dify already routes these requests through an 'ssrf_proxy' helper, meaning the residual risk depends on how robust that proxy's allowlist/deny-internal logic is - the primary defect fixed was the missing authentication gate, not the fetch mechanism itself. Net: prioritize patching to 1.13.0 for internet-exposed Dify instances (unauthenticated + scope change is a classic pivot primitive), but absent EPSS/KEV/POC this is an elevated-not-emergency item. |
| Exploit ScenarioDerived | An attacker who can reach an internet-exposed Dify instance sends an unauthenticated POST to /console/api/remote-files/upload with a URL pointing at an internal service or the cloud metadata endpoint (e.g. 169.254.169.254). The Dify server fetches that URL and returns metadata/content, letting the attacker enumerate internal hosts or harvest cloud instance credentials and use the server as a network pivot. No public exploit identified at time of analysis, though the single-request nature and low complexity (AC:L) make exploitation trivial to script. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Server-side request forgery in Dify (LangGenius) before 1.13.0 allows unauthenticated remote attackers to make the Dify server fetch attacker-supplied URLs through the /console/api/remote-files/upload (POST) and /remote-files/<path:url> (GET) endpoints, turning the instance into a network pivot against internal services and cloud metadata endpoints. Rated CVSS 3.1 8.3 (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L), the issue is unauthenticated by design - the fix adds @login_required - but practical exploitability is bounded by Dify's existing ssrf_proxy wrapper, which may filter internal or metadata targets depending on allowlist configuration. No public exploit code identified at time of analysis and no confirmed active exploitation; a vendor-released patch (1.13.0) is available.
RemediationAI
Upgrade to Dify 1.13.0, the vendor-released patch version, which fixes the issue by rewriting the handlers in api/controllers/console/remote_files.py and adding @login_required to both the GET /remote-files/<path:url> and POST /remote-files/upload routes (commit 2f87ecc0ce1d05ab3ef9537f29b84a5fa5823017, PR 32236, release https://github.com/langgenius/dify/releases/tag/1.13.0). Refer to the vendor advisory GHSA-8235-vv5j-mmvg for the official guidance. If immediate upgrade is not possible, compensating controls should be applied with their trade-offs in mind: put the Dify console endpoints (/console/api/remote-files/* and /remote-files/*) behind an authenticating reverse proxy or IP allowlist so only trusted administrators can reach them - this restores the missing authorization boundary but breaks any unauthenticated integrations relying on those paths; and enforce strict outbound egress filtering from the Dify host (deny RFC1918 ranges, 169.254.169.254/link-local metadata, and other internal CIDRs) - this neutralizes the pivot to cloud metadata and internal services but will also block legitimate remote-file imports from internal networks. Tightening the ssrf_proxy allowlist configuration is a further hardening step, but note that pre-1.13.0 releases expose the endpoint with no authentication (PR:N), so mitigation should not rely on proxy filtering alone.
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 flaw is a classic server-side request forgery (CWE-918) rooted in Dify's remote-file import feature. In pre-1.13.0 code, the Flask/FastOpenAPI routes in api/controllers/console/remote_files.py (referenced in the advisory as the remote-files upload path) accepted a URL from the request payload/URL segment and passed it to the internal ssrf_proxy helper (a wrapper around httpx), which performed a HEAD followed by a GET with follow_redirects enabled and up to a 3-second timeout. Because the endpoints lacked @login_required - the diff for PR 32236 explicitly converts the FastOpenAPI handlers into Flask-RESTX Resource classes and adds login_required to both the GET /remote-files/<path:url> and POST /remote-files/upload handlers - any network-reachable client could drive outbound requests from the Dify host. The CPE cpe:2.3:a:langgenius:dify:*:*:*:*:*:*:*:* confirms the affected scope is all Dify releases prior to 1.13.0. The limited confidentiality/integrity/availability sub-scores (C:L/I:L/A:L) with a Changed scope (S:C) reflect that the primary consequence is metadata/internal-service disclosure and use of the server as a pivot rather than direct compromise of the Dify application itself.
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:C/C:L/I:L/A:L
Unauthenticated network endpoint (PR:N, confirmed by added login_required), trivial single request (AC:L), SSRF pivots to a separate security authority (S:C), with limited C/I/A to reachable internal services.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Dify is an open-source LLM app development platform. Prior to 1.13.0, the /console/api/remote-files/upload endpoint in api/controllers/web/remote_files.py accepted an attacker-controlled URL without authentication and caused the Dify server to retrieve it. A remote attacker could use the endpoint to send requests to internal services or cloud metadata endpoints, potentially exposing sensitive data and using the server as a network pivot. This issue is fixed in version 1.13.0.
Technical POC Analysis
CWE-918 (Server-Side Request Forgery) in Dify's own Flask controller code at api/controllers/web/remotefiles.py, per the advisory Details section.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Dify (LangGenius), an open-source LLM application platform, is affected in releases before 1.13.0 by an unauthenticated server-side request forgery flaw that lets any party with network reach direct the server to fetch arbitrary attacker-supplied URLs. Because Dify deployments are typically connected to internal networks and cloud environments, a successful attack could convert the platform into a pivot point for reaching internal services and cloud metadata endpoints, placing credentials and data beyond Dify itself at risk. Leadership should treat any internet-facing Dify instance as a high-priority exposure and resource the upgrade accordingly.
Apply vendor patch (upgrade to Dify 1.13.0); confirm the exact fix version with the vendor given conflicting patch-status data, and in the interim restrict external access to the affected endpoints and enforce ssrf_proxy allowlisting.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)CVE.org
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
Vulnrichment
GitHub
Exploit-DB