Vulnerability · CVE-2026-45692
Caddy is an extensible server platform that uses TLS by default.
Published May 13, 2026 · catalog updated Oct 24, 2026 · Caddy is an extensible
Last checked Nov 1, 2026. A connected source was read within the last 7 days.
Check if you run it
No confirmed exploitation is on record for CVE-2026-45692. EPSS is 0.24%. Act only if a listed version of Caddy is an extensible is installed.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (Caddy is an extensible).
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- Severity
- Medium5.4
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.24%
- Remediation
- Advisory link
- Affected products
- Debian:12 caddy · Debian:13 caddy · Debian:14 caddy · go github.com/caddyserver/caddy/v2
this report is not about a normal textual prefix-expansion case. The issue here is that the authorization layer and the traversal layer do **not agree on what object the path refers to**. In this case, a path authorized for one config object is accepted, but then resolves to a **different config object** during traversal. That is why I believe this is a real authorization bug in Caddy's own source code, not merely a documented prefix-match edge case. ## AI Disclosure I used an LLM to help review the code, reason about the behavior, and help draft this report. I manually reproduced and validated the issue locally, confirmed the relevant source paths, and captured the requests and responses below. ## Summary A remote admin client certificate restricted to the following path: can still read and modify a different array element by requesting: /config/apps/http/servers/srv/routes/01 This happens because: - the authorization layer uses string prefix matching - the /config traversal layer parses array indices numerically using strconv.Atoi() So: - authorization sees /.../01 as matching /.../0 - traversal resolves 01 to numeric index 1 - the request therefore targets routes[1], not routes[0] This is not just a prefix-match quirk. It is an authorization-to-object mismatch. ## Why I Believe This Is In Scope This is a security bug in Caddy's own code: - no browser behavior is involved - no dependency bug is involved - no external system compromise is involved - no third-party software compromise is required - no unsafe content hosting or file upload is required This is also not just “an unsafe configuration”. The configuration explicitly attempts to limit access to one specific path: /config/apps/http/servers/srv/routes/0 But Caddy enforces a policy that ends up granting access to a different object (routes[1]) because of how traversal interprets the final path component. In short: - configured authorization target: routes[0] - actual accessed object: routes[1] That difference
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- Debian:12 caddy0 → 2.6.2-5+deb12u1
- Debian:13 caddy0 → 2.6.2-12+deb13u1
- Debian:14 caddy0 → 2.11.4-1
- go github.com/caddyserver/caddy/v2v2.4.0 and later
How to fix CVE-2026-45692
Upgrade
CVE-2026-45692 lists a fix boundary at 2.6.2-5+deb12u1. Compare the installed build with that boundary before you change production.
Version check
Fixed in 2.6.2-5+deb12u1 · 3 other ranges on the advisory
Advisory
Open the cve_org record and follow its fix.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2026-45692. EPSS is 0.24%. Act only if a listed version of Caddy is an extensible is installed.
Which versions are affected?
Compare what you have installed with 0 → 2.6.2-5+deb12u1, 0 → 2.6.2-12+deb13u1, 0 → 2.11.4-1, v2.4.0 and later. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
CWE-187; CWE-863: Incorrect Authorization. EPSS 0.24%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Technology hubs
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Jun 23, 2026 · OpenSSF OSV / OSV Scanner
Detected
Caddy is an extensible server platform that uses TLS by default. From 2.4.0 until 2.11.3, the authorization layer and the /config traversal layer do not agree on what object the path refers to. In this case, a path authorized for one config object is accepted, but then resolves to a different config object during traversal. This happens because the authorization layer uses string prefix matching a
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Fix available
caddy fixed in 2.6.2-5+deb12u1; caddy fixed in 2.6.2-12+deb13u1; caddy fixed in 2.11.4-1
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Fix available
caddy fixed in 2.6.2-5+deb12u1
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Fix available
caddy fixed in 2.6.2-12+deb13u1
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Fix available
caddy fixed in 2.11.4-1
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Updated
Caddy is an extensible server platform that uses TLS by default. From 2.4.0 until 2.11.3, the authorization layer and the /config traversal layer do not agree on what object the path refers to. In this case, a path authorized for one config object is accepted, but then resolves to a different config object during traversal. This happens because the authorization layer uses string prefix matching a
Sources
- CVE.orgVulnerability recordCVE-2026-45692
Official CVE identifier
cve.org - Maintainer security tabsVendor advisoryGHSA-x5w9-xh9r-mvfc
this report is not about a normal textual prefix-expansion case. The issue here is that the authorization layer and the traversal layer do **not agree on what object the path refers to**. In this case, a path authorized for one config object is accepted, but then resolves to a **different config object** during traversal. That is why I believe this is a real authorization bug in Caddy's own source
github.com - OpenSSF OSV / OSV ScannerPackage advisoryDEBIAN-CVE-2026-45692osv.dev
- Trivy Vulnerability DBPackage advisoryDEBIAN-CVE-2026-45692
Caddy is an extensible server platform that uses TLS by default. From 2.4.0 until 2.11.3, the authorization layer and the /config traversal layer do not agree on what object the path refers to. In this case, a path authorized for one config object is accepted, but then resolves t
osv.dev
References
Freshness
Last verified in this catalog Oct 31, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.
- Maintainer security tabsNov 1, 2026
- CVE.orgOct 24, 2026
- Trivy Vulnerability DBOct 24, 2026
- OpenSSF OSV / OSV ScannerOct 24, 2026