Read the docs
TI-2026-34129 Aliases CVE-2026-46415GHSA-3h23-rrpc-3p87

Caddy Defender trusted proxy client IP bypass

Priority MEDIUM 41CWE-284Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
High · Low · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-284.

Summary

The Caddy Defender plugin is a middleware for Caddy that allows users to block or manipulate requests based on the client's IP address. Prior to version 0.10.1, Caddy Defender used `r.RemoteAddr` when evaluating whether a request should be blocked. `RemoteAddr` is the address of the immediate peer connected to Caddy. In deployments where Caddy is behind a trusted proxy, CDN, or load balancer, the immediate peer is usually the proxy, not the original client. Caddy resolves the original client address into its `client_ip` request variable after applying the configured `trusted_proxies` policy, but Defender did not use that value. As a result, clients from blocked IP ranges could bypass Defender when accessing Caddy through a trusted proxy whose own IP address was not blocked. This affects deployments that use Defender behind trusted proxies and expect it to enforce blocking based on the real client IP. The issue is fixed in version 0.10.1 by making Defender prefer Caddys resolved `client_ip` request variable when it is available. Defender falls back to `RemoteAddr` only when Caddy has not provided a resolved client IP. There is no complete workaround in affected Defender versions for deployments that rely on Caddy's trusted proxy client IP resolution. Until upgrading, affected users should enforce equivalent IP blocking at the trusted proxy, CDN, load balancer, firewall, or other edge layer before traffic reaches Caddy. Deployments where Caddy receives traffic directly from clients, without an intermediate trusted proxy, are not affected by this bypass.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00234 14th percentileScored 2026-11-07
Fix Fixed caddy-defender (JasonLovesDoggo): 0.10.1pkg.jsn.cam/caddy-defender (Go): 0.10.1

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
JasonLovesDoggocaddy-defenderbefore 0.10.10.10.1Patch availableCNA
—pkg.jsn.cam/caddy-defender (Go)before 0.10.10.10.1Patch availableGHSA-3h23-rrpc-3p87
  • caddy-defender VendorJasonLovesDoggo Affected before 0.10.1 Fixed in 0.10.1 Patch available CNA
  • pkg.jsn.cam/caddy-defender (Go) Vendor— Affected before 0.10.1 Fixed in 0.10.1 Patch available GHSA-3h23-rrpc-3p87

Remediation

  • Fix · CNA caddy-defender (JasonLovesDoggo) Fixed in 0.10.1
  • Fix · GHSA-3h23-rrpc-3p87 pkg.jsn.cam/caddy-defender (Go) Fixed in 0.10.1 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-46415
  2. 2026-10-03 Alias added: GHSA-3h23-rrpc-3p87

References

  • TI-2025-20256 Goroutine Leak in Abacus SSE Implementation CVSS 3.1HIGH 7.5

Sources