Skip to main content

GoFiber CVE-2026-45045

| EUVDEUVD-2026-42351 MEDIUM
Authentication Bypass by Spoofing (CWE-290)
2026-07-02 https://github.com/gofiber/fiber GHSA-gcfq-8gqf-4876
5.3
CVSS 3.1 · Vendor: https://github.com/gofiber/fiber
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send HTTP request with forged X-Real-IP header
  2. Delivery
    GoFiber BalancerForward appends real IP without removing spoofed value
  3. Exploit
    Upstream receives attacker-controlled first X-Real-IP header
  4. Execution
    Upstream resolves first header occurrence as authoritative IP
  5. Impact
    Bypass IP-based ACL or rate limit at upstream service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Anti-spoofing controls
MITRE ATT&CK

1 technique across 1 tactic: Defense Evasion

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application uses GoFiber's BalancerForward middleware specifically; other GoFiber proxy helpers sharing the same codebase but not calling this function are not affected. The attacker must be able to send arbitrary HTTP request headers to the proxy endpoint, which is the default behavior in any standard HTTP deployment - no special network position is required. Per the CVSS vector (PR:N), no authentication is needed. The practical impact is limited by whether the upstream service actually uses X-Real-IP (rather than X-Forwarded-For or direct TCP source IP) for security-sensitive decisions such as rate limiting, ACL enforcement, or logging. Deployments where upstream services perform no IP-based logic will see no meaningful security impact from this vulnerability.

Impact

The CVSS 3.1 score of 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) accurately reflects low complexity and no authentication requirement but conservatively scores integrity impact as Low. Real-world risk is highly context-dependent: in deployments where upstream services use X-Real-IP to gate admin endpoints or apply per-IP throttling, the effective impact is a complete bypass of those controls - materially higher than I:L implies. No EPSS data was provided in the available intelligence, and CISA KEV status is not confirmed, meaning no active exploitation has been established. The attack surface is constrained to applications explicitly using the BalancerForward function; GoFiber deployments using other proxy helpers are not affected by this code path. The CVSS vector is internally consistent with the described behavior and is not contradicted by the description.

Exploit ScenarioDerived

An attacker sends an HTTP GET request to a GoFiber BalancerForward proxy with the header X-Real-IP: 10.0.0.1 set to a spoofed internal IP associated with a privileged allow-list. The BalancerForward middleware appends the attacker's real IP as a second X-Real-IP value, forwarding both to the upstream server. The upstream nginx or Express server reads the first X-Real-IP value - the spoofed 10.0.0.1 - and grants the attacker access to an admin panel or API endpoint restricted to the internal 10.0.0.0/8 range, while audit logs record the spoofed address, masking the attacker's true origin.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 02, 2026

IP header spoofing in GoFiber's BalancerForward proxy middleware allows any remote unauthenticated attacker to inject a forged X-Real-IP header that upstream servers treat as authoritative. The middleware calls Header.Add() rather than Header.Set() when stamping the real client IP, causing the attacker-supplied value to remain as the first header instance - the one read by nginx, Express, Apache, and most HTTP servers for rate limiting, IP-based ACLs, and audit logging. No public exploit has been identified at time of analysis, but exploitation requires only the ability to set an arbitrary HTTP header, making this trivially accessible to any network attacker targeting deployments using the BalancerForward helper.

RemediationAI

The fix is a one-line change: replace Header.Add("X-Real-IP", c.IP()) with Header.Set("X-Real-IP", c.IP()) at line 282 of middleware/proxy/proxy.go. Header.Set() atomically overwrites all existing X-Real-IP values before writing the real client IP, eliminating the spoofing opportunity. Monitor the GitHub Security Advisory at https://github.com/gofiber/fiber/security/advisories/GHSA-gcfq-8gqf-4876 for a tagged patched release - no specific fix version was confirmed in the available data. As an upstream compensating control, configure each upstream server to unconditionally overwrite the X-Real-IP header using its own observed remote address (for example, in nginx: proxy_set_header X-Real-IP $remote_addr;); this forces the upstream to derive the IP from the TCP connection rather than trust the forwarded header. The trade-off is that this requires changes to every upstream service and eliminates the ability to propagate the original client IP through multi-hop proxy chains.

