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.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-178",
"CWE-770",
"CWE-94"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77281.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.11.4"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "176b043b0104cee3f894023cd5a598ac29e404bb"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "v2.11.4",
"range": [
{
"fixed": "e2eee6a7fce366321294c9c2a79f3146891dcbdf"
}
],
"source": "REFERENCES_TAG"
}
]
}