Safeguard
Vulnerability Analysis•

CVE-2025-66565: Critical Weak UUIDs in Fiber Utils

CVE-2025-66565 makes Fiber Utils UUID functions return predictable or zero UUIDs if crypto/rand fails on Go before 1.24. Upgrade or use uuid.New instead.

Safeguard Security Team
3 min read

CVE-2025-66565 is a critical (CVSS 9.8) flaw in Fiber Utils. If the system random number generator fails, the UUID and UUIDv4 functions silently return predictable values, including the zero UUID. The record says 2.0.0-rc.4 fixes it. The advisory says Go 1.24 or later is not affected.

What's affected

  • Module: github.com/gofiber/utils (v1) and github.com/gofiber/utils/v2.
  • Affected per the record: 2.0.0-rc.3 and below. Fixed per the record: 2.0.0-rc.4.
  • Affected per the advisory: github.com/gofiber/utils up to 1.1.0 and github.com/gofiber/utils/v2 up to v2.0.0-rc.3, with no patched version listed on the page we read.
  • Functions: UUIDv4 and UUID.
  • Go version: the advisory says Go 1.24 and later panics when the random read fails, which removes the silent fallback, so applications built with Go 1.24 or newer are not affected by this behavior.

Sources differ on the fix. The record names 2.0.0-rc.4. The advisory shows no patched version and gives a workaround. Check the module releases to confirm.

How to check if you're exposed

Find the module and the Go toolchain version.

go list -m all | grep gofiber/utils
go version
go version -m ./your-binary | head

If you use gofiber/utils and build with Go older than 1.24, look for calls to utils.UUID or utils.UUIDv4 used for session IDs, tokens, request IDs with security meaning, or any value that must be unguessable.

What to do now

  1. Build with Go 1.24 or later, which the advisory says removes the silent fallback behavior.
  2. Upgrade gofiber/utils to the fixed release, which the record names as 2.0.0-rc.4, after confirming in the module changelog.
  3. As the advisory suggests, replace utils.UUIDv4() with uuid.New() from the google/uuid package where unpredictability matters.
  4. Audit places where these UUIDs are used as secrets, such as session identifiers or reset tokens, and use a dedicated token generator.
  5. Scan your Go modules for other pinned versions. Paste your manifests into the free in-browser scan at gold.safeguard.sh/scan to see which of your dependencies carry this CVE, and use reachability analysis to separate the services that actually call the affected code from the ones that only list the package.

Why it matters

The weakness classes are CWE-252, CWE-331, CWE-338: an unchecked return value, insufficient entropy and a weak pseudo random number generator. The code asks the operating system for random bytes, and when that call fails, it carries on as if nothing happened and returns a value that looks like a normal UUID. The caller never learns that the value is fixed or guessable.

A random source failing is rare on a healthy host, so exposure depends on unusual conditions, which is partly why the real risk sits below the headline score. Still, security code should fail loudly. A zero UUID used as a session ID means every session collides. The record does not list exploitation in the wild, and the CVE is not on CISA KEV.

Quick check

Does this affect me if I build with Go 1.24 or later?

The advisory says no. Go 1.24 and later panics when the random read fails, so the silent fallback does not occur.

What is the simplest mitigation?

Use uuid.New() from google/uuid for security sensitive identifiers, as the advisory suggests, and upgrade the module.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.