CVE-2026-46415
HighCVSS 8.2Exploitation Probability (EPSS)
Low risk6th percentile - higher than 6% of all known CVEs
Summary
The Caddy Defender plugin before version 0.10.1 used `r.RemoteAddr` instead of the resolved client IP (`client_ip`) for request blocking. In deployments behind a trusted proxy, CDN, or load balancer, `RemoteAddr` points to the proxy's address, allowing attackers from blocked IP ranges to bypass the blocking rules.
Risk Assessment
Organizations using Caddy Defender behind a trusted proxy are at risk of IP blocking bypass, potentially leading to unauthorized access, DDoS attacks, or other threats that the plugin was intended to mitigate.
Recommendation
Upgrade Caddy Defender to version 0.10.1 or later immediately. Until upgraded, enforce equivalent IP blocking at the trusted proxy, firewall, or other edge layer before traffic reaches Caddy.
Related vulnerabilities
- CVE-2026-79687Critical
Dell PowerStore SDNAS contains a Missing Authentication for Critical Function vulnerability. An unauthenticated attacker with remote access could exploit this, leading to filesystem access.
- CVE-2026-18931Critical
Use of Hard-coded Credentials vulnerability in Talassoft Industrial Management Software allows retrieval of embedded sensitive data. Affects versions from V.4 before V.16.
- CVE-2026-78012Critical
An issue in the NetStaX EtherNet/IP Stack prior to v5.6.1 could allow a large Class 3 explicit-message request to exceed the application-side receive buffer without error. This could result in memory corruption, device crash, or remote attack vector.
- CVE-2026-9621Critical
A denial-of-service issue exists in RSLinx Classic due to improper handling of a malformed packet. A crafted CIP packet can crash the service, requiring restart.
- CVE-2026-18808Critical
Improper Control of Generation of Code ('Code Injection') vulnerability in KIO (Klemsan Internet Objects) allows code injection. Affects versions before v1.9.
- CVE-2026-18210Critical
Improper neutralization of special elements in an SQL command ('SQL injection') vulnerability in Products's Store allows SQL injection. Affects versions before 030631b2.
- CVE-2026-84149Critical
This vulnerability exists in the ERP system due to exposure of repository information through a publicly accessible .git directory. An unauthenticated attacker could retrieve repository metadata and files, potentially reconstructing the application's source code.
- CVE-2026-84148Critical
This vulnerability exists in the ERP system due to improper authentication and authorization controls in the API endpoint. An unauthenticated attacker could manipulate parameters, leading to exposure of sensitive information of other users.
- CVE-2026-84147Critical
This vulnerability exists in the ERP system due to improper authentication controls and inadequate file type validation at the API endpoint. An unauthenticated attacker could upload arbitrary files to a web accessible directory, potentially executing arbitrary code and compromising the system.
- CVE-2026-84121Critical
Sandbox escape vulnerability due to use-after-free in the DOM: Security component. Fixed in Firefox 155, Firefox ESR 115.40, 140.15, and 153.2.
Original NVD description (English source)
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.

