CVE-2026-30852
Caddy: vars_regexp double-expands user input, leaking env vars and files
- State
- Published
- Severity
- 5.5 Medium
- Published
- Mar 7, 2026
- Updated
- Mar 9, 2026
- Reserved
- Mar 5, 2026
Description
Caddy is an extensible server platform that uses TLS by default. From version 2.7.5 to before version 2.11.2, the vars_regexp matcher in vars.go:337 double-expands user-controlled input through the Caddy replacer. When vars_regexp matches against a placeholder like {http.request.header.X-Input}, the header value gets resolved once (expected), then passed through repl.ReplaceAll() again (the bug). This means an attacker can put {env.DATABASE_URL} or {file./etc/passwd} in a request header and the server will evaluate it, leaking environment variables, file contents, and system info. This issue has been patched in version 2.11.2.
Scores
| CVSS | Score | Vector | Source |
|---|---|---|---|
| 4.0 | 5.5 Medium | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P | GitHub_M |
Weaknesses
Affected Products
| Product | Versions |
|---|---|
caddycaddyserver |
|
References
Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.