Code Injection in github.com/caddyserver/caddy/v2 (CVE-2026-77281)
Summary
Code injection in github.com/caddyserver/caddy/v2 (CVE-2026-77281). Risk of unauthorized operations or information disclosure. Exploitable via buildQueryString. Mitigation: upgrade to 2.11.4 or later.
Original description
The description as published by the source.
Caddy v2.11.3 — Three vulnerabilities in handler/placeholder layer
Tested against: caddy:2.11.3 (official Docker image, SHA verified at runtime)
Reproduction environment: Docker Desktop 4.73.1 / Engine 29.4.3 on Windows 10 host, isolated containers, no network egress required for any of the exploits
This advisory bundles three independent issues discovered together during a source review of the placeholder/replacer layer. Each issue has been reproduced end-to-end against the unmodified caddy:2.11.3 image with the minimal Caddyfile that the documentation suggests for the affected feature.
Issue 1: Rewrite handler — placeholder double-expansion enables env var / file disclosure
File: modules/caddyhttp/rewrite/rewrite.go:215-249 and buildQueryString at 327
Class: CWE-94 (Code Injection), same bug class as CVE-2026-30852 (vars_regexp)
Severity: Low (requires operator config with trailing ? in rewrite URI)
Root cause
When the operator's rewrite URI template:
- Contains a placeholder that resolves to request data (e.g.
{http.request.header.X-Foo}), AND - Ends with a literal
?(with empty query side)
…then the bytes produced by the first Replacer pass (which include attacker-controlled header values) are fed through buildQueryString, which runs a second Replacer pass and resolves any placeholders the attacker injected.
// rewrite.go (abridged)
newPath = repl.ReplaceAll(path, "") // pass 1 — he…
Source: NIST National Vulnerability Database NVD GitHub Advisory
Auto-generated summary
Assembled by SecPulse from the source data (CVSS, CWE, affected versions) using templates — no AI involved. Check the original description and references below for exact details.
A vulnerability tracked as CVE-2026-77281 has been found in github.com/caddyserver/caddy/v2.
Attackers can target a specific entry point like buildQueryString over the network to misuse the product.
Risk of unauthorized operations or information disclosure. CVSS score: 6.5/10.
What to do: upgrade github.com/caddyserver/caddy/v2 to 2.11.4 or later.
If unsure, ask your IT team or search "github.com/caddyserver/caddy/v2 CVE-2026-77281" on the vendor's site.
CVE-2026-77281 (github.com/caddyserver/caddy/v2) — CWE-94 / CVSS v3 6.5
Attack vector: remote (network-reachable) / unauthenticated / no user interaction
Attack surface: buildQueryString / vars_regexp / rewrite / rewrite_test.go
Patched: 2.11.4 — apply immediately
Plan: 1) Audit SBOM/dependencies, 2) Stage→prod upgrade, 3) Add WAF/proxy monitoring on affected endpoints, 4) Hunt IOCs in logs.
Refs: see the GHSA / vendor advisory / patched release linked on this page.
Arbitrary code execution (CWE-94) exists in github.com/caddyserver/caddy/v2. Attackers reach the vulnerable code path via buildQueryString without authentication.
Check the vendor advisory for the affected versions of github.com/caddyserver/caddy/v2. Attack surface: buildQueryString / vars_regexp / rewrite / rewrite_test.go.
Severity: Medium (CVSS 6.5/10). Risk of unauthorized operations or information disclosure.
Update to 2.11.4.
Until the patch is applied: disable the affected feature, apply WAF rules, or restrict access via network ACLs.
Search webserver/proxy logs for unusual request patterns matching this CVE's known IOCs. Run grep -r 'github.com/caddyserver/caddy/v2' . against your dependency files (package-lock.json, requirements.txt, go.sum) to find affected services.
Response actions
Concrete steps and command examples for SOC/SRE teams to execute in order
-
1Identify exposure identify
grep -r 'github.com/caddyserver/caddy/v2' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
github.com/caddyserver/caddy/v2を grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade github.com/caddyserver/caddy/v2 to 2.11.4ステージング環境で 2.11.4 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Affected packages
Fix status by distribution
Fixed packages published by each distribution for this CVE
- Debian DEBIAN-CVE-2026-77281 caddy
References
- advisory nvd.nist.gov
- package github.com
- web github.com
- web github.com
- web github.com
- web github.com
- web github.com