CVE-2026-41948
Dify vulnerability analysis and mitigation

Overview

CVE-2026-41948 is a relative path traversal vulnerability in Dify (an open-source LLM application platform) affecting version 1.14.1 and prior. The flaw allows attackers to manipulate requests forwarded to the Plugin Daemon's internal REST API by exploiting insufficient URL path sanitization in BasePluginClient._prepare_request (api/core/plugin/impl/base.py). Because Dify Cloud permits unauthenticated free self-registration, the effective barrier to exploitation is minimal — only knowledge of a victim tenant's UUID is required. It carries a CVSS v3.1 base score of 9.4 (Critical) and a CVSS v4.0 base score of 9.3 (Critical) (Github Advisory, Feedly).

Technical details

The root cause is CWE-23 (Relative Path Traversal): the function BasePluginClient._prepare_request in api/core/plugin/impl/base.py joins a caller-supplied path onto the Plugin Daemon's internal API base URL without validating for traversal sequences (Github PR). Attackers craft requests containing unencoded .. dot sequences or URL-encoded variants (%2e%2e, %252e%252e) in task identifiers or filename parameters, causing the application to escape the authorized tenant path and reach internal endpoints such as debug interfaces (Github Advisory). The Go-based Plugin Daemon service is the intended trust boundary, but incomplete path normalization on the Python controller side allows traversal sequences to pass through before the daemon can enforce restrictions. The vulnerability was discovered and reported by Ido Shani of Zafran via the Huntr bug bounty platform (Github PR).

Impact

Successful exploitation enables an attacker to read sensitive data and modify configurations across tenant boundaries by accessing the Plugin Daemon's internal REST API endpoints — including debug interfaces — outside their authorized tenant scope (Github Advisory). Confidentiality and integrity impacts are rated High, as an attacker can exfiltrate sensitive tenant data and alter system configurations; availability impact is Low. On Dify Cloud, where free self-registration is permitted, any unauthenticated internet user can register an account and immediately leverage this vulnerability against other tenants with only their UUID, making cross-tenant data exposure a realistic risk (Feedly).

Exploitability

As of the time of disclosure, there is no public proof-of-concept exploit code and no confirmed evidence of in-the-wild exploitation (Feedly). A Huntr bounty report exists at https://huntr.com/bounties/35b7ad59-e35d-443f-bf77-387bfb932ec0, but its content was not publicly available at the time of analysis. The EPSS score is approximately 0.056–0.079% (23rd percentile), indicating a currently low but non-negligible probability of exploitation within 30 days (Github Advisory). The vulnerability is not currently listed in the CISA Known Exploited Vulnerabilities (KEV) catalog, though CISA referenced it in a weekly bulletin (Feedly).

Exploitation steps

  1. Account Registration: On Dify Cloud, register a free account without any prior credentials — self-registration is open to the public, requiring no invitation or approval.
  2. Tenant UUID Discovery: Obtain the target victim tenant's UUID through reconnaissance (e.g., observing API responses, shared links, or public Dify app URLs that may expose tenant identifiers).
  3. Craft Traversal Payload: Construct a malicious API request targeting the Plugin Daemon forwarding endpoint, embedding path traversal sequences (e.g., .., %2e%2e, or double-encoded %252e%252e) within task identifier or filename parameters to escape the authorized tenant path.
  4. Forward Malicious Request: Submit the crafted request to Dify's API layer; the BasePluginClient._prepare_request function joins the attacker-controlled path onto the Plugin Daemon's internal base URL without sanitization, forwarding the traversal sequence to the daemon.
  5. Access Internal Endpoints: The traversal causes the Plugin Daemon to process requests for internal endpoints (e.g., debug interfaces) belonging to the victim tenant, outside the attacker's authorized scope.
  6. Exfiltrate or Modify Data: Use the unauthorized access to read sensitive tenant data or modify configurations across tenant boundaries (Github PR, Github Advisory).

Indicators of compromise

  • Network: Unusual API requests to Plugin Daemon forwarding endpoints containing .., %2e%2e, %252e%252e, or other encoded dot sequences in path parameters; requests accessing internal or debug endpoints from tenant contexts that should not have access to them.
  • Logs: Dify API access logs showing requests with traversal sequences in task identifier or filename parameters; HTTP requests to /inner-api/ paths that include ../ or encoded equivalents; access to debug endpoints from unexpected tenant UUIDs.
  • Application Behavior: Requests originating from one tenant UUID successfully accessing resources or endpoints associated with a different tenant UUID; unexpected calls to Plugin Daemon debug interfaces from non-administrative accounts.

Mitigation and workarounds

The fix was merged into the Dify main branch on May 25, 2026 via pull request #35796, adding a decode-and-check guard in api/core/plugin/impl/base.py that rejects any path containing .. or %2e%2e segments after URL decoding before constructing the forwarded URL (Github PR). Users should upgrade Dify to a version later than 1.14.1 that includes this patch. As interim workarounds: implement strict input validation and URL path sanitization for all Plugin Daemon API requests; restrict network-level access to the Plugin Daemon from trusted sources only; and monitor for anomalous cross-tenant API access patterns (Github Advisory).

Community reactions

The vulnerability received coverage from security aggregators including The Hacker Wire, Offseq Radar, and VulnDB shortly after disclosure on May 18, 2026 (Feedly). VulnCheck published a dedicated advisory noting the path traversal via Plugin Daemon internal API access. Social media activity was observed on Mastodon and Bluesky, with infosec community accounts sharing the CVE details. CISA referenced the vulnerability in its weekly security bulletin (SB26-145), indicating awareness at the federal advisory level.

Additional resources


SourceThis report was generated using AI

Related Dify vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-41948CRITICAL9.3
  • Dify logoDify
  • cpe:2.3:a:dify:dify
NoYesMay 18, 2026
CVE-2026-41947CRITICAL9.3
  • Dify logoDify
  • cpe:2.3:a:dify:dify
NoYesMay 18, 2026
CVE-2026-61461HIGH8.7
  • Dify logoDify
  • cpe:2.3:a:dify:dify
NoYesJul 10, 2026
CVE-2026-41949HIGH8.2
  • Dify logoDify
  • cpe:2.3:a:dify:dify
NoYesMay 18, 2026
CVE-2026-18266MEDIUM5.4
  • Dify logoDify
  • cpe:2.3:a:dify:dify
NoYesJul 29, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management