Summary
CVE-2026-45135 is a high-severity path confusion vulnerability in the FastCGI transport layer of Caddy, the extensible Go-based web server, affecting versions 2.7.0 through 2.11.2. A logic flaw in the splitPos() function causes Caddy to misidentify non-script files as executable FastCGI scripts when a request path contains non-ASCII bytes, which — in deployments where an attacker can write content to a file served via FastCGI — can be escalated to full Remote Code Execution (RCE). The vulnerability is fixed in Caddy 2.11.3.
Technical details
- Root cause: The
splitPos()function inmodules/caddyhttp/reverseproxy/fastcgi/fastcgi.gomisusesgolang.org/x/text/searchwith thesearch.IgnoreCaseoption when processing request paths that contain non-ASCII (multi-byte UTF-8) characters. Two distinct logic flaws in this fallback code path cause the computed split index to be applied incorrectly to the original path bytes. - Trigger condition: An attacker crafts a URL whose path contains a non-ASCII byte sequence that exploits either of the two fallback flaws, causing Caddy to derive a wrong
SCRIPT_NAME/SCRIPT_FILENAMEandPATH_INFO, misleading the FastCGI dispatcher into treating a non-.php(or othersplit_path-configured extension) file as an executable script. - Attack vector: Network-reachable; no authentication, privileges, or user interaction required. The attack complexity is rated High because exploitation additionally requires the attacker to control the content of a file accessible via the FastCGI handler — for example, through an application-level file upload feature, shared storage, or a writable directory.
- Impact: Where the file-content precondition is met, successful exploitation yields full Remote Code Execution on the underlying server — confidentiality, integrity, and availability are all fully compromised (C:H/I:H/A:H).
- Related vulnerability class: CVE-2026-27590 (fixed in 2.11.1) addressed an earlier, distinct variant of Unicode-unsafe path splitting in the same
splitPos()code path. CVE-2026-45135 represents a second set of flaws in the same function, confirming that this vulnerability class was not fully remediated by the prior patch.
Affected software
- Caddy (caddyserver/caddy) versions 2.7.0 through 2.11.2 (inclusive) — all deployments using the FastCGI reverse proxy transport (
php_fastcgiorreverse_proxywith the FastCGI transport).
Severity
- CVSS v3.1 Base Score: 8.1 (High)
- Vector:
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - CWEs: CWE-20 (Improper Input Validation), CWE-176 (Improper Handling of Unicode Encoding), CWE-178 (Improper Handling of Case Sensitivity)
Mitigation and recommended actions
- Immediate action — upgrade: Update Caddy to version 2.11.3 or later, which removes the unsafe
golang.org/x/text/searchfallback insplitPos()and treats any request path byte ≥utf8.RuneSelfas a non-match, fully mitigating both flaws. - If immediate patching is not possible: Restrict or disable FastCGI-backed endpoints that accept attacker-influenced file paths (e.g., disable file upload functionality, enforce strict directory write controls). As a network-level measure, limit inbound HTTP access to FastCGI-serving Caddy instances to known, trusted sources while the upgrade is prepared.
IONIX Status
The IONIX research team is tracking ongoing exploitation attempts and recommends immediate patching. Potentially affected assets are outlined in this post.

