{"id":"GO-2026-6896","revision":null,"records":[{"revision":"beb1fc5c021743da9f25d0f18b800203","observedAt":"2026-11-04T02:57:16.741+00:00","statement":{"source":"cve-program","id":"CVE-2026-119285","aliases":[],"title":"Fiber: CORS wildcard origins matched without a dot boundary, allowing credentialed cross-origin reads","description":"Fiber is an Express inspired web framework written in Go. From 2.52.1 until 2.52.3, the CORS middleware's validateDomain wildcard matcher in middleware/cors/utils.go strips the scheme and checks only a host suffix without requiring a dot boundary. An application configured with a wildcard-subdomain AllowOrigins value and AllowCredentials enabled can reflect an unrelated attacker-controlled origin whose host merely ends with the configured base domain. A user who visits that origin can expose authenticated cross-origin responses to the attacker's page; empty-label origins and later comma-space parsing hardening are outside this advisory. This issue is fixed in version 2.52.3.","state":0,"publishedAt":"2026-10-29T21:36:02.199+00:00","modifiedAt":"2026-11-04T01:55:09.92+00:00","affected":[{"ecosystem":"Vendor product","name":"fiber","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"gofiber\",\n                    \"product\": \"fiber\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 2.52.1, < 2.52.3\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N","score":5.9,"severity":"MEDIUM"}],"references":["https://github.com/gofiber/fiber/security/advisories/GHSA-g5jq-qmqr-qrwf","https://github.com/gofiber/fiber/pull/2915","https://github.com/gofiber/fiber/commit/1aac6f618b6bd3e159d2449acb4232a2170b976b","https://github.com/gofiber/fiber/releases/tag/v2.52.3"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-119285","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-119285","identifiers":["CVE-2026-119285"]},"retained":false,"historicalAffected":[]},{"revision":"5b398387cfb043ed9ae69945328165f7","observedAt":"2026-11-14T07:10:53.581+00:00","statement":{"source":"euvd","id":"EUVD-2026-113402","aliases":["CVE-2026-119285","GHSA-g5jq-qmqr-qrwf"],"title":"Fiber is an Express inspired web framework written in Go. From 2.52.1 until 2.52.3, the CORS middleware's validateDomain wildcard matcher in middleware/cors/utils.go strips the scheme and checks only a host suffix without requiring a dot bo…","description":"Fiber is an Express inspired web framework written in Go. From 2.52.1 until 2.52.3, the CORS middleware's validateDomain wildcard matcher in middleware/cors/utils.go strips the scheme and checks only a host suffix without requiring a dot boundary. An application configured with a wildcard-subdomain AllowOrigins value and AllowCredentials enabled can reflect an unrelated attacker-controlled origin whose host merely ends with the configured base domain. A user who visits that origin can expose authenticated cross-origin responses to the attacker's page; empty-label origins and later comma-space parsing hardening are outside this advisory. This issue is fixed in version 2.52.3.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N","score":5.9,"severity":null}],"references":["https://github.com/gofiber/fiber/security/advisories/GHSA-g5jq-qmqr-qrwf","https://github.com/gofiber/fiber/pull/2915","https://github.com/gofiber/fiber/commit/1aac6f618b6bd3e159d2449acb4232a2170b976b","https://github.com/gofiber/fiber/releases/tag/v2.52.3"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-113402","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Oct 29, 2026, 9:36:02 PM","dateUpdated":"Nov 4, 2026, 1:55:09 AM"},"relatedAdvisories":[],"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-113402","identifiers":["EUVD-2026-113402","CVE-2026-119285","GHSA-g5jq-qmqr-qrwf"]},"retained":false,"historicalAffected":[]},{"revision":"6a1924a27d86432e8a73ec9af2dc91e9","observedAt":"2026-11-06T01:43:49.822+00:00","statement":{"source":"nvd","id":"CVE-2026-119285","aliases":[],"title":"Fiber is an Express inspired web framework written in Go. From 2.52.1 until 2.52.3, the CORS middleware's validateDomain wildcard matcher in middleware/cors/utils.go strips the scheme and checks only a host suffix without requiring a dot bo…","description":"Fiber is an Express inspired web framework written in Go. From 2.52.1 until 2.52.3, the CORS middleware's validateDomain wildcard matcher in middleware/cors/utils.go strips the scheme and checks only a host suffix without requiring a dot boundary. An application configured with a wildcard-subdomain AllowOrigins value and AllowCredentials enabled can reflect an unrelated attacker-controlled origin whose host merely ends with the configured base domain. A user who visits that origin can expose authenticated cross-origin responses to the attacker's page; empty-label origins and later comma-space parsing hardening are outside this advisory. This issue is fixed in version 2.52.3.","state":0,"publishedAt":"2026-10-29T22:17:01.367+00:00","modifiedAt":"2026-11-04T02:17:19.083+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N","score":5.9,"severity":"MEDIUM"}],"references":["https://github.com/gofiber/fiber/commit/1aac6f618b6bd3e159d2449acb4232a2170b976b","https://github.com/gofiber/fiber/pull/2915","https://github.com/gofiber/fiber/releases/tag/v2.52.3","https://github.com/gofiber/fiber/security/advisories/GHSA-g5jq-qmqr-qrwf"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-119285","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Awaiting Analysis","weaknesses":["CWE-346","CWE-942"],"productCriteria":[],"sourceDates":{"published":"2026-10-29T22:17:01.367","lastModified":"2026-11-04T02:17:19.083"},"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-119285","identifiers":["CVE-2026-119285"]},"retained":false,"historicalAffected":[]},{"revision":"250baec9b5ba419893526e8344f2e4ea","observedAt":"2026-11-05T23:38:32.248+00:00","statement":{"source":"osv","id":"GHSA-g5jq-qmqr-qrwf","aliases":["CVE-2026-119285","GO-2026-6896"],"title":"Fiber: CORS wildcard origins matched without a dot boundary, allowing credentialed cross-origin reads","description":"### Summary\n\nIn v2.52.1 and v2.52.2 the CORS middleware matched a wildcard origin such as `https://*.example.com` by suffix only, without a dot boundary and without comparing the scheme. Any origin whose host ends with the base domain, for example `https://evil-example.com` or `http://notexample.com`, was reflected in `Access-Control-Allow-Origin`, together with `Access-Control-Allow-Credentials: true` when `AllowCredentials` is enabled.\n\nv2.52.3 replaced the matcher (#2915) and is not affected. The report was filed against v2.52.15, where the dot boundary holds; see \"Other versions\" below.\n\n### Details\n\nv2.52.1 introduced `validateDomain` in `middleware/cors/utils.go` (f0cd3b44, part of the fix for GHSA-fmg4-x8pw-hjhg). It strips scheme and port from both sides and then checks only the suffix, with `trimmedPattern = \"example.com\"`, so the character before the suffix is never checked:\n\n```go\nif strings.HasPrefix(normalizedPattern, \"*.\") {\n\ttrimmedPattern := normalizedPattern[2:]\n\tif strings.HasSuffix(normalizedDomain, trimmedPattern) {\n\t\tif normalizedDomain != trimmedPattern {\n\t\t\tif strings.TrimSuffix(normalizedDomain, trimmedPattern) != \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\nv2.52.3 (1aac6f61, #2915) replaced it with a scheme-aware prefix/suffix split that keeps the leading dot in the suffix (`.example.com`).\n\n### Proof of concept\n\n```go\napp := fiber.New()\napp.Use(cors.New(cors.Config{\n\tAllowOrigins:     \"https://*.example.com\",\n\tAllowCredentials: true,\n}))\napp.Get(\"/\", func(c *fiber.Ctx) error { return c.SendString(\"secret\") })\n```\n\nRequest with `Origin: https://evil-example.com`, as a GET and as a preflight (`OPTIONS` with `Access-Control-Request-Method: GET`):\n\n| Version | `https://evil-example.com` | `http://evil-example.com` |\n|---|---|---|\n| v2.52.0 | not allowed | not allowed |\n| v2.52.1, v2.52.2 | reflected, `Access-Control-Allow-Credentials: true` | reflected, `Access-Control-Allow-Credentials: true` |\n| v2.52.3 to v2.52.16 | not allowed | not allowed |\n\n### Impact\n\nAn app that configures a wildcard-subdomain `AllowOrigins` with `AllowCredentials: true` lets any page on a domain that ends with the base domain (for example `notexample.com` for `*.example.com`) read authenticated responses cross-origin. Fixed in v2.52.3; upgrade to the latest v2 release.\n\n### Other versions\n\nAll v2 releases before v2.52.16 also accepted origins with empty labels (`https://.example.com`, `https://a..example.com`), and v2.52.3 to v2.52.15 mis-parsed a wildcard entry after a comma and a space (`\"https://a.com, https://*.example.com\"`). No registrable domain produces such an origin, so these are hardening rather than part of this advisory. They are fixed in v2.52.16 (#4792).","state":0,"publishedAt":"2026-10-30T22:58:05+00:00","modifiedAt":"2026-11-05T23:25:41.6317652+00:00","affected":[{"ecosystem":"Go","name":"github.com/gofiber/fiber/v2","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"2.52.1"},{"kind":"fixed","version":"2.52.3"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/gofiber/fiber/security/advisories/GHSA-g5jq-qmqr-qrwf","https://nvd.nist.gov/vuln/detail/CVE-2026-119285","https://github.com/gofiber/fiber/pull/2915","https://github.com/gofiber/fiber/commit/1aac6f618b6bd3e159d2449acb4232a2170b976b","https://github.com/gofiber/fiber","https://github.com/gofiber/fiber/releases/tag/v2.52.3"],"sourceUrl":"https://github.com/advisories/GHSA-g5jq-qmqr-qrwf","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-g5jq-qmqr-qrwf","identifiers":["GHSA-g5jq-qmqr-qrwf","CVE-2026-119285","GO-2026-6896"]},"retained":false,"historicalAffected":[]},{"revision":"5f893868b4b24b1485463d74b0c599cd","observedAt":"2026-11-05T23:38:32.248+00:00","statement":{"source":"osv","id":"GO-2026-6896","aliases":["CVE-2026-119285","GHSA-g5jq-qmqr-qrwf"],"title":"Fiber: CORS wildcard origins matched without a dot boundary, allowing credentialed cross-origin reads in github.com/gofiber/fiber","description":"Fiber: CORS wildcard origins matched without a dot boundary, allowing credentialed cross-origin reads in github.com/gofiber/fiber","state":0,"publishedAt":"2026-11-05T22:55:03+00:00","modifiedAt":"2026-11-05T23:15:16.2719657+00:00","affected":[{"ecosystem":"Go","name":"github.com/gofiber/fiber/v2","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"2.52.1"},{"kind":"fixed","version":"2.52.3"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/gofiber/fiber/security/advisories/GHSA-g5jq-qmqr-qrwf","https://nvd.nist.gov/vuln/detail/CVE-2026-119285","https://github.com/gofiber/fiber/commit/1aac6f618b6bd3e159d2449acb4232a2170b976b","https://github.com/gofiber/fiber/pull/2915","https://github.com/gofiber/fiber/releases/tag/v2.52.3"],"sourceUrl":"https://osv.dev/vulnerability/GO-2026-6896","license":"OSV · upstream source license applies","key":"osv:GO-2026-6896","identifiers":["GO-2026-6896","CVE-2026-119285","GHSA-g5jq-qmqr-qrwf"]},"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-15T18:44:29.5338368+00:00","complete":true,"records":1781,"lastAttemptAt":"2026-11-15T18:44:29.5338368+00:00","lastSuccessAt":"2026-11-15T18:44:29.78352+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:29.783521+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-7de4d7559a5263003f03d9f70577ab06f92ba4178309f26fce53e22a4a959294-b9fbd1daaa4463d210736a9586507854993056a11f4ff4425329364edc1bad1c","complete":true,"records":425838,"lastAttemptAt":"2026-11-15T18:44:28.9589827+00:00","lastSuccessAt":"2026-11-15T18:44:28.9300882+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:28.9589827+00:00","snapshotPublishedAt":"2026-11-15T18:19:48+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-690aaf2f7fdd47eaaa0e869ffa316905","complete":true,"records":13821,"lastAttemptAt":"2026-11-15T18:59:39.6961048+00:00","lastSuccessAt":"2026-11-15T18:59:39.692+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:59:39.692+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13874,"expectedIdentifiers":13874,"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-15T18:44:29.5338368+00:00","complete":true,"records":1125,"lastAttemptAt":"2026-11-15T18:44:29.5338368+00:00","lastSuccessAt":"2026-11-15T18:44:29.7845261+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:29.7845265+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-78486e6112e2477ab52683c61207b1f4","complete":true,"records":13833,"lastAttemptAt":"2026-11-15T18:45:05.0249417+00:00","lastSuccessAt":"2026-11-15T18:45:05.012+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:45:05.012+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13874,"expectedIdentifiers":13874,"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-64eea06dbd27de8464d5dbce1b78cc794cc59e2d901516ae0d3ea76e624cdae0","complete":true,"records":9955,"lastAttemptAt":"2026-11-15T18:44:29.2701797+00:00","lastSuccessAt":"2026-11-14T13:57:23.1208135+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:29.2701797+00:00","snapshotPublishedAt":"2026-11-14T13:17:57+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-f4424d7d4861b1af1404bd15abcb83f295dcd003412a9340ca99dc8200aa148a","complete":true,"records":2014,"lastAttemptAt":"2026-11-15T18:44:29.0330557+00:00","lastSuccessAt":"2026-11-13T19:57:08.2864435+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:29.0330557+00:00","snapshotPublishedAt":"2026-11-13T19:33:10+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-6086d649bcb454cdf302d7d9275177bda73550e1b6e446b3520e9b6266d3582c","complete":true,"records":3148,"lastAttemptAt":"2026-11-15T18:44:29.2929405+00:00","lastSuccessAt":"2026-11-15T11:05:17.1034234+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:29.2929405+00:00","snapshotPublishedAt":"2026-11-15T10:03:04+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-ff18f36f13fcca3a20a3fb9274b59b8872d18869a99071730e1e79b625c8f612","complete":true,"records":232475,"lastAttemptAt":"2026-11-15T18:44:29.1494018+00:00","lastSuccessAt":"2026-11-15T11:05:10.4195883+00:00","error":null,"lastVerifiedAt":"2026-11-15T18:44:29.1494018+00:00","snapshotPublishedAt":"2026-11-15T10:33:06+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}