{"id":"GHSA-9f4g-6whf-f3pv","revision":null,"records":[{"revision":"79b400f5f0434d31ba7e3090d1248ccf","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-72817","aliases":[],"title":"go-chi chi 0.9.0 before 5.3.0 IP Spoofing via X-Forwarded-For","description":"go-chi/chi versions 0.9.0 before 5.3.0 contains an IP spoofing vulnerability in the RealIP middleware, which resolves the request source IP (Request.RemoteAddr) using the first IP in the X-Forwarded-For header without validating trusted proxies. A malicious client can prepend a forged IP as the first value of the X-Forwarded-For header to spoof the request source IP, potentially bypassing access controls or falsifying request logs.","state":0,"publishedAt":"2026-08-14T11:35:28.824+00:00","modifiedAt":"2026-10-08T15:24:32.174+00:00","affected":[{"ecosystem":"Vendor product","name":"chi","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"go-chi\",\n                    \"product\": \"chi\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageURL\": \"pkg:golang/github.com/go-chi/chi\",\n                    \"versions\": [\n                        {\n                            \"version\": \"0.9.0\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\",\n                            \"lessThan\": \"5.3.0\"\n                        },\n                        {\n                            \"version\": \"5.3.0\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","score":6.9,"severity":"MEDIUM"},{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","score":6.5,"severity":"MEDIUM"}],"references":["https://github.com/go-chi/chi/security/advisories/GHSA-9g5q-2w5x-hmxf","https://www.vulncheck.com/advisories/go-chi-chi-before-ip-spoofing-via-x-forwarded-for"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-72817","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-72817","identifiers":["CVE-2026-72817"]},"retained":false,"historicalAffected":[]},{"revision":"5ab4ac905fd54ec48fbac2aa95cb763d","observedAt":"2026-11-09T15:08:45.221+00:00","statement":{"source":"euvd","id":"EUVD-2026-58632","aliases":["CVE-2026-72817","GHSA-9f4g-6whf-f3pv"],"title":"go-chi/chi versions 0.9.0 before 5.3.0 contains an IP spoofing vulnerability in the RealIP middleware, which resolves the request source IP (Request.RemoteAddr) using the first IP in the X-Forwarded-For header without validating trusted pro…","description":"go-chi/chi versions 0.9.0 before 5.3.0 contains an IP spoofing vulnerability in the RealIP middleware, which resolves the request source IP (Request.RemoteAddr) using the first IP in the X-Forwarded-For header without validating trusted proxies. A malicious client can prepend a forged IP as the first value of the X-Forwarded-For header to spoof the request source IP, potentially bypassing access controls or falsifying request logs.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","score":6.9,"severity":null}],"references":["https://github.com/go-chi/chi/security/advisories/GHSA-9g5q-2w5x-hmxf","https://www.vulncheck.com/advisories/go-chi-chi-before-ip-spoofing-via-x-forwarded-for"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-58632","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Aug 14, 2026, 11:35:28 AM","dateUpdated":"Oct 8, 2026, 3:24:32 PM"},"relatedAdvisories":[{"id":"openSUSE-SU-2026:11574-1","title":"hauler-2.0.3-1.1 on GA media","vulnerabilityIds":["CVE-2026-41888","CVE-2026-72817"]},{"id":"RHSA-2026:54420","title":"Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update","vulnerabilityIds":["CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"openSUSE-SU-2026:21918-1","title":"Security update for warewulf4","vulnerabilityIds":["CVE-2026-34986","CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"msrc_CVE-2026-72817","title":"go-chi chi 0.9.0 before 5.3.0 IP Spoofing via X-Forwarded-For","vulnerabilityIds":["CVE-2026-72817"]},{"id":"openSUSE-SU-2026:11578-1","title":"trivy-0.74.0-1.1 on GA media","vulnerabilityIds":["CVE-2026-72817"]},{"id":"openSUSE-SU-2026:21645-1","title":"Security update for trivy","vulnerabilityIds":["CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"openSUSE-SU-2026:11591-1","title":"golang-github-v2fly-v2ray-core-5.53.0-1.1 on GA media","vulnerabilityIds":["CVE-2026-72817"]},{"id":"openSUSE-SU-2026:21653-1","title":"Security update for v2ray-core","vulnerabilityIds":["CVE-2026-27017","CVE-2026-39821","CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"RHSA-2026:49718","title":"Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update","vulnerabilityIds":["CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"openSUSE-SU-2026:21793-1","title":"Security update for hauler","vulnerabilityIds":["CVE-2026-37236","CVE-2026-41178","CVE-2026-41888","CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"openSUSE-SU-2026:21670-1","title":"Security update for cloudflared","vulnerabilityIds":["CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"RHSA-2026:49732","title":"Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update","vulnerabilityIds":["CVE-2026-72815","CVE-2026-72816","CVE-2026-72817"]},{"id":"openSUSE-SU-2026:11810-1","title":"warewulf4-4.7.1-1.1 on GA media","vulnerabilityIds":["CVE-2026-72815","CVE-2026-72817"]}],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-58632","identifiers":["EUVD-2026-58632","CVE-2026-72817","GHSA-9f4g-6whf-f3pv"]},"retained":false,"historicalAffected":[]},{"revision":"1a5bd0c2f1294e16abb172e52bab1830","observedAt":"2026-10-25T15:19:03.401+00:00","statement":{"source":"nvd","id":"CVE-2026-72817","aliases":[],"title":"go-chi/chi versions 0.9.0 before 5.3.0 contains an IP spoofing vulnerability in the RealIP middleware, which resolves the request source IP (Request.RemoteAddr) using the first IP in the X-Forwarded-For header without validating trusted pro…","description":"go-chi/chi versions 0.9.0 before 5.3.0 contains an IP spoofing vulnerability in the RealIP middleware, which resolves the request source IP (Request.RemoteAddr) using the first IP in the X-Forwarded-For header without validating trusted proxies. A malicious client can prepend a forged IP as the first value of the X-Forwarded-For header to spoof the request source IP, potentially bypassing access controls or falsifying request logs.","state":0,"publishedAt":"2026-08-14T12:16:44.747+00:00","modifiedAt":"2026-10-08T16:17:35.923+00:00","affected":[],"metrics":[{"system":"CVSS 4.0 · disclosure@vulncheck.com · Secondary","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","score":6.9,"severity":"MEDIUM"},{"system":"CVSS 3.1 · disclosure@vulncheck.com · Secondary","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","score":6.5,"severity":"MEDIUM"}],"references":["https://github.com/go-chi/chi/security/advisories/GHSA-9g5q-2w5x-hmxf","https://www.vulncheck.com/advisories/go-chi-chi-before-ip-spoofing-via-x-forwarded-for"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-72817","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Deferred","weaknesses":["CWE-345"],"productCriteria":[],"sourceDates":{"published":"2026-08-14T12:16:44.747","lastModified":"2026-10-08T16:17:35.923"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-72817","identifiers":["CVE-2026-72817"]},"retained":false,"historicalAffected":[]},{"revision":"385ce1b7a9d74c84a978be7943edcbb7","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-9g5q-2w5x-hmxf","aliases":["CVE-2026-72817","GO-2026-5775"],"title":"chi Middleware Vulnerable to Potential IP Spoofing via `X-Forwarded-For` Header in `Request.RemoteAddr` Resolution","description":"### Summary\nThe vulnerability allows the `Request.RemoteAddr` to be spoofed when determining the request source IP via the `X-Forwarded-For` header. This could result in misidentification of the request source and potentially compromise access control and logging integrity.\n\n### Details\nCurrently, the `RealIP()` implementation splits the `X-Forwarded-For` header by `,` and uses the first IP.\nhttps://github.com/go-chi/chi/blob/v5.1.0/middleware/realip.go#L50-L54\n\nHowever, relying on the first IP in the `X-Forwarded-For` header is insecure because it can be manipulated by attackers to falsify the source IP.\n\nMalicious Case:\n1. A malicious client sends a request with a forged IP in the X-Forwarded-For header: `X-Forwarded-For: <forged-ip>`\n2. The proxy appends the actual client’s IP and forwards the request: `X-Forwarded-For: <forged-ip>,<client-ip>`\n3. If the server always uses the first IP, it becomes vulnerable to IP spoofing.\n\nIdeally, the implementation should verify IPs starting from the end of the `X-Forwarded-For` header value, skipping trusted IPs within the system, and using the first untrusted IP as the actual client IP.\n\nFor example, the `labstack/echo` web framework processes the `X-Forwarded-For` header by checking IPs from the end, skipping trusted IPs, and using the first untrusted IP as the client's ip.\nhttps://github.com/labstack/echo/blob/v4.13.2/ip.go#L261-L273\n\n### PoC\n#### 1. Run the Go application with the following code:\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"log\"\n    \"net/http\"\n\n    \"github.com/go-chi/chi/v5/middleware\"\n)\n\nfunc main() {\n    // Set handler to print the remote address\n    handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n        fmt.Fprintln(\n            w,\n            fmt.Sprintf(\"remote addr: %s (want 192.0.2.1)\", r.RemoteAddr),\n        )\n    })\n    // Use RealIP middleware\n    log.Fatal(http.ListenAndServe(\":8080\", middleware.RealIP(handler)))\n}\n```\n#### 2. Send a request to the server using curl with a manipulated X-Forwarded-For header:\n```\n$ curl localhost:8080 -H 'X-Forwarded-For: 192.0.2.2, 192.0.2.1'\nremote addr: 192.0.2.2 (want 192.0.2.1)\n```\n\n### Impact\nThis vulnerability can lead to a request source IP spoofing issue, which may allow attackers to bypass access controls or falsify request logs. It primarily affects systems that rely on X-Forwarded-For to determine the actual client IP, particularly in scenarios where intermediary proxies or load balancers are involved.","state":0,"publishedAt":"2026-06-25T18:18:56+00:00","modifiedAt":"2026-09-10T03:50:49.1855565+00:00","affected":[{"ecosystem":"Go","name":"github.com/go-chi/chi/middleware","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.9.0"},{"kind":"last_affected","version":"1.5.5"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/go-chi/chi/v2/middleware","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"last_affected","version":"2.1.1"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/go-chi/chi/v3/middleware","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"last_affected","version":"3.3.5"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/go-chi/chi/v4/middleware","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"last_affected","version":"4.1.3"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/go-chi/chi/v5/middleware","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"5.3.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/go-chi/chi/security/advisories/GHSA-9g5q-2w5x-hmxf","https://github.com/go-chi/chi","https://github.com/go-chi/chi/releases/tag/v5.3.0"],"sourceUrl":"https://github.com/advisories/GHSA-9g5q-2w5x-hmxf","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-9g5q-2w5x-hmxf","identifiers":["GHSA-9g5q-2w5x-hmxf","CVE-2026-72817","GO-2026-5775"]},"retained":false,"historicalAffected":[]},{"revision":"9bac89926f2e44559cfa6e3750f8b104","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GO-2026-5775","aliases":["CVE-2026-72817","GHSA-9g5q-2w5x-hmxf"],"title":"Chi Middleware vulnerable to IP spoofing via X-Forwarded-For header in github.com/go-chi/chi","description":"Chi Middleware vulnerable to IP spoofing via X-Forwarded-For header in github.com/go-chi/chi","state":0,"publishedAt":"2026-07-24T18:35:55+00:00","modifiedAt":"2026-08-15T05:19:13.0290249+00:00","affected":[{"ecosystem":"Go","name":"github.com/go-chi/chi/v5","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"5.3.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/go-chi/chi/security/advisories/GHSA-9g5q-2w5x-hmxf","https://github.com/go-chi/chi/pull/967","https://github.com/go-chi/chi/releases/tag/v5.3.0"],"sourceUrl":"https://osv.dev/vulnerability/GO-2026-5775","license":"OSV · upstream source license applies","key":"osv:GO-2026-5775","identifiers":["GO-2026-5775","CVE-2026-72817","GHSA-9g5q-2w5x-hmxf"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-10T19:23:59.9183258+00:00","complete":true,"records":1773,"lastAttemptAt":"2026-11-10T19:23:59.9183258+00:00","lastSuccessAt":"2026-11-10T19:24:00.2370482+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:24:00.2370549+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-8859cf40d4337e24bd2f258cc7778fbad01bb24c79d057aaf34cf1dfc6f8917d-f2f4ba314860e9e17a66947505579ed713f511b53a4762548045095e6e99afbd","complete":true,"records":422304,"lastAttemptAt":"2026-11-10T19:21:29.2484141+00:00","lastSuccessAt":"2026-11-10T19:21:28.9991659+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:21:29.2484141+00:00","snapshotPublishedAt":"2026-11-10T18:26:14+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-acbb624a79c244aa868394151a25f053","complete":true,"records":13704,"lastAttemptAt":"2026-11-10T19:24:02.5081725+00:00","lastSuccessAt":"2026-11-10T18:24:12.001+00:00","error":null,"lastVerifiedAt":"2026-11-10T18:24:12.001+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13758,"expectedIdentifiers":13758,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-10T19:23:59.9183258+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-10T19:23:59.9183258+00:00","lastSuccessAt":"2026-11-10T19:24:00.2381624+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:24:00.2381812+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-4459456b8f8c43778c308d7de0a43211","complete":true,"records":13710,"lastAttemptAt":"2026-11-10T19:24:01.780186+00:00","lastSuccessAt":"2026-11-10T18:24:11.141+00:00","error":null,"lastVerifiedAt":"2026-11-10T18:24:11.141+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13758,"expectedIdentifiers":13758,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-50a085e5b7a5d1546eabdb7e52fab85d658afa8554d3cf95a0891c49d83f2979","complete":true,"records":9935,"lastAttemptAt":"2026-11-10T19:23:59.6188503+00:00","lastSuccessAt":"2026-11-10T16:25:20.0114252+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:23:59.6188503+00:00","snapshotPublishedAt":"2026-11-10T16:18:10+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-26503967ae4379db8f374089589d6e03fb15bd31f820c9e992aaf93840c2236c","complete":true,"records":1971,"lastAttemptAt":"2026-11-10T19:21:29.467842+00:00","lastSuccessAt":"2026-11-09T21:02:20.472473+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:21:29.467842+00:00","snapshotPublishedAt":"2026-11-09T20:18:18+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-df497239f2f75af38e095cb498791dad4044a8a9a7f5f0ee6008bb732579ab9d","complete":true,"records":3081,"lastAttemptAt":"2026-11-10T19:23:59.7538509+00:00","lastSuccessAt":"2026-11-10T14:21:34.3717399+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:23:59.7538509+00:00","snapshotPublishedAt":"2026-11-10T14:18:07+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-da8f4500acb46c1f6ac483c7f26bcf8f23ffed08d67c9622553c8424a369b040","complete":true,"records":231620,"lastAttemptAt":"2026-11-10T19:23:59.4861543+00:00","lastSuccessAt":"2026-11-10T19:23:57.9397379+00:00","error":null,"lastVerifiedAt":"2026-11-10T19:23:59.4861543+00:00","snapshotPublishedAt":"2026-11-10T18:33:35+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}