Dify <=1.14.1 - Unauthenticated Plugin Daemon Path Traversal
CVE-2026-41948
Verified
Description
Dify version 1.14.1 and prior are affected by an unauthenticated path traversal in the Plugin Daemon icon proxy endpoint. The /console/api/workspaces/current/plugin/icon endpoint requires no authentication and passes the filename query parameter unsanitized into the internal Plugin Daemon REST API URL. Using ../ dot-sequence traversal an attacker escapes the authorized plugin/{tenant_id}/asset/ namespace and reaches arbitrary internal Plugin Daemon endpoints. The /health/check endpoint is always available and returns Plugin Daemon version, build time and pool status confirming exploitation.
Severity
Critical
CVSS Score
9.4
Exploit Probability
2%
Affected Product
dify
Published Date
September 14, 2026
Template Author
dhiyaneshdk
CVE-2026-41948.yaml
9.4Score
CVSS Metrics
CVSS Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
CVE ID:
cve-2026-41948
CWE ID:
cwe-23
References
https://nvd.nist.gov/vuln/detail/CVE-2026-41948https://www.zafran.io/resources/difytap-zafran-discovers-how-attackers-can-silently-wiretap-ai-data-across-tenants-on-a-platform-powering-1m-appshttps://huntr.com/bounties/35b7ad59-e35d-443f-bf77-387bfb932ec0https://github.com/langgenius/dify/pull/35796https://osv.dev/vulnerability/CVE-2026-41948https://www.vulncheck.com/advisories/dify-path-traversal-via-plugin-daemon-internal-api-access
Remediation Steps
Upgrade to Dify 1.15.0 or later. The fix in api/core/plugin/impl/base.py (BasePluginClient._prepare_request) URL-decodes the path and raises ValueError on any segment containing .. or %2e%2e, preventing path traversal sequences from being forwarded to the Plugin Daemon.