diff --git a/gems/rack/CVE-2026-22860.yml b/gems/rack/CVE-2026-22860.yml new file mode 100644 index 0000000000..309c5b9a5a --- /dev/null +++ b/gems/rack/CVE-2026-22860.yml @@ -0,0 +1,29 @@ +--- +gem: rack +cve: 2026-22860 +ghsa: mxw3-3hh2-x2mh +url: https://github.com/rack/rack/security/advisories/GHSA-mxw3-3hh2-x2mh +title: Rack has a Directory Traversal via Rack:Directory +date: 2026-02-17 +description: "## Summary\n\n`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.\n\n## Details\n\nIn `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_backup` passes the check because + it shares the same prefix, so `Rack::Directory` will list that directory also. \n\n## + Impact\n\nInformation disclosure via directory listing outside the configured root + when `Rack::Directory` is exposed to untrusted clients and a directory shares the + root prefix (e.g., `public2`, `www_backup`).\n\n## Mitigation\n\n* Update to a patched + version of Rack that correctly checks the root prefix.\n* Don't name directories + with the same prefix as one which is exposed via `Rack::Directory`." +cvss_v3: 7.5 +patched_versions: +- "~> 2.2.22" +- "~> 3.1.20" +- ">= 3.2.5" +related: + url: + - https://github.com/rack/rack/security/advisories/GHSA-mxw3-3hh2-x2mh + - https://github.com/rack/rack/commit/75c5745c286637a8f049a33790c71237762069e7 + - https://github.com/advisories/GHSA-mxw3-3hh2-x2mh diff --git a/gems/rack/CVE-2026-25500.yml b/gems/rack/CVE-2026-25500.yml new file mode 100644 index 0000000000..e2e3098feb --- /dev/null +++ b/gems/rack/CVE-2026-25500.yml @@ -0,0 +1,53 @@ +--- +gem: rack +cve: 2026-25500 +ghsa: whrj-4476-wvmp +url: https://github.com/rack/rack/security/advisories/GHSA-whrj-4476-wvmp +title: 'Stored XSS in Rack::Directory via javascript: filenames rendered into anchor + href' +date: 2026-02-17 +description: |- + ## Summary + + `Rack::Directory` generates an HTML directory index where each file entry is rendered as a clickable link. If a file exists on disk whose basename begins with the `javascript:` scheme (e.g. `javascript:alert(1)`), the generated index includes an anchor whose `href` attribute is exactly `javascript:alert(1)`. Clicking this entry executes arbitrary JavaScript in the context of the hosting application. + + This results in a client-side XSS condition in directory listings generated by `Rack::Directory`. + + ## Details + + `Rack::Directory` renders directory entries using an HTML row template similar to: + + ```html + %s + ``` + + The `%s` placeholder is populated directly with the file’s basename. If the basename begins with `javascript:`, the resulting HTML contains an executable JavaScript URL: + + ```html + javascript:alert(1) + ``` + + Because the value is inserted directly into the `href` attribute without scheme validation or normalization, browsers interpret it as a JavaScript URI. When a user clicks the link, the JavaScript executes in the origin of the Rack application. + + ## Impact + + If `Rack::Directory` is used to expose filesystem contents over HTTP, an attacker who can create or upload files within that directory may introduce a malicious filename beginning with `javascript:`. + + When a user visits the directory listing and clicks the entry, arbitrary JavaScript executes in the application's origin. Exploitation requires user interaction (clicking the malicious entry). + + ## Mitigation + + * Update to a patched version of Rack in which `Rack::Directory` prefixes generated anchors with a relative path indicator (e.g. `./filename`). + * Avoid exposing user-controlled directories via `Rack::Directory`. + * Apply a strict Content Security Policy (CSP) to reduce impact of potential client-side execution issues. + * Where feasible, restrict or sanitize uploaded filenames to disallow dangerous URI scheme prefixes. +cvss_v3: 5.4 +patched_versions: +- "~> 2.2.22" +- "~> 3.1.20" +- ">= 3.2.5" +related: + url: + - https://github.com/rack/rack/security/advisories/GHSA-whrj-4476-wvmp + - https://github.com/rack/rack/commit/f2f225f297b99fbee3d9f51255d41f601fc40aff + - https://github.com/advisories/GHSA-whrj-4476-wvmp