Cyber Posture

CVE-2026-27590

CriticalPublic PoC

Published: 24 February 2026

Published
24 February 2026
Modified
25 February 2026
KEV Added
Patch
CVSS Score 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS Score 0.0024 47.7th percentile
Risk Priority 20 60% EPSS · 20% KEV · 20% CVSS

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…

more

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.

Mitigating Controls (NIST 800-53 r5)AI

prevent

Directly mitigates the vulnerability by requiring timely patching of Caddy to version 2.11.1 or later, which fixes the unsafe FastCGI Unicode path splitting logic.

prevent

Addresses the improper input validation (CWE-20) by enforcing validation of request paths to prevent Unicode-induced byte index shifts leading to path confusion and unintended file execution.

detect

Vulnerability scanning detects the presence of CVE-2026-27590 in Caddy deployments, enabling proactive remediation before exploitation.

Security SummaryAI

CVE-2026-27590 is a high-severity vulnerability in Caddy, an extensible server platform that enables TLS by default, affecting versions prior to 2.11.1. The issue resides in Caddy's FastCGI path splitting logic, which calculates the split index based on a lowercased copy of the request path and then applies that byte index to the original path. This approach is unsafe for Unicode characters because Go's strings.ToLower() function can alter the UTF-8 byte length of certain characters, resulting in incorrect SCRIPT_NAME, SCRIPT_FILENAME, and PATH_INFO values. Consequently, this path confusion can cause a request containing .php to target and execute a different on-disk file than intended.

The vulnerability can be exploited by any unauthenticated remote attacker with network access to a vulnerable Caddy instance configured for FastCGI, as indicated by its CVSS 3.1 score of 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H). An attacker crafts a request path with .php and Unicode characters that, when lowercased, shift the byte index, directing the FastCGI backend to process an unintended file. In deployments with attacker-controllable file contents, such as file upload features, this enables unintended PHP execution on non-.php files, potentially leading to remote code execution (RCE) depending on the setup and backend configuration.

Mitigation requires upgrading to Caddy version 2.11.1 or later, which addresses the path splitting issue. Official advisories from the Caddy project (GHSA-5r3v-vc8m-m96g) and related projects like FrankenPHP (GHSA-g966-83w7-6w38) detail the fix, available in the release notes at the v2.11.1 tag. The vulnerability is linked to CWE-20 (Improper Input Validation) and CWE-180 (Incorrect Behavior Order).

Details

CWE(s)

Affected Products

caddyserver
caddy
≤ 2.11.1

MITRE ATT&CK Enterprise TechniquesAI

T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
Why these techniques?

CVE-2026-27590 is a vulnerability in the public-facing Caddy web server enabling unauthenticated remote exploitation via crafted requests leading to path confusion and potential RCE through unintended PHP execution.

Confidence: HIGH · MITRE ATT&CK Enterprise v19.0

References