Public mode

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

Some sources or documents need attention: 274/275 feeds/APIs · 469/469 docs · 9/9 advisories · checked 10:01 UTC Customize Public modeDiscuss ChangeIntel on Discord

Fiber Utils UUIDv4 and UUID Silent Fallback to Predictable Values

Collected exploitation and prediction evidence

Risk source coverage

CISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.

No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.

cve-program · CVE-2025-66565

Published

Fiber Utils is a collection of common functions created for Fiber. In versions 2.0.0-rc.3 and below, when the system's cryptographic random number generator (crypto/rand) fails, both functions silently fall back to returning predictable UUID values, including the zero UUID "00000000-0000-0000-0000-000000000000". The vulnerability occurs through two related but distinct failure paths, both ultimately caused by crypto/rand.Read() failures, compromising the security of all Fiber applications using these functions for security-critical operations. This issue is fixed in version 2.0.0-rc.4.

Source published
9 Dec 2025 01:47:58 UTC
Source modified
9 Dec 2025 16:03:03 UTC
Observed here
23 Oct 2026 15:48:27 UTC
Source terms
CVE Program Terms of Use

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

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 4.0 · 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N

euvd · EUVD-2025-201791

Published

Fiber Utils is a collection of common functions created for Fiber. In versions 2.0.0-rc.3 and below, when the system's cryptographic random number generator (crypto/rand) fails, both functions silently fall back to returning predictable UUID values, including the zero UUID "00000000-0000-0000-0000-000000000000". The vulnerability occurs through two related but distinct failure paths, both ultimately caused by crypto/rand.Read() failures, compromising the security of all Fiber applications using these functions for security-critical operations. This issue is fixed in version 2.0.0-rc.4.

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: Dec 9, 2025, 1:47:58 AM

dateUpdated: Dec 9, 2025, 4:03:03 PM

Source published
Dec 9, 2025, 1:47:58 AM (timezone not stated)
Source modified
Dec 9, 2025, 4:03:03 PM (timezone not stated)
Observed here
11 Nov 2026 04:33:46 UTC
Source terms
ENISA EUVD · source terms and attribution apply

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

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: euvd · ENISA EUVD · source terms and attribution apply. Source text is retained; field grouping and change labels are provided by ChangeIntel.

EUVD CVSS 4.0 · 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N

nvd · CVE-2025-66565

Published

Fiber Utils is a collection of common functions created for Fiber. In versions 2.0.0-rc.3 and below, when the system's cryptographic random number generator (crypto/rand) fails, both functions silently fall back to returning predictable UUID values, including the zero UUID "00000000-0000-0000-0000-000000000000". The vulnerability occurs through two related but distinct failure paths, both ultimately caused by crypto/rand.Read() failures, compromising the security of all Fiber applications using these functions for security-critical operations. This issue is fixed in version 2.0.0-rc.4.

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: Analyzed

Weakness classifications: CWE-252 · CWE-331 · CWE-338

Original publisher date fields

published: 2025-12-09T16:18:21.097

lastModified: 2026-10-07T20:10:01.970

19 source CPE criteria · context only
  • cpe:2.3:a:gofiber:utils:*:*:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta1:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta10:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta11:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta12:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta13:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta14:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta2:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta3:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta4:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta5:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta6:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta7:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta8:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:beta9:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:rc1:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:rc2:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:rc3:*:*:*:go:*:*
  • cpe:2.3:a:gofiber:utils:2.0.0:rc4:*:*:*:go:*:*

The original JSON retains the logical configuration operators, exclusions and version bounds.

Source published
9 Dec 2025 16:18:21 UTC
Source modified
7 Oct 2026 20:10:01 UTC
Observed here
25 Oct 2026 03:17:36 UTC
Source terms
NIST NVD usage terms; underlying source attribution retained

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

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: nvd · NIST NVD usage terms; underlying source attribution retained. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 4.0 · [email protected] · Secondary · 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:L/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

CVSS 3.1 · [email protected] · Primary · 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

