Rack has a Directory Traversal via Rack:Directory
Package
Affected versions
< 2.2.22
>= 3.0.0.beta1, < 3.1.20
>= 3.2.0, < 3.2.5
Patched versions
2.2.22
3.1.20
3.2.5
Description
Published to the GitHub Advisory Database
Feb 17, 2026
Reviewed
Feb 17, 2026
Published by the National Vulnerability Database
Feb 18, 2026
Last updated
Feb 18, 2026
Summary
Rack::Directory’s path check used a string prefix match on the expanded path. A request like/../root_example/can escape the configured root if the target path starts with the root string, allowing directory listing outside the intended root.Details
In
directory.rb,File.expand_path(File.join(root, path_info)).start_with?(root)does not enforce a path boundary. If the server root is/var/www/root, a path like/var/www/root_backuppasses the check because it shares the same prefix, soRack::Directorywill list that directory also.Impact
Information disclosure via directory listing outside the configured root when
Rack::Directoryis exposed to untrusted clients and a directory shares the root prefix (e.g.,public2,www_backup).Mitigation
Rack::Directory.References