CVE-2026-126083
Description
A flaw was found in Action Pack. When deployed behind a reverse proxy that passes client-supplied headers through unchanged, the remote Internet Protocol (IP) address resolution mechanism prioritizes the Forwarded header over the X-Forwarded-For header without verifying consistency between them. An unauthenticated remote attacker can exploit this vulnerability by submitting a request with a crafted Forwarded header containing an arbitrary address. Successful exploitation allows the attacker to spoof their client IP address, potentially bypassing IP-based access controls and rate limits, as well as falsifying audit logs.
Statement
This vulnerability is rated as Important because remote, unauthenticated attackers can spoof their apparent IP address to circumvent IP-based authentication controls and request rate limits. In deployments where reverse proxies do not strip client-injected RFC 7239 headers while appending client addresses to traditional forwarding headers, the application prioritizes the untrusted header without triggering spoof detection checks. Exploitation requires specific proxy architecture preconditions, but a successful attack permits access restriction bypasses and compromises audit trail integrity.
Mitigation
Strip or overwrite the RFC 7239 `Forwarded` header at intermediate reverse proxies or ingress controllers before passing requests to the backend application.
In Nginx:
nginx
proxy_set_header Forwarded "";
In Apache HTTP Server:
apache
RequestHeader unset Forwarded
Alternatively, configure Rack to prioritize `X-Forwarded-For` by setting the following in a Rails application initializer (e.g., `config/initializers/rack.rb`):
ruby
Rack::Request.forwarded_priority = [:x_forwarded]
Warning: Modifying reverse proxy configurations requires reloading or restarting the proxy service (e.g., `systemctl reload httpd` or `systemctl reload nginx`), which may cause brief network interruptions. Disabling the `Forwarded` header causes Rack to ignore RFC 7239 headers when evaluating request scheme, host, and port information.
Common Vulnerability Scoring System (CVSS) Score Details
Info alert:Important note
CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).
The following CVSS metrics and score provided are preliminary and subject to review.
CVSS v3 Score Breakdown
| Red Hat | NVD | cve.org | |
|---|---|---|---|
| Base Score | 7.4 | N/A | 7.4 |
| Attack Vector | Network | N/A | Network |
| Attack Complexity | High | N/A | High |
| Privileges Required | None | N/A | None |
| User Interaction | None | N/A | None |
| Scope | Unchanged | N/A | Unchanged |
| Confidentiality | High | N/A | High |
| Integrity Impact | High | N/A | High |
| Availability Impact | None | N/A | None |
Vector
Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
cve.org: CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Understanding the Weakness (CWE)
Access Control
Technical Impact: Bypass Protection Mechanism; Gain Privileges or Assume Identity
An attacker could utilize the untrusted data source to bypass protection mechanisms and gain access to sensitive data.
Frequently Asked Questions
Not sure what something means? Check out our Security Glossary.
Want to get errata notifications? Sign up here.