osv · GHSA-m98w-cqp3-qcqr

Published

## Summary Critical security vulnerabilities exist in both the `UUIDv4()` and `UUID()` functions of the `github.com/gofiber/utils` package. When the system's cryptographic random number generator (`crypto/rand`) fails, both functions silently fall back to returning predictable UUID values, the zero UUID `"00000000-0000-0000-0000-000000000000"`. This compromises the security of all Fiber applications using these functions for security-critical operations on **Go versions prior to 1.24**. **Both functions are vulnerable to the same root cause (`crypto/rand` failure):** * `UUIDv4()`: Indirect vulnerability through `uuid.NewRandom()` → `crypto/rand.Read()` → fallback to `UUID()` * `UUID()`: Direct vulnerability through `crypto/rand.Read(uuidSeed[:])` → silent zero UUID return > **Note:** Go 1.24 and later panics on `crypto/rand` `Read()` failures, mitigating this vulnerability. Applications running on Go 1.24+ are not affected by the silent fallback behavior. --- ## Vulnerability Details ### Affected Functions * **Package**: `github.com/gofiber/utils` * **Functions**: `UUIDv4()` and `UUID()` * **Return Type**: `string` (both functions) * **Locations**: `common.go:93-99` (UUIDv4), `common.go:60-89` (UUID) ### Technical Description The vulnerability occurs through two related but distinct failure paths, both ultimately caused by `crypto/rand.Read()` failures on Go < 1.24: #### Primary Path: UUIDv4() Vulnerability 1. `UUIDv4()` calls `google/uuid.NewRandom()` which internally uses `crypto/rand.Read()` 2. If `uuid.NewRandom()` fails, `UUIDv4()` falls back to the internal `UUID()` function 3. **No error is returned to the application** - silent security failure occurs #### Secondary Path: UUID() Vulnerability 1. `UUID()` directly calls `crypto/rand.Read(uuidSeed[:])` to seed its internal state 2. If seeding fails, `UUID()` **silently fails** and returns the zero UUID `"00000000-0000-0000-0000-000000000000"` 3. Applications receive predictable UUIDs with no indication of the security failure --- ### Code Analysis #### UUIDv4() Vulnerability Path ```go func UUIDv4() string { token, err := uuid.NewRandom() // Uses crypto/rand.Read() internally if err != nil { return UUID() // Dangerous fallback - no error returned to application } return token.String() } ``` #### UUID() Vulnerability Path ```go func UUID() string { uuidSetup.Do(func() { if _, err := rand.Read(uuidSeed[:]); err != nil { // Direct crypto/rand.Read() call return // Silent failure - no seeding, uuidCounter remains 0 } uuidCounter = binary.LittleEndian.Uint64(uuidSeed[:8]) }) if atomic.LoadUint64(&uuidCounter) <= 0 { return "00000000-0000-0000-0000-000000000000" // Zero UUID returned silently } // ... generate UUID from counter } ``` **Root Cause:** Both vulnerabilities stem from `crypto/rand.Read()` failures, occurring through different code paths with the same dangerous silent fallback behavior. --- ## Security Impact ### Severity: CRITICAL This issue is especially severe because many Fiber middleware packages (session, CSRF, auth, rate-limit, request-ID, etc.) default to `utils.UUIDv4()` for generating security-sensitive identifiers. A failure in `crypto/rand` would cause **every generated identifier across the entire application** to collapse to a single predictable value (the zero UUID), resulting in: * **Session fixation / universal session hijack** * **CSRF token predictability and bypass** * **Authentication token replay** * **Global identifier collisions leading to severe application breakage** * **Potential application-wide DoS** due to every request using the same “unique” key, causing cache overwrites, session stomping, corrupted internal maps, and loss of isolation across all users --- ### Attack Scenario While **entropy exhaustion is extremely rare on modern Linux systems**, *RNG access failures* (e.g., restricted `/dev/random` or `/dev/urandom` access, broken container environments, sandbox restrictions, misconfigured VMs, or FIPS-mode RNG failures) are realistic. In these scenarios on **Go < 1.24**, `crypto/rand` may return errors immediately — triggering the vulnerable fallback paths. On **Go 1.24+**, `crypto/rand` `Read()` panics on failure, mitigating the silent-zero fallback issue. --- ### Proof of Concept 1. `uuid.NewRandom()` fails (indirect `crypto/rand.Read()` failure) 2. `UUIDv4()` calls `UUID()` as fallback with no error returned 3. `UUID()` seeding fails directly via `crypto/rand.Read(uuidSeed[:])` 4. Zero UUID `"00000000-0000-0000-0000-000000000000"` is returned silently 5. No error is propagated to the application from either function --- ## Affected Versions * All versions of `github.com/gofiber/utils` containing the `UUIDv4()` or `UUID()` functions * Applications using Fiber middleware that depend on `UUIDv4()` or `UUID` for security * **Only applicable to Go < 1.24**; Go 1.24+ panics/block on `crypto/rand` `Read()` failures and is not affected --- ## Mitigation ### Immediate Workaround Replace usage of `utils.UUIDv4()` with `uuid.New()` or wait for fix: ```go sessionID := uuid.New() ``` ### Recommended Fix Modify `utils.UUIDv4()` and `utils.UUID()` to fail explicitly when cryptographic randomness is unavailable: ```go func UUIDv4() string { token, err := uuid.NewRandom() if err != nil { panic(fmt.Sprintf("utils: failed to generate secure UUID: %v", err)) } return token.String() } func UUID() string { uuidSetup.Do(func() { if _, err := rand.Read(uuidSeed[:]); err != nil { panic(fmt.Sprintf("utils: failed to seed UUID generator: %v", err)) } uuidCounter = binary.LittleEndian.Uint64(uuidSeed[:8]) }) if atomic.LoadUint64(&uuidCounter) <= 0 { panic("utils: UUID generator not properly seeded") } // ... generate UUID from counter } ``` --- ## Detection Applications can detect if they're affected by: 1. Checking if they use `github.com/gofiber/utils` 2. Searching for `UUIDv4()` and `UUID()` usage in security-critical code paths 3. Reviewing Fiber middleware configurations that rely on defaults of `UUIDv4()` for security identifiers --- ## References * **Package Repository**: [https://github.com/gofiber/utils](https://github.com/gofiber/utils) * **Fiber Framework**: [https://github.com/gofiber/fiber](https://github.com/gofiber/fiber) * **Google UUID Library**: [https://github.com/google/uuid](https://github.com/google/uuid) * Golang `crypto/rand` behavior changes: [golang/go#66821](https://github.com/golang/go/issues/66821), [Go 1.25.5 source](https://cs.opensource.google/go/go/+/refs/tags/go1.25.5:src/crypto/rand/rand.go;l=80) --- ## Contact Reported by: [@sixcolors](https://github.com/sixcolors) --- ## Classification * **OWASP**: A02:2021 - Cryptographic Failures * **Impact**: Complete compromise of application security model on Go < 1.24 * **Exploitability**: Medium (requires entropy failure) * **Scope**: All Fiber applications using affected middleware on Go < 1.24

Source published
8 Dec 2025 17:57:26 UTC
Source modified
15 Dec 2025 19:56:09 UTC
Observed here
24 Oct 2026 13:19:41 UTC
Source terms
GitHub Advisory Database · CC-BY-4.0

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

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS_V4 · CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N

Publisher rating · CRITICAL

osv · GO-2025-4208

Published

Fiber Utils UUIDv4 and UUID Silent Fallback to Predictable Values in github.com/gofiber/utils

Source published
15 Dec 2025 19:37:35 UTC
Source modified
3 Mar 2026 04:57:45 UTC
Observed here
24 Oct 2026 13:19:41 UTC
Source terms
OSV · upstream source license applies

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

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.

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 11 Nov 10:01 UTC · 274 of 275 readable · 273 fully read · documentation 469/469 current