Bug 2570166 (CVE-2026-125110)

Summary: CVE-2026-125110 rack: rack: Security header bypass via unnormalized dot segments in request paths
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: akostadi, amasferr, crizzo, dmayorov, eglynn, eshamard, jjoyce, jlledo, jpretori, jschluet, jvasik, kaycoth, lhh, mburns, mgarciac, pantinor, rblanco, rhel-process-autobot, tsedmik, watson-tool-maintainers
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in Rack. An unauthenticated remote attacker can bypass path-specific security headers by requesting files using paths containing raw or percent-encoded dot segments. This issue occurs because the static file serving component normalizes paths when locating files but evaluates header rules against unnormalized paths. Consequently, protected files can be delivered to clients without configured protections, such as Content-Security-Policy (CSP) or Content-Disposition headers.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-11-10 19:40:37 UTC
Rack is a modular Ruby web server interface. Prior to 2.2.25, 3.1.23, and 3.2.8, Rack::Static serves a path after Utils.clean_path_info normalization but evaluates header_rules against a path that is only URL-decoded. An unauthenticated attacker can request a known file through raw or percent-encoded dot segments and receive it without path-specific security headers such as Content-Disposition or Content-Security-Policy. Applications that do not use path-specific header_rules are not affected. This issue is fixed in versions 2.2.25, 3.1.23, and 3.2.8.