🛡️ CVE-2026-27589 — caddy

🟡 CVSS 6.5 — Medium ⚠️ Exploit Public CWE-352 NVD
6.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Caddy is vulnerable to cross-origin config application via local admin API /load

commit: e0f8d9b2047af417d8faf354b675941f3dac9891 (as-of 2026-02-04)

channel: GitHub security advisory (per SECURITY.md)

summary

The local caddy admin API (default listen 127.0.0.1:2019) exposes a state-changing POST /load endpoint that replaces the entire running configuration.

When origin enforcement is not enabled (enforce_origin not configured), the admin endpoint accepts cross-origin requests (e.g., from attacker-controlled web content in a victim browser) and applies an attacker-supplied JSON config. this can change the admin listener settings and alter HTTP server behavior without user intent.

Severity

Medium

Justification:

  • The attacker can apply an arbitrary caddy config (integrity impact) by driving a victim’s local admin API.
  • Exploitation requires a victim running caddy with the admin API enabled and visiting an attacker-controlled page (or otherwise issuing the request from an untrusted local client).

Affected component

  • caddyconfig/load.go: adminLoad.handleLoad (/load admin endpoint)
  • Pinned callsite: https://github.com/caddyserver/caddy/blob/e0f8d9b2047af417d8faf354b675941f3dac9891/caddyconfig/load.go#L73

Reproduction

Attachment: poc.zip (integration harness) with canonical and control runs.

```bash

unzip -q -o poc.zip -d poc

cd poc/poc-F-CADDY-ADMIN-LOAD-001

make test

```

Expected output (excerpt):

```

[CALLSITE_HIT]: adminLoad.handleLoad

[PROOF_MARKER]: http_code=200 admin_moved=true response_pwned=true

```

Control output (excerpt):

```

[NC_MARKER]: http_code=403 load_blocked=true admin_moved=false response_pwned=false

```

Impact

An attacker can replace the running caddy configuration via the local admin API. Depending on the deployed configuration/modules, this can:

  • Change admin listener settings (e.g., move the admin listener to a new address)
  • Change HTTP server behavior (e.g., alter routes/responses)

Suggested remediation

Ensure cross-origin web content cannot trigger POST /load on the local admin API by default, for example by:

  • Enabling origin enforcement by default for unsafe methods, and/or
  • Requiring an unguessable token for /load (and other state-changing admin endpoints).

[poc.zip](https://github.com/user-attachments/files/25079818/poc.zip)

[PR_DESCRIPTION.md](https://github.com/user-attachments/files/25079820/PR_DESCRIPTION.md)

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. A user must be tricked into taking some action. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality none, integrity high, availability none.

Weakness class

CVE-2026-27589 is classified as CWE-352: Cross-Site Request Forgery (CSRF). A state-changing request is accepted without proof it was intended, so another site can trigger it using the victim's session.

Affected software

CVE-2026-27589 is recorded against 2 packages.

  • caddy (fixed in 2.11.1)
  • github.com/caddyserver/caddy/v2

Timeline and source

Published on 24 February 2026 and last revised on 17 June 2026. A public exploit is known to exist, which raises the urgency of patching considerably. Record sourced from NVD.

References

github.com
github.com
github.com
github.com

CVE-2026-27589 on other distributions

Each distribution ships its own build and its own fixed version. Pick the one you run:

Details

Severity MEDIUM
CVSS Score 6.5
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
CWE CWE-352
Public Exploit ⚠️ Yes
Source NVD
Published 2026-02-24
Updated 2026-08-12
Modified 2026-06-17
Fix URL N/A

Affected Packages

Software From version Fixed in
caddy 2.11.1
github.com/caddyserver/caddy/v2

Similar Threats

Exploit Protection

Are you running caddy?

CVE-2026-27589 carries CVSS 6.5 Medium rating and a public exploit already exists. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.

Check My Site For CVE-2026-27589 →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2026