Affected VersionsENISA

fiber 3.0.0-beta.2, < 3.3.0
fiber < 2.52.14

Affected Packages

go github.com/gofiber/fiber/v2 fix: 2.52.14
go github.com/gofiber/fiber/v3 fix: 3.3.0
euvd fiber fix: 2.52.14
euvd fiber_3_0_0_beta_2 fix: 3.3.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 4 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

GoFiber is a Go web framework built atop fasthttp, and its proxy middleware exposes a BalancerForward helper for round-robin load balancing. The root cause (CWE-290, Authentication Bypass by Spoofing) is a single-line misuse of the fasthttp Header API in middleware/proxy/proxy.go at line 282: c.Request().Header.Add("X-Real-IP", c.IP()) appends a new header value without removing any prior value, whereas Header.Set() would atomically replace all existing values for that header name. The HTTP specification permits multiple header instances with the same name; most server-side frameworks resolve this ambiguity by reading the first occurrence, so the attacker-supplied value wins. Affected packages are pkg:go/github.com_gofiber_fiber_v2 and pkg:go/github.com_gofiber_fiber_v3, meaning both major supported release lines are vulnerable.

Know when Node.js gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/gofiber/fiber) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 5.3 MEDIUM

No credentials or special conditions needed beyond sending an HTTP header; integrity is Low because only IP-dependent control decisions at upstream are manipulated, not data directly.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N
SUSE MEDIUM

Primary rating from Vendor (https://github.com/gofiber/fiber).

CVSS VectorVendor: https://github.com/gofiber/fiber

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

DescriptionCVE.org

Summary

The BalancerForward proxy helper in GoFiber uses Header.Add() instead of Header.Set() when injecting the X-Real-IP header. This appends the real client IP as a second header value rather than replacing any attacker-supplied value. Upstream servers that read the first X-Real-IP header (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-285

go
func BalancerForward(servers []string, clients ...*fasthttp.Client) fiber.Handler {
    r := &roundrobin{
        current: 0,
        pool:    servers,
    }
    return func(c fiber.Ctx) error {
        server := r.get()
        if !strings.HasPrefix(server, "http") {
            server = "http://" + server
        }
        c.Request().Header.Add("X-Real-IP", c.IP())   // line 282: Add, not Set
        return Do(c, server+c.OriginalURL(), clients...)
    }
}

Data Flow

  1. Attacker sends request with X-Real-IP: 10.0.0.1 (spoofed internal IP)
  2. BalancerForward handler executes at line 282
  3. c.Request().Header.Add("X-Real-IP", c.IP()) APPENDS the real IP as a second header
  4. Upstream server receives: X-Real-IP: 10.0.0.1 AND X-Real-IP: <real-attacker-ip>
  5. Most HTTP servers (nginx, Node.js, Apache) read the FIRST value
  6. Upstream uses 10.0.0.1 for all IP-dependent logic

Impact

  • Rate limit bypass: IP-based rate limiting at the upstream uses the spoofed IP, allowing unlimited requests
  • IP ACL bypass: Internal IP allowlists (e.g., admin panels restricted to 10.0.0.0/8) can be bypassed
  • Audit log poisoning: Security logs record the spoofed IP, making incident investigation unreliable
  • Geolocation bypass: IP-based geofencing or region restrictions are circumvented

Fix

Replace Header.Add() with Header.Set() at line 282:

go
c.Request().Header.Set("X-Real-IP", c.IP())

Header.Set() replaces any existing header value, ensuring only the real client IP is forwarded.

Threat Intelligence Overview

EPSS Score
0.5%
Top 64% exploitable
Prevalence
Medium
popular Go web framework, common in Go microservice deployments
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy