CVE-2026-25500 json
Rack's Stored XSS in Rack::Directory via javascript: filenames rendered into anchor href
published 2026-02-17 8 mo ago modified 2026-09-10 1 mo ago also EUVD-2026-7916 , GHSA-whrj-4476-wvmp
- cvss
- 5.4
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 19%
- public exploits
- 0
- none known
Summary
Rack is a modular Ruby web server interface. Prior to versions 2.2.22, 3.1.20, and 3.2.5, `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 starts with the `javascript:` scheme (e.g. `javascript:alert(1)`), the generated index contains an anchor whose `href` is exactly `javascript:alert(1)`. Clicking the entry executes JavaScript in the browser (demonstrated with `alert(1)`). Versions 2.2.22, 3.1.20, and 3.2.5 fix the issue.
Patch / fix
- rubygems rack 2.2.22, 3.1.20, 3.2.5
- rack rack 2.2.22, 3.1.20, 3.2.5
- rack_project rack 2.2.22, 3.1.20, 3.2.5
- ruby-rack Debian 12 2.2.22-0+deb12u1
- ruby-rack Debian 13 3.1.20-0+deb13u1
- ruby-rack Debian 14 3.2.5-1
debian advisories DEBIAN-CVE-2026-25500
- ruby-rack Ubuntu 24.04 LTS 2.2.7-1ubuntu0.6
- ruby-rack Ubuntu 25.10 3.1.16-0.1ubuntu0.2
- ruby-rack Ubuntu 26.10, Ubuntu 26.04 LTS 3.2.4-1ubuntu1
- ruby-rack Ubuntu Pro 20.04 LTS 2.0.7-2ubuntu0.1+esm9
- ruby-rack Ubuntu Pro 22.04 LTS 2.1.4-5ubuntu1.2+esm2
ubuntu advisories UBUNTU-CVE-2026-25500
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- rubygem-rack-2.2 openSUSE Tumbleweed 2.2.22-1.1
opensuse advisories openSUSE-SU-2026:10286-1
- github.com/rack/rack@f2f225f commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-25500 updated cvss 5.4
rubygem-rack: Rack stored XSS in Rack::Directory
-
Red Hat Logging Subsystem for Red Hat OpenShift openshift-logging/vector-rhel9, openshift-logging/fluentd-rhel9, openshift-logging/eventrouter-rhel9, openshift-logging/logging-view-plugin-rhel9, openshift-logging/cluster-logging-rhel9-operator, openshift-logging/log-file-metric-exporter-rhel9, +1 more Red Hat 3scale API Management Platform 2 3scale-amp21/zync, 3scale-amp22/zync, 3scale-amp24/zync, 3scale-amp25/zync, 3scale-amp26/zync, 3scale-amp20/system, +19 more Red Hat Enterprise Linux 7 pcs, pcs-snmp, python-clufter Red Hat Enterprise Linux 8 pcs, pcs-snmp Red Hat Enterprise Linux 9 pcs, pcs-snmp, ubi9/ruby-30, ubi9/ruby-33, rhel9/ruby-30, rhel9/ruby-33 Red Hat Enterprise Linux 10 pcsaffected: workaround, no fix available “Fix deferred”
-
Red Hat Satellite 6 rubygem-racknot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 8 mo ago
Exploit prediction
0.27% chance of exploitation in the next 30 days, higher than 19% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/rack/rack/security/advisories/GHSA-whrj-4476-wvmp referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| GitHub | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | rack | <2.2.22 >=3.0.0.beta1, <3.1.20 >=3.2.0, <3.2.5 |
2.2.22 3.1.20 3.2.5 |
Affected products
- rack rack
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/rack/rack/commit/f2f225f297b99fbee3d9f51255d41f601fc40aff
web, patch
-
github.com
/rack/rack/security/advisories/GHSA-whrj-4476-wvmp
web, exploit, mitigation, vendor-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-25500
advisory
-
github.com
/rack/rack
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2026-25500.yml
web
Sources
- CVE List CVE-2026-25500
- GitHub Advisory GHSA-whrj-4476-wvmp
- NVD CVE-2026-25500
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.