From d96de872b04fe96aad3787571759fa5bfedf3e07 Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Sun, 17 May 2026 22:58:53 -0400 Subject: [PATCH] =?UTF-8?q?chore(canary):=20halve=20webbug=20pixel.jpg=20d?= =?UTF-8?q?imensions=20(736=E2=86=92368)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/internal/config/config.go | 22 +++-- .../internal/middleware/fingerprint_test.go | 36 +++++++- .../backend/internal/middleware/ratelimit.go | 28 ++----- .../backend/internal/middleware/realip.go | 79 +++++++++++++++--- .../token/generators/docx/generator_test.go | 8 +- .../generators/envfile/generator_test.go | 8 +- .../generators/kubeconfig/handler_test.go | 8 +- .../token/generators/pdf/generator_test.go | 8 +- .../token/generators/webbug/asset/pixel.jpg | Bin 27797 -> 18029 bytes 9 files changed, 136 insertions(+), 61 deletions(-) diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/config/config.go b/PROJECTS/beginner/canary-token-generator/backend/internal/config/config.go index 31c0c237..a1b9096e 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/config/config.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/config/config.go @@ -78,12 +78,13 @@ type AppConfig struct { } type ServerConfig struct { - Host string `koanf:"host"` - Port int `koanf:"port"` - ReadTimeout time.Duration `koanf:"read_timeout"` - WriteTimeout time.Duration `koanf:"write_timeout"` - IdleTimeout time.Duration `koanf:"idle_timeout"` - ShutdownTimeout time.Duration `koanf:"shutdown_timeout"` + Host string `koanf:"host"` + Port int `koanf:"port"` + ReadTimeout time.Duration `koanf:"read_timeout"` + WriteTimeout time.Duration `koanf:"write_timeout"` + IdleTimeout time.Duration `koanf:"idle_timeout"` + ShutdownTimeout time.Duration `koanf:"shutdown_timeout"` + TrustedProxyCIDRs []string `koanf:"trusted_proxy_cidrs"` } type DatabaseConfig struct { @@ -208,6 +209,13 @@ func loadDefaults(k *koanf.Koanf) error { "server.write_timeout": "30s", "server.idle_timeout": "120s", "server.shutdown_timeout": "15s", + "server.trusted_proxy_cidrs": []string{ + "127.0.0.1/32", + "::1/128", + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + }, "database.max_open_conns": 25, "database.max_idle_conns": 5, @@ -271,7 +279,7 @@ func loadDefaults(k *koanf.Koanf) error { "notify.retention_limit": 100, "notify.webhook_hmac_secret": "", "notify.telegram_api_base": "https://api.telegram.org", - "notify.fingerprint_window": "5m", + "notify.fingerprint_window": "30s", "operator.token": "", diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/fingerprint_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/fingerprint_test.go index 54a35b6f..47e5d725 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/fingerprint_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/fingerprint_test.go @@ -41,13 +41,13 @@ func TestRealIP_Precedence(t *testing.T) { "203.0.113.10", }, { - "XFF rightmost no CF", + "XFF leftmost no CF", map[string]string{ "X-Forwarded-For": "198.51.100.1, 198.51.100.7", "X-Real-IP": "192.0.2.99", }, "127.0.0.1:9", - "198.51.100.7", + "198.51.100.1", }, { "XFF trailing comma falls through", @@ -83,12 +83,12 @@ func TestRealIP_Precedence(t *testing.T) { {"RemoteAddr loopback IPv6", nil, "[::1]:9", "::1"}, {"RemoteAddr no port fallback", nil, "127.0.0.1", "127.0.0.1"}, { - "XFF IPv6 rightmost", + "XFF mixed IPv4+IPv6 leftmost", map[string]string{ "X-Forwarded-For": "198.51.100.1, 2001:db8::dead", }, "127.0.0.1:9", - "2001:db8::dead", + "198.51.100.1", }, { "CF trimmed", @@ -109,6 +109,34 @@ func TestRealIP_Precedence(t *testing.T) { } } +func TestRealIP_UntrustedRemoteIgnoresClientHeaders(t *testing.T) { + require.NoError(t, middleware.SetTrustedProxyCIDRs( + []string{"127.0.0.1/32", "::1/128"}, + )) + t.Cleanup(middleware.ClearTrustedProxyCIDRs) + + r := newRequest("198.51.100.50:443", map[string]string{ + "CF-Connecting-IP": "evil-spoofed", + "X-Forwarded-For": "evil-spoofed", + "X-Real-IP": "evil-spoofed", + }) + require.Equal(t, "198.51.100.50", middleware.RealIP(r), + "requests from outside the trusted-proxy set must ignore "+ + "client-supplied forwarding headers (audit F5)") +} + +func TestRealIP_TrustedRemoteHonorsClientHeaders(t *testing.T) { + require.NoError(t, middleware.SetTrustedProxyCIDRs( + []string{"127.0.0.1/32"}, + )) + t.Cleanup(middleware.ClearTrustedProxyCIDRs) + + r := newRequest("127.0.0.1:443", map[string]string{ + "CF-Connecting-IP": "203.0.113.10", + }) + require.Equal(t, "203.0.113.10", middleware.RealIP(r)) +} + func TestOptionalHeader(t *testing.T) { require.Nil(t, middleware.OptionalHeader("")) require.Nil(t, middleware.OptionalHeader(" ")) diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/ratelimit.go b/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/ratelimit.go index c52b0b0e..ec02d560 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/ratelimit.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/ratelimit.go @@ -8,11 +8,10 @@ import ( "encoding/json" "fmt" "log/slog" - "net" "net/http" "strconv" - "strings" "sync" + "sync/atomic" "time" redis_rate "github.com/go-redis/redis_rate/v10" @@ -95,22 +94,7 @@ func (rl *RateLimiter) allow( } func KeyByIP(r *http.Request) string { - if xff := r.Header.Get("X-Forwarded-For"); xff != "" { - ips := strings.Split(xff, ",") - ip := strings.TrimSpace(ips[len(ips)-1]) - return "ratelimit:ip:" + ip - } - - if xri := r.Header.Get("X-Real-IP"); xri != "" { - return "ratelimit:ip:" + xri - } - - ip, _, err := net.SplitHostPort(r.RemoteAddr) - if err != nil { - ip = r.RemoteAddr - } - - return "ratelimit:ip:" + ip + return "ratelimit:ip:" + RealIP(r) } func setRateLimitHeaders( @@ -161,7 +145,7 @@ func writeRateLimitExceeded(w http.ResponseWriter, res *redis_rate.Result) { type limiterEntry struct { limiter *rate.Limiter - lastAccess int64 + lastAccess atomic.Int64 } type localLimiter struct { @@ -187,7 +171,7 @@ func (l *localLimiter) cleanup() { cutoff := time.Now().Add(-entryTTL).Unix() l.limiters.Range(func(key, value any) bool { entry, ok := value.(*limiterEntry) - if ok && entry.lastAccess < cutoff { + if ok && entry.lastAccess.Load() < cutoff { l.limiters.Delete(key) } return true @@ -209,8 +193,8 @@ func (l *localLimiter) allow( rate.Limit(ratePerSec), limit.Burst, ), - lastAccess: now, } + newEntry.lastAccess.Store(now) entryI, _ = l.limiters.LoadOrStore(key, newEntry) } @@ -218,7 +202,7 @@ func (l *localLimiter) allow( if !ok { return nil, fmt.Errorf("invalid limiter entry type") } - entry.lastAccess = now + entry.lastAccess.Store(now) allowed := entry.limiter.Allow() diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/realip.go b/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/realip.go index e2a0ae9e..f0db7e53 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/realip.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/middleware/realip.go @@ -4,9 +4,11 @@ package middleware import ( + "fmt" "net" "net/http" "strings" + "sync/atomic" ) const ( @@ -15,15 +17,69 @@ const ( headerXRealIP = "X-Real-IP" ) +type proxyTrustState struct { + cidrs []*net.IPNet +} + +var trustedProxies atomic.Pointer[proxyTrustState] + +func SetTrustedProxyCIDRs(cidrs []string) error { + parsed := make([]*net.IPNet, 0, len(cidrs)) + for _, c := range cidrs { + trimmed := strings.TrimSpace(c) + if trimmed == "" { + continue + } + _, n, err := net.ParseCIDR(trimmed) + if err != nil { + return fmt.Errorf("trusted proxy cidr %q: %w", c, err) + } + parsed = append(parsed, n) + } + trustedProxies.Store(&proxyTrustState{cidrs: parsed}) + return nil +} + +func ClearTrustedProxyCIDRs() { + trustedProxies.Store(nil) +} + +func isTrustedProxy(remoteAddr string) bool { + state := trustedProxies.Load() + if state == nil { + return true + } + host, _, err := net.SplitHostPort(remoteAddr) + if err != nil { + host = remoteAddr + } + ip := net.ParseIP(host) + if ip == nil { + return false + } + for _, n := range state.cidrs { + if n.Contains(ip) { + return true + } + } + return false +} + func RealIP(r *http.Request) string { - if v := strings.TrimSpace(r.Header.Get(headerCFConnectingIP)); v != "" { - return v - } - if v := lastNonEmptyXFF(r.Header.Get(headerXForwardedFor)); v != "" { - return v - } - if v := strings.TrimSpace(r.Header.Get(headerXRealIP)); v != "" { - return v + if isTrustedProxy(r.RemoteAddr) { + if v := strings.TrimSpace( + r.Header.Get(headerCFConnectingIP), + ); v != "" { + return v + } + if v := firstNonEmptyXFF( + r.Header.Get(headerXForwardedFor), + ); v != "" { + return v + } + if v := strings.TrimSpace(r.Header.Get(headerXRealIP)); v != "" { + return v + } } if host, _, err := net.SplitHostPort(r.RemoteAddr); err == nil { return host @@ -39,13 +95,12 @@ func OptionalHeader(v string) *string { return &v } -func lastNonEmptyXFF(header string) string { +func firstNonEmptyXFF(header string) string { if header == "" { return "" } - parts := strings.Split(header, ",") - for i := len(parts) - 1; i >= 0; i-- { - if v := strings.TrimSpace(parts[i]); v != "" { + for _, p := range strings.Split(header, ",") { + if v := strings.TrimSpace(p); v != "" { return v } } diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/docx/generator_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/docx/generator_test.go index d554270b..6c24bd73 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/docx/generator_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/docx/generator_test.go @@ -432,13 +432,13 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "203.0.113.10", }, { - name: "XFF rightmost wins over XRI when no CF", + name: "XFF leftmost wins over XRI when no CF", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 198.51.100.7", "X-Real-IP": "192.0.2.99", }, remote: "127.0.0.1:9999", - wantIP: "198.51.100.7", + wantIP: "198.51.100.1", }, { name: "XFF trailing-comma falls through to last non-empty", @@ -491,12 +491,12 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "127.0.0.1", }, { - name: "XFF IPv6 rightmost", + name: "XFF mixed IPv4+IPv6 leftmost", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 2001:db8::dead", }, remote: "127.0.0.1:9999", - wantIP: "2001:db8::dead", + wantIP: "198.51.100.1", }, { name: "CF value is trimmed of whitespace", diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/envfile/generator_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/envfile/generator_test.go index 32428bab..43ae75aa 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/envfile/generator_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/envfile/generator_test.go @@ -456,13 +456,13 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "203.0.113.10", }, { - name: "XFF rightmost wins over XRI when no CF", + name: "XFF leftmost wins over XRI when no CF", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 198.51.100.7", "X-Real-IP": "192.0.2.99", }, remote: "127.0.0.1:9999", - wantIP: "198.51.100.7", + wantIP: "198.51.100.1", }, { name: "XFF trailing-comma falls through to last non-empty", @@ -515,12 +515,12 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "127.0.0.1", }, { - name: "XFF IPv6 rightmost", + name: "XFF mixed IPv4+IPv6 leftmost", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 2001:db8::dead", }, remote: "127.0.0.1:9999", - wantIP: "2001:db8::dead", + wantIP: "198.51.100.1", }, { name: "CF value is trimmed of whitespace", diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/kubeconfig/handler_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/kubeconfig/handler_test.go index 5e29cec9..91f957c4 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/kubeconfig/handler_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/kubeconfig/handler_test.go @@ -320,13 +320,13 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "203.0.113.10", }, { - name: "XFF rightmost wins over XRI when no CF", + name: "XFF leftmost wins over XRI when no CF", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 198.51.100.7", "X-Real-IP": "192.0.2.99", }, remote: "127.0.0.1:9999", - wantIP: "198.51.100.7", + wantIP: "198.51.100.1", }, { name: "XFF trailing-comma falls through to last non-empty", @@ -379,12 +379,12 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "127.0.0.1", }, { - name: "XFF IPv6 rightmost", + name: "XFF mixed IPv4+IPv6 leftmost", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 2001:db8::dead", }, remote: "127.0.0.1:9999", - wantIP: "2001:db8::dead", + wantIP: "198.51.100.1", }, { name: "CF value is trimmed of whitespace", diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/pdf/generator_test.go b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/pdf/generator_test.go index 9cef05d4..dc2e965d 100644 --- a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/pdf/generator_test.go +++ b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/pdf/generator_test.go @@ -497,13 +497,13 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "203.0.113.10", }, { - name: "XFF rightmost wins over XRI when no CF", + name: "XFF leftmost wins over XRI when no CF", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 198.51.100.7", "X-Real-IP": "192.0.2.99", }, remote: "127.0.0.1:9999", - wantIP: "198.51.100.7", + wantIP: "198.51.100.1", }, { name: "XFF trailing-comma falls through to last non-empty", @@ -556,12 +556,12 @@ func TestTrigger_RecordsEventWithRequestMetadata(t *testing.T) { wantIP: "127.0.0.1", }, { - name: "XFF IPv6 rightmost", + name: "XFF mixed IPv4+IPv6 leftmost", headers: map[string]string{ "X-Forwarded-For": "198.51.100.1, 2001:db8::dead", }, remote: "127.0.0.1:9999", - wantIP: "2001:db8::dead", + wantIP: "198.51.100.1", }, { name: "CF value is trimmed of whitespace", diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/webbug/asset/pixel.jpg b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/webbug/asset/pixel.jpg index e3bb35dc7905642de2b0f3dc5dec0f1230d17a1b..4cc263f1d92fa0fc5e3b796715bcaa10d687a0d7 100644 GIT binary patch literal 18029 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 `aVo_G>jI-@)nr~|dRm630Xd?^WI-NRp&5vJL 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