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.
History

Sat, 07 Mar 2026 16:45:00 +0000

Type Values Removed Values Added
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.
Title Caddy: vars_regexp double-expands user input, leaking env vars and files
Weaknesses CWE-200
CWE-74
References
Metrics cvssV4_0

{'score': 5.5, 'vector': '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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-03-07T16:28:26.894Z

Reserved: 2026-03-05T21:27:35.341Z

Link: CVE-2026-30852

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-03-07T17:15:52.733

Modified: 2026-03-07T17:15:52.733

Link: CVE-2026-30852

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

No data.