Repository navigation
fix(deps): update module github.com/gofiber/fiber/v2 to v2.52.14 [security] - #78
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Contributor
Author
ℹ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
Contributor
Author
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
renovate
Bot
deleted the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
January 7, 2026 21:14
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
2 times, most recently
from
January 8, 2026 00:41
3c0a319 to
508ab42
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
from
February 9, 2026 17:48
508ab42 to
7aaec24
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
from
February 25, 2026 01:30
7aaec24 to
ff9e8b6
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
2 times, most recently
from
March 30, 2026 21:58
ff9e8b6 to
55a9ee6
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
from
May 6, 2026 16:53
55a9ee6 to
f3622e1
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
from
August 4, 2026 22:09
f3622e1 to
7ec39f2
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
2 times, most recently
from
August 29, 2026 12:59
7ec39f2 to
2c97aee
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-gofiber-fiber-v2-vulnerability
branch
2 times, most recently
from
August 30, 2026 00:47
2c97aee to
0cedf0a
Compare
This branch has not been deployed
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.5→v2.52.14Fiber Crashes in BodyParser Due to Unvalidated Large Slice Index in Decoder
CVE-2025-54801 / GHSA-qx2q-88mx-vhg7
More information
Details
Description
When using Fiber's
Ctx.BodyParserto parse form data containing a large numeric key that represents a slice index (e.g.,test.18446744073704), the application crashes due to an out-of-bounds slice allocation in the underlying schema decoder.The root cause is that the decoder attempts to allocate a slice of length
idx + 1without validating whether the index is within a safe or reasonable range. Ifidxis excessively large, this leads to an integer overflow or memory exhaustion, causing a panic or crash.Steps to Reproduce
Create a POST request handler that accepts
x-www-form-urlencodeddataRun the server and send a POST request with a large numeric key in form data, such as:
Relevant Code Snippet
Within the decoder's decode method:
The
idxis not validated before use, leading to unsafe slice allocation for extremely large values.Impact
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Fiber 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).
GoFiber Vulnerable to X-Real-IP Spoofing via Header.Add() in BalancerForward
CVE-2026-45045 / GHSA-gcfq-8gqf-4876
More information
Details
Summary
The
BalancerForwardproxy helper in GoFiber usesHeader.Add()instead ofHeader.Set()when injecting theX-Real-IPheader. This appends the real client IP as a second header value rather than replacing any attacker-supplied value. Upstream servers that read the firstX-Real-IPheader (nginx, Express, most HTTP servers) use the attacker's spoofed IP for logging, rate limiting, and access control.Vulnerable Code
File:
middleware/proxy/proxy.go, lines 270-285Data Flow
X-Real-IP: 10.0.0.1(spoofed internal IP)BalancerForwardhandler executes at line 282c.Request().Header.Add("X-Real-IP", c.IP())APPENDS the real IP as a second headerX-Real-IP: 10.0.0.1ANDX-Real-IP: <real-attacker-ip>10.0.0.1for all IP-dependent logicImpact
10.0.0.0/8) can be bypassedFix
Replace
Header.Add()withHeader.Set()at line 282:Header.Set()replaces any existing header value, ensuring only the real client IP is forwarded.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A: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.14Compare Source
What's Changed
🐛 Bug Fixes
New Contributors
Full Changelog: gofiber/fiber@v2.52.13...v2.52.14
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
v2.52.10Compare Source
🐛 Bug Fixes
📚 Documentation
New Contributors
Full Changelog: gofiber/fiber@v2.52.9...v2.52.10
v2.52.9Compare Source
🐛 Bug Fixes
Is()by @gaby in #3537Full Changelog: gofiber/fiber@v2.52.8...v2.52.9
v2.52.8Compare Source
👮 Security
🧹 Updates
🐛 Bug Fixes
📚 Documentation
Full Changelog: gofiber/fiber@v2.52.6...v2.52.8
v2.52.7Compare Source
v2.52.6Compare Source
🐛 Bug Fixes
📚 Documentation
🛠️ Maintenance
Full Changelog: gofiber/fiber@v2.52.5...v2.52.6
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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.