chore: Update module github.com/gofiber/fiber/v2 to v2.52.13 [SECURITY]#149
Open
renovate[bot] wants to merge 1 commit into
Open
chore: Update module github.com/gofiber/fiber/v2 to v2.52.13 [SECURITY]#149renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
709d331 to
1b6b0eb
Compare
1b6b0eb to
c3a4dd8
Compare
c3a4dd8 to
efd8096
Compare
efd8096 to
5d846b9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v2.52.10→v2.52.13Fiber has an insecure fallback in utils.UUIDv4() / utils.UUID() — predictable / zero‑UUID on crypto/rand failure
CVE-2025-66630 / GHSA-68rr-p4fp-j59v
More information
Details
Fiber v2 contains an internal vendored copy of
gofiber/utils, and its functionsUUIDv4()andUUID()inherit the same critical weakness described in the upstream advisory. On Go versions prior to 1.24, the underlyingcrypto/randimplementation can return an error if secure randomness cannot be obtained. In such cases, these Fiber v2 UUID functions silently fall back to generating predictable values — the all-zero UUID00000000-0000-0000-0000-000000000000.On Go 1.24+, the language guarantees that
crypto/randno longer returns an error (it will block or panic instead), so this vulnerability primarily affects Fiber v2 users running Go 1.23 or earlier, which Fiber v2 officially supports.Because no error is returned by the Fiber v2 UUID functions, application code may unknowingly rely on predictable, repeated, or low-entropy identifiers in security-critical pathways. This is especially impactful because many Fiber v2 middleware components (session middleware, CSRF, rate limiting, request-ID generation, etc.) default to using
utils.UUIDv4().Impact includes, but is not limited to:
All Fiber v2 versions containing the internal
utils.UUIDv4()/utils.UUID()implementation are affected when running on Go <1.24. No patched Fiber v2 release currently exists.Suggested Mitigations / Workarounds
Update to the latest version of Fiber v2.
Likelihood / Environmental Factors
It’s important to note that entropy exhaustion on modern Linux systems is extremely rare, as the kernel’s CSPRNG is resilient and non-blocking. However, entropy-source failures — where
crypto/randcannot read from its underlying provider — are significantly more likely in certain environments.This includes containerized deployments, restricted sandboxes, misconfigured systems lacking read access to
/dev/urandomor platform-equivalent sources, chrooted or jailed environments, embedded devices, or systems with non-standard or degraded randomness providers. On Go <1.24, such failures causecrypto/randto return an error, which the Fiber v2 UUID functions currently treat as a signal to silently generate predictable UUIDs, including the zero UUID. This silent fallback is the root cause of the vulnerability.References
Upstream advisory for
gofiber/utils: GHSA-m98w-cqp3-qcqrSource repositories:
github.com/gofiber/fibergithub.com/gofiber/utilsCredits / Reporter
Reported by @sixcolors (Fiber Maintainer / Security Team)
Severity
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Fiber has a Denial of Service Vulnerability via Route Parameter Overflow
CVE-2026-25882 / GHSA-mrq8-rjmw-wpq3
More information
Details
A denial of service vulnerability exists in Fiber v2 and v3 that allows remote attackers to crash the application by sending requests to routes with more than 30 parameters. The vulnerability results from missing validation during route registration combined with an unbounded array write during request matching.
Affected Versions
Vulnerability Details
Root Cause
Both Fiber v2 and v3 define a fixed-size parameter array in
ctx.go:The
router.goregister()function accepts routes without validating parameter count. When a request matches a route exceeding 30 parameters, the code inpath.goperforms an unbounded write:path.go:514path.go:516When
paramsIterator >= 30, this triggers:Attack Scenario
Application registers route with >30 parameters (e.g., via code or dynamic routing):
Attacker sends matching HTTP request:
Server crashes during request processing with runtime panic
Proof of Concept
For Fiber v3
Output:
For Fiber v2
Output (v2):
Impact
Exploitation Requirements
Real-World Impact
Likelihood
HIGH - Exploitation requires only:
Workarounds
Until patched, users should:
Audit Routes: Ensure all routes have ≤30 parameters
Disable Dynamic Routing: If programmatically registering routes, validate parameter count:
Rate Limiting: Deploy aggressive rate limiting to mitigate DoS impact
Monitoring: Alert on panic patterns in application logs
Timeline
References
Credit
Discovered by: @sixcolors (Fiber maintainer) and @TheAspectDev
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:PReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Fiber vulnerable to XSS in AutoFormat Content Negotiation
CVE-2026-42554 / GHSA-qjv7-627w-8qjv
More information
Details
Summary
Description
A Cross-Site Scripting (CWE-79) vulnerability in Go Fiber allows a remote attacker to inject arbitrary HTML/JavaScript by supplying
Accept: text/htmlon any request whose handler passes attacker-influenced data to the AutoFormat() feature. This affectsgithub.com/gofiber/fiber/v3(DefaultRes.AutoFormat) through version 3.1.0 andgithub.com/gofiber/fiber/v2(Ctx.Format) through version 2.52.12.The developer opts into content negotiation by calling AutoFormat(), but does not opt into raw HTML emission for a particular request; Fiber chooses that branch from attacker-controlled Accept. Five of the six branches of the same method already escape.
JSON,XML,MsgPack, andCBORall route through encoders that neutralize markup; the txt branch emitstext/plainand cannot execute. The html branch is the sole outlier in a method whose name (AutoFormat) and symmetrical structure actively telegraph "safe, format-agnostic reply."Details
The issue resides in
res.gowithin(*DefaultRes).AutoFormat(). The method negotiates against the request Accept header, selects one ofhtml | json | txt | xml | msgpack | cbor, and serializes the caller-supplied body accordingly.The "html" branch concatenates the stringified body directly into HTML markup with no output encoding:
acceptcomes fromr.c.Accepts(...), i.e. is fully attacker-controlled. An attacker can force the "html" branch on anyAutoFormat()call regardless of which format the developer tested against.bis produced frombodyvia direct assignment (string/[]byte) orfmt.Sprintf("%v", body). Nohtml.EscapeStringis applied.text/html; charset=utf-8, so browsers render it as active HTML.Impact
This impacts all current v3 releases ≤ 3.1.0 containing
DefaultRes.AutoFormat, and all current v2 releases ≤ 2.52.12 where the identical"<p>" + b + "</p>"construction exists in(*Ctx).Format(). Exploitation requires that an application callc.AutoFormat(v)wherev(or a field stringified by%v) contains request-influenced data.A handler that uses
AutoFormat()to serve multiple representations of the same data can be turned into an HTML XSS sink when the client sendsAccept: text/html, even if the developer only tested the JSON path.This may result in:
AutoFormat.AutoFormat.Proposed Patch
The injection surface is
r.Type("html")followed byr.SendString(b)with unescaped caller data, where it constructs markup on the caller's behalf around a value whose HTML-ness the caller did not declare. A few options:AutoFormat()should treatbodyas data, not markup, in the"html"branch and escape it before concatenating it into the framework-generated<p>wrapper. Callers that need raw negotiated HTML should useFormat()with an explicit HTML handler.AutoFormatalone for backward compatibility.HTML-escape the value in the "html" branch before concatenating it into the
<p>wrapper.html.EscapeStringescapes<,>,&,',", which is sufficient for an element-text context. Apply the same change to v2's(*Ctx).Format().Proof of Concept
Benign JSON
HTML sink enables XSS
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
gofiber/fiber (github.com/gofiber/fiber/v2)
v2.52.13Compare Source
What's Changed
🐛 Bug Fixes
Full Changelog: gofiber/fiber@v2.52.12...v2.52.13
v2.52.12Compare Source
🐛 Fixes
Full Changelog: gofiber/fiber@v2.52.11...v2.52.12
v2.52.11Compare Source
What's Changed
🧹 Updates
🐛 Bug Fixes
Full Changelog: gofiber/fiber@v2.52.10...v2.52.11
Configuration
📅 Schedule: (in timezone Asia/Singapore)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.