Skip to content
Heist/ feed
MediumFix available

Caddy: rewrite placeholder re-expansion, unbounded body buffer DoS, and fileHidden case-sensitivity bypass

Type: advisorySource: OSV2 source records

# 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: 1. Contains a placeholder that resolves to request data (e.g. `{http.request.header.X-Foo}`), AND 2. 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. ```go // rewrite.go (abridged) newPath = repl.ReplaceAll(path, "") // pass 1 — header expanded if bef

Announced Group revision 1
Original source ↗

GHSA-j8px-rmrx-76h9

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-j8px-rmrx-76h9

github.com/caddyserver/caddy/v2

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
2.11.4

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0"
          },
          {
            "fixed": "2.11.4"
          }
        ]
      }
    ],
    "package": {
      "name": "github.com/caddyserver/caddy/v2",
      "purl": "pkg:golang/github.com/caddyserver/caddy/v2",
      "ecosystem": "Go"
    },
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-j8px-rmrx-76h9/GHSA-j8px-rmrx-76h9.json",
      "last_known_affected_version_range": "<= 2.11.3"
    }
  }
]
Related CVEs
CVE-2026-77281

Source reference: /aliases

CVE-2026-92284

Source reference: /aliases

CVE-2026-92700

Source reference: /aliases

Publisher severity

medium

Source reference: /severity/0/score

Event
#72924 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement

GO-2026-6512

Revision 2

Vulnerabilities in handler/placeholder layer in github.com/caddyserver/caddy

Rewrite placeholder re-expansion, unbounded body buffer DoS, and fileHidden case-sensitivity bypass in github.com/caddyserver/caddy

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GO-2026-6512

github.com/caddyserver/caddy/v2

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
2.11.4

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0"
          },
          {
            "fixed": "2.11.4"
          }
        ]
      }
    ],
    "package": {
      "name": "github.com/caddyserver/caddy/v2",
      "purl": "pkg:golang/github.com/caddyserver/caddy/v2",
      "ecosystem": "Go"
    },
    "database_specific": {
      "source": "https://vuln.go.dev/ID/GO-2026-6512.json"
    },
    "ecosystem_specific": {
      "imports": [
        {
          "path": "github.com/caddyserver/caddy/v2/modules/caddyhttp/rewrite",
          "symbols": [
            "Rewrite.Provision",
            "Rewrite.Rewrite",
            "Rewrite.ServeHTTP",
            "queryOpsReplacement.Provision"
          ]
        }
      ]
    }
  }
]
Related CVEs
CVE-2026-77281

Source reference: /aliases

CVE-2026-92284

Source reference: /aliases

CVE-2026-92700

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Linked CVE context

These ratings describe the referenced vulnerabilities and products. They are not a severity rating for every application using this dependency.

CVE-2026-77281 · Medium

github.com/caddyserver/caddy/v2

CVE-2026-92284 · Medium

github.com/caddyserver/caddy/v2

CVE-2026-92700 · Medium

github.com/caddyserver/caddy/v2

Event
#72925 · Revision 2
Added to Heist Feed
Publisher date
Read the original announcement