Safeguard
Vulnerability Analysis•

CVE-2026-27588: Caddy Host Matcher Case Bypass

CVE-2026-27588 makes Caddy host matching case sensitive when a route lists more than 100 hosts, allowing bypass by Host header casing. Upgrade to v2.11.1.

Safeguard Security Team
2 min read

CVE-2026-27588 is a critical flaw (CVSS 9.1) in Caddy. When a host matcher lists more than 100 entries, matching becomes case sensitive, so changing the casing of the Host header can bypass host based routing and its access controls. Upgrade to Caddy 2.11.1 or later.

What's affected

Caddy before 2.11.1. The documented behaviour is a case insensitive host match. The advisory says a large host list, meaning over 100 entries, switches to an optimised path that compares exactly.

GitHub advisories for these Caddy issues list v2.11.0 as the patched version, but the release notes say the first 2.11 release was published as v2.11.1, with no code changes from v2.11.0 other than a CI job. Plan on v2.11.1 or later.

The record lists KEV as false.

How to check if you're exposed

Check the version and count entries in each host matcher.

caddy version
caddy adapt --config /etc/caddy/Caddyfile --pretty > caddy.json

In the adapted JSON, look at every host matcher and count its entries. Any route with 101 or more exact host names is in scope. Large multi tenant setups with a long list of customer domains are the typical case.

What to do now

  1. Upgrade to Caddy 2.11.1 or later.
  2. Find routes with long host lists, and note which ones attach access controls to the match.
  3. Where possible, split very long host lists into smaller route groups until you have patched.
  4. Do not let host header matching be your only authorization step for sensitive routes.
  5. Review logs for Host headers in unusual casing.

Why it matters

This is another CWE-178 case, case handling mistakes in matching. The advisory describes a fast path using binary search with a plain string comparison, and a fallback loop that stops early for large lists, so the case insensitive comparison never runs.

The lesson is that an optimisation changed behaviour past a size threshold. Nothing looks wrong when you test with ten hosts. At 101 hosts the semantics change, and routing and any rules tied to it follow.

Quick check

Why does the number 100 matter?

The advisory says the optimised matching path is used when the host list has more than 100 entries, and that path compares case sensitively.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.