# CVE-2026-125110: Rack::Static header_rules bypass via dot-segment normalization mismatch

Source: https://junglewise.ai/threats/cve-2026-125110-rack-rack-static-header-rules-bypass-via-dot-segment  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-11-09. Updated: 2026-11-10  
License: CC BY 4.0 with a link back

CVE-2026-125110 · Severity: medium · CVSS 5.3 · Published 2026-11-09

Rack::Static is a Ruby library component that serves static files and applies security headers. An attacker can request protected static files using dot-segment path traversal tricks (like /assets/../uploads/file.html) to bypass the security headers intended for those files, potentially exposing content like HTML uploads that could be rendered inline or downloadable without proper Content-Disposition headers.

Technologies: [rack (RubyGems)](https://junglewise.ai/threats/technologies/rack). Vendors: [Ruby](https://junglewise.ai/threats/vendors/ruby), [RubyGems](https://junglewise.ai/threats/vendors/rubygems).

## Quick answers

**Is CVE-2026-125110 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-125110 being exploited in the wild.

**How severe is CVE-2026-125110?** Medium severity, with a CVSS score of 5.3, published 9 November 2026.

**Which products and versions are affected?** rack (RubyGems) < 2.2.25, ECOSYSTEM:introduced=0,fixed=2.2.25.

**Is there a fix for CVE-2026-125110?** Yes. rack (RubyGems): upgrade to 2.2.25 or later. Until then: Reject requests containing dot segments at a reverse proxy or application boundary. Do not rely solely on Rack::Static header_rules to prevent inline rendering of untrusted uploads; serve them from a separate origin. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-125110 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-125110?** Check whether you run Ruby Rack or rack (RubyGems) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- rack (RubyGems): upgrade to 2.2.25 or later

  ```sh
  bundle update rack
  ```


Reject requests containing dot segments at a reverse proxy or application boundary. Do not rely solely on Rack::Static header_rules to prevent inline rendering of untrusted uploads; serve them from a separate origin.

## Technical details

Rack::Static normalizes request paths using Utils.clean_path_info when deciding which file to serve, but matches header_rules only against URL-decoded paths without dot-segment normalization. An attacker can request /assets/../uploads/file.html or /assets/..%2fuploads/file.html to receive the normalized file (uploads/file.html) while bypassing header_rules checks that expect the clean path. This is a path normalization mismatch; the fix for CVE-2026-34786 added URL decoding to rule matching but omitted normalization.

## Affected products

- Ruby Rack

## Identifiers

- CVE-2026-125110
- GHSA-wvg4-6p58-3gh3

## Timeline

- 2026-11-10: disclosed

## Related threats

- [Rack multipart parser denial of service via unbounded scan buffer growth](https://junglewise.ai/threats/cve-2026-125111-rack-multipart-parsing-allows-dos-via-unbounded-scan-buffer)
- [Rack host validation bypass via HTTP headers](https://junglewise.ai/threats/cve-2026-125109-rack-is-a-modular-ruby-web-server-interface-from-3-0-until-3-1)
- [Rack is a modular Ruby web server interface. Prior to 2.2.25, 3.1.23, and 3.2.8…](https://junglewise.ai/threats/cve-2026-125108-rack-multipart-boundary-ambiguity-guard-in-rack-multipart-parser)
- [Rack Rack::Request host allowlist bypass via Host header poisoning](https://junglewise.ai/threats/cve-2026-34835-rack-rack-request-host-allowlist-bypass-via-host-header-poisoning)
- [Rack algorithmic complexity denial of service in Multipart Parser](https://junglewise.ai/threats/cve-2026-34827-rack-algorithmic-complexity-denial-of-service-in-multipart-parser)
