CVE-2026-27590

Name
CVE-2026-27590
Description
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.
NVD Severity
unknown
Other trackers
Mailing lists
Exploits
Forges
GitHub (code, issues), Aports (code, issues)

References

Type URI
security-advisories@github.com https://github.com/caddyserver/caddy/releases/tag/v2.11.1
security-advisories@github.com https://github.com/caddyserver/caddy/security/advisories/GHSA-5r3v-vc8m-m96g
security-advisories@github.com https://github.com/php/frankenphp/security/advisories/GHSA-g966-83w7-6w38

Match rules

CPE URI Source package Min version Max version
cpe:2.3:a:caddyserver:caddy:*:*:*:*:*:*:*:* caddy >= None < 2.11.1

Vulnerable and fixed packages

Source package Branch Version Maintainer Status
caddy edge-community 2.11.1-r0 Michał Polański <michal@polanski.me> fixed
caddy edge-community 2.10.2-r4 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.2-r3 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.2-r2 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.2-r1 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.2-r0 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.0-r3 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.0-r2 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.0-r1 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.10.0-r0 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.9.1-r4 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.9.1-r3 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.9.1-r2 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.9.1-r1 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.9.1-r0 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.8.4-r3 Michał Polański <michal@polanski.me> possibly vulnerable
caddy edge-community 2.8.4-r2 Michał Polański <michal@polanski.me> possibly vulnerable
caddy 3.23-community 2.10.2-r5 Michał Polański <michal@polanski.me> possibly vulnerable
caddy 3.23-community 2.10.2-r4 Michał Polański <michal@polanski.me> possibly vulnerable
caddy 3.23-community 2.10.2-r3 Michał Polański <michal@polanski.me> possibly vulnerable
caddy 3.23-community 2.10.2-r2 Michał Polański <michal@polanski.me> possibly vulnerable