Caddy: rewrite placeholder re-expansion
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Denial of service, Code execution
- Confidentiality · integrity · availability
- Low · None · Low
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-770 and CWE-94.
Summary
Caddy is an extensible server platform that uses TLS by default. In version 2.11.3 and earlier, three configuration-dependent weaknesses affect the handler and placeholder layer. In modules/caddyhttp/rewrite/rewrite.go, Rewrite.Rewrite() can pass attacker-controlled replacement bytes through buildQueryString for a second placeholder expansion when a rewrite URI ends with a literal question mark, allowing injected environment or request-variable placeholders to disclose data and, when the file provider is registered, allowing injected file placeholders to disclose readable files. The issue is fixed in version 2.11.4.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| caddyserver | caddy | before 2.11.4 | 2.11.4 | Patch available | CNA |
| — | github.com/caddyserver/caddy/v2 (Go) | before 2.11.4 | 2.11.4 | Patch available | GHSA-j8px-rmrx-76h9 |
- caddy Vendorcaddyserver Affected before 2.11.4 Fixed in 2.11.4 Patch available CNA
- github.com/caddyserver/caddy/v2 (Go) Vendor— Affected before 2.11.4 Fixed in 2.11.4 Patch available GHSA-j8px-rmrx-76h9
CPE names Threatist (inferred) · 1
Inferred from how NVD named this product before; not given by a source.
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:caddyserver:caddy:*:*:*:*:*:*:*:* | — | — | caddyserver |
- cpe:2.3:a:caddyserver:caddy:*:*:*:*:*:*:*:* Versions — — ·caddyserver
Remediation
- Fix · CNA caddy (caddyserver) Fixed in 2.11.4
- Fix · GHSA-j8px-rmrx-76h9 github.com/caddyserver/caddy/v2 (Go) Fixed in 2.11.4 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-77281
- 2026-10-03 Alias added: GHSA-j8px-rmrx-76h9
References
Other 5
More caddyserver vulnerabilities
- TI-2023-23979 The HTTP/2 protocol allows a denial of service (server resource consumption) because… KEVCVSS 3.1HIGH 7.5
- TI-2026-21978 Improper input validation in caddyserver caddy CVSS 4.0HIGH 8.9
- TI-2026-21974 Caddy's mTLS client authentication silently fails open when CA certificate file is missing or malformed CVSS 4.0HIGH 8.8
- TI-2026-23680 Improper authentication in caddyserver caddy CVSS 3.1HIGH 8.8
- TI-2026-21976 Caddy: MatchHost becomes case-sensitive for large host lists (>100), enabling host-based route/auth bypass CVSS 4.0HIGH 7.7
- TI-2026-21975 Caddy: MatchPath %xx (escaped-path) branch skips case normalization, enabling path-based route/auth bypass CVSS 4.0HIGH 7.7
Sources
- CVE-2026-77281 · CVE Program
- CVE-2026-77281 · NVD
- FIRST EPSS
- GHSA-j8px-rmrx-76h9 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences