# CVE-2026-22860: Rack directory traversal in Rack::Directory

Source: https://junglewise.ai/threats/cve-2026-22860-rack-directory-traversal-in-rack-directory  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-02-18. Updated: 2026-06-30  
License: CC BY 4.0 with a link back

CVE-2026-22860 · Severity: high · CVSS 7.5 · Published 2026-02-18

Rack is a widely used interface for Ruby web applications that helps manage how web servers and applications communicate. A security flaw in its directory listing component allows an attacker to view files and folders outside of the intended directory. This could lead to the exposure of sensitive system information or configuration files if they share a similar name with the authorized folder.

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

## Quick answers

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

**How severe is CVE-2026-22860?** High severity, with a CVSS score of 7.5, published 18 February 2026.

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

**Is there a fix for CVE-2026-22860?** Yes. rack (RubyGems): upgrade to 2.2.22 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

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

**Am I affected by CVE-2026-22860?** Check whether you run 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.22 or later

  ```sh
  bundle update rack
  ```


## Technical details

A directory traversal vulnerability exists in the `Rack::Directory` component of the Rack library. The root cause is an insufficient path validation check that uses a string prefix match (`start_with?`) on expanded paths without enforcing a proper directory boundary. An unauthenticated remote attacker can exploit this by sending a crafted request (e.g., `/../root_example/`) to access a directory that shares a name prefix with the configured root (e.g., accessing `/var/www/root_backup` when the root is `/var/www/root`). This allows for unauthorized directory listing and information disclosure. The issue is resolved in versions 2.2.22, 3.1.20, and 3.2.5.

## Affected products

- Rack Rack < 2.2.22, >= 3.0.0.beta1, < 3.1.20, >= 3.2.0, < 3.2.5
- Red Hat 3scale API Management Platform 2 2

## Identifiers

- CVE-2026-22860
- GHSA-mxw3-3hh2-x2mh

## Timeline

- 2026-02-16: advisory: GitHub Security Advisory published
- 2026-02-18: disclosed: CVE-2026-22860 published
- 2026-02-18: patched: Fixes released in versions 2.2.22, 3.1.20, and 3.2.5

## References

- [https://github.com/rack/rack/commit/75c5745c286637a8f049a33790c71237762069e7](https://github.com/rack/rack/commit/75c5745c286637a8f049a33790c71237762069e7)
- [https://github.com/rack/rack/security/advisories/GHSA-mxw3-3hh2-x2mh](https://github.com/rack/rack/security/advisories/GHSA-mxw3-3hh2-x2mh)
- [https://access.redhat.com/security/cve/CVE-2026-22860](https://access.redhat.com/security/cve/CVE-2026-22860)
- [https://bugzilla.redhat.com/show_bug.cgi?id=2440737](https://bugzilla.redhat.com/show_bug.cgi?id=2440737)
- [https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-22860.json](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-22860.json)

## 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::Static header_rules bypass via dot-segment normalization mismatch](https://junglewise.ai/threats/cve-2026-125110-rack-rack-static-header-rules-bypass-via-dot-segment)
- [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)
