Public mode

No access to your tenant or devices. Every item links to its source. What this means

Customize Public modeDiscuss ChangeIntel on Discord

Fiber: CORS wildcard origins matched without a dot boundary, allowing credentialed cross-origin reads

CVSS 3.1 5.9 MEDIUMEUVD CVSS 3.1 5.9 CVSS 3.1 · [email protected] · Secondary 5.9 MEDIUMCVSS_V3 Publisher rating MODERATEFixed by github.com/gofiber/fiber/v2 2.52.3osv · severity unknownFixed by github.com/gofiber/fiber/v2 2.52.3KEV status unknown

cve-program · CVE-2026-119285

Published

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.

Read the publisher's advisory

euvd · EUVD-2026-113402

Published

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.

Read the publisher's advisory

nvd · CVE-2026-119285

Published

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.

Read the publisher's advisory

osv · GHSA-g5jq-qmqr-qrwf

Published

### Summary In 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. v2.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. ### Details v2.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: ```go if strings.HasPrefix(normalizedPattern, "*.") { trimmedPattern := normalizedPattern[2:] if strings.HasSuffix(normalizedDomain, trimmedPattern) { if normalizedDomain != trimmedPattern { if strings.TrimSuffix(normalizedDomain, trimmedPattern) != "" { return true } } } } ``` v2.52.3 (1aac6f61, #2915) replaced it with a scheme-aware prefix/suffix split that keeps the leading dot in the suffix (`.example.com`). ### Proof of concept ```go app := fiber.New() app.Use(cors.New(cors.Config{ AllowOrigins: "https://*.example.com", AllowCredentials: true, })) app.Get("/", func(c *fiber.Ctx) error { return c.SendString("secret") }) ``` Request with `Origin: https://evil-example.com`, as a GET and as a preflight (`OPTIONS` with `Access-Control-Request-Method: GET`): | Version | `https://evil-example.com` | `http://evil-example.com` | |---|---|---| | v2.52.0 | not allowed | not allowed | | v2.52.1, v2.52.2 | reflected, `Access-Control-Allow-Credentials: true` | reflected, `Access-Control-Allow-Credentials: true` | | v2.52.3 to v2.52.16 | not allowed | not allowed | ### Impact An 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. ### Other versions All 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).

Read the publisher's advisory

osv · GO-2026-6896

Published

Fiber: CORS wildcard origins matched without a dot boundary, allowing credentialed cross-origin reads in github.com/gofiber/fiber

Read the publisher's advisory

Affected versions, risk and source history

cve-program · CVE-2026-119285

Published

fiber

Vendor product

Publisher's version information

Shown as published. These rules are not interpreted as NuGet package version ranges.

{
                    "vendor": "gofiber",
                    "product": "fiber",
                    "versions": [
                        {
                            "version": ">= 2.52.1, < 2.52.3",
                            "status": "affected"
                        }
                    ]
                }

Original source record · Cite this exact observation · Complete original publisher JSON

euvd · EUVD-2026-113402

Published

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.

Original publisher date fields

datePublished: Oct 29, 2026, 9:36:02 PM

dateUpdated: Nov 4, 2026, 1:55:09 AM

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

nvd · CVE-2026-119285

Published

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.

Source analysis status: Awaiting Analysis

Weakness classifications: CWE-346 · CWE-942

Original publisher date fields

published: 2026-10-29T22:17:01.367

lastModified: 2026-11-04T02:17:19.083

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

osv · GHSA-g5jq-qmqr-qrwf

Published

github.com/gofiber/fiber/v2

Go

SEMVER · introduced 2.52.1 → fixed 2.52.3

Original source record · Cite this exact observation · Complete original publisher JSON

osv · GO-2026-6896

Published

github.com/gofiber/fiber/v2

Go

SEMVER · introduced 2.52.1 → fixed 2.52.3

Original source record · Cite this exact observation · Complete original publisher JSON

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 15 Nov 18:02 UTC · 254 of 275 readable · 250 fully read · documentation 469/469 current