Vulnerability Details CVE-2026-27590
Caddy is an extensible server platform that uses TLS by default. Prior to version 2.11.1, Caddy's FastCGI path splitting logic computes the split index on a lowercased copy of the request path and then uses that byte index to slice the original path. This is unsafe for Unicode because `strings.ToLower()` can change UTF-8 byte length for some characters. As a result, Caddy can derive an incorrect `SCRIPT_NAME`/`SCRIPT_FILENAME` and `PATH_INFO`, potentially causing a request that contains `.php` to execute a different on-disk file than intended (path confusion). In setups where an attacker can control file contents (e.g., upload features), this can lead to unintended PHP execution of non-.php files (potential RCE depending on deployment). Version 2.11.1 fixes the issue.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.001
EPSS Ranking 31.2%
CVSS Severity
CVSS v3 Score 9.8
Products affected by CVE-2026-27590
-
cpe:2.3:a:caddyserver:caddy:0.10.0
-
cpe:2.3:a:caddyserver:caddy:0.10.1
-
cpe:2.3:a:caddyserver:caddy:0.10.10
-
cpe:2.3:a:caddyserver:caddy:0.10.11
-
cpe:2.3:a:caddyserver:caddy:0.10.12
-
cpe:2.3:a:caddyserver:caddy:0.10.13
-
cpe:2.3:a:caddyserver:caddy:0.10.14
-
cpe:2.3:a:caddyserver:caddy:0.10.2
-
cpe:2.3:a:caddyserver:caddy:0.10.3
-
cpe:2.3:a:caddyserver:caddy:0.10.4
-
cpe:2.3:a:caddyserver:caddy:0.10.5
-
cpe:2.3:a:caddyserver:caddy:0.10.6
-
cpe:2.3:a:caddyserver:caddy:0.10.7
-
cpe:2.3:a:caddyserver:caddy:0.10.8
-
cpe:2.3:a:caddyserver:caddy:0.10.9
-
cpe:2.3:a:caddyserver:caddy:0.11.0
-
cpe:2.3:a:caddyserver:caddy:0.11.1
-
cpe:2.3:a:caddyserver:caddy:0.5.0
-
cpe:2.3:a:caddyserver:caddy:0.5.1
-
cpe:2.3:a:caddyserver:caddy:0.6.0
-
cpe:2.3:a:caddyserver:caddy:0.7.0
-
cpe:2.3:a:caddyserver:caddy:0.7.1
-
cpe:2.3:a:caddyserver:caddy:0.7.2
-
cpe:2.3:a:caddyserver:caddy:0.7.3
-
cpe:2.3:a:caddyserver:caddy:0.7.4
-
cpe:2.3:a:caddyserver:caddy:0.7.5
-
cpe:2.3:a:caddyserver:caddy:0.7.6
-
cpe:2.3:a:caddyserver:caddy:0.8.0
-
cpe:2.3:a:caddyserver:caddy:0.8.1
-
cpe:2.3:a:caddyserver:caddy:0.8.2
-
cpe:2.3:a:caddyserver:caddy:0.8.3
-
cpe:2.3:a:caddyserver:caddy:0.9.0
-
cpe:2.3:a:caddyserver:caddy:0.9.1
-
cpe:2.3:a:caddyserver:caddy:0.9.2
-
cpe:2.3:a:caddyserver:caddy:0.9.3
-
cpe:2.3:a:caddyserver:caddy:0.9.4
-
cpe:2.3:a:caddyserver:caddy:0.9.5
-
cpe:2.3:a:caddyserver:caddy:1.0.0
-
cpe:2.3:a:caddyserver:caddy:1.0.1
-
cpe:2.3:a:caddyserver:caddy:1.0.2
-
cpe:2.3:a:caddyserver:caddy:1.0.3
-
cpe:2.3:a:caddyserver:caddy:1.0.4
-
cpe:2.3:a:caddyserver:caddy:1.0.5
-
cpe:2.3:a:caddyserver:caddy:2.0.0
-
cpe:2.3:a:caddyserver:caddy:2.1.0
-
cpe:2.3:a:caddyserver:caddy:2.1.1
-
cpe:2.3:a:caddyserver:caddy:2.10.0
-
cpe:2.3:a:caddyserver:caddy:2.10.1
-
cpe:2.3:a:caddyserver:caddy:2.10.2
-
cpe:2.3:a:caddyserver:caddy:2.11.0
-
cpe:2.3:a:caddyserver:caddy:2.2.0
-
cpe:2.3:a:caddyserver:caddy:2.2.1
-
cpe:2.3:a:caddyserver:caddy:2.2.3
-
cpe:2.3:a:caddyserver:caddy:2.3.0
-
cpe:2.3:a:caddyserver:caddy:2.4.0
-
cpe:2.3:a:caddyserver:caddy:2.4.1
-
cpe:2.3:a:caddyserver:caddy:2.4.2
-
cpe:2.3:a:caddyserver:caddy:2.4.3
-
cpe:2.3:a:caddyserver:caddy:2.4.4
-
cpe:2.3:a:caddyserver:caddy:2.4.5
-
cpe:2.3:a:caddyserver:caddy:2.4.6
-
cpe:2.3:a:caddyserver:caddy:2.5.0
-
cpe:2.3:a:caddyserver:caddy:2.5.1
-
cpe:2.3:a:caddyserver:caddy:2.5.2
-
cpe:2.3:a:caddyserver:caddy:2.6.0
-
cpe:2.3:a:caddyserver:caddy:2.6.1
-
cpe:2.3:a:caddyserver:caddy:2.6.2
-
cpe:2.3:a:caddyserver:caddy:2.6.3
-
cpe:2.3:a:caddyserver:caddy:2.6.4
-
cpe:2.3:a:caddyserver:caddy:2.7.0
-
cpe:2.3:a:caddyserver:caddy:2.7.1
-
cpe:2.3:a:caddyserver:caddy:2.7.2
-
cpe:2.3:a:caddyserver:caddy:2.7.3
-
cpe:2.3:a:caddyserver:caddy:2.7.4
-
cpe:2.3:a:caddyserver:caddy:2.7.5
-
cpe:2.3:a:caddyserver:caddy:2.7.6
-
cpe:2.3:a:caddyserver:caddy:2.8.0
-
cpe:2.3:a:caddyserver:caddy:2.8.1
-
cpe:2.3:a:caddyserver:caddy:2.8.2
-
cpe:2.3:a:caddyserver:caddy:2.8.3
-
cpe:2.3:a:caddyserver:caddy:2.8.4
-
cpe:2.3:a:caddyserver:caddy:2.9.0
-
cpe:2.3:a:caddyserver:caddy:2.9.1