Description
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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
rack rack
< 2.2.25affected>= 3.0, < 3.1.23affected>= 3.2, < 3.2.8affected
References
- https://github.com/rack/rack/security/advisories/GHSA-wvg4-6p58-3gh3 ↗
- https://github.com/rack/rack/commit/18a07fe553afb4d8a678d6a948cd6ba1e11e28be ↗
- https://github.com/rack/rack/commit/9d7f19484ffd5ed5e032678c26ee6eff96d3a0a3 ↗
- https://github.com/rack/rack/commit/e88097ccb88be44d06d47b42daffe04929516ee4 ↗