CVE-2026-34785
Rack: Local file inclusion in `Rack::Static` via URL Prefix Matching
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.5
Rack: Local file inclusion in `Rack::Static` via URL Prefix Matching
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Record
CVE-2026-34785- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-187, CWE-200, CWE-552
- Updated
- 2026-11-02
EUVDEUVD-2026-18382
7.5
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Record
EUVD-2026-18382- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-h2jq-g4cq-5ppq
7.5
Rack::Static prefix matching can expose unintended files under the static root
Summary
Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql".
As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure.
Details
Rack::Static#route_file performs static-route matching using logic equivalent to:
@urls.any? { |url| path.index(url) == 0 }
This checks only whether the request path starts with the configured prefix string. It does not require a path segment boundary after the prefix.
For example, with:
use Rack::Static, urls: ["/css", "/js"], root: "public"
the following path is matched as intended:
/css/style.css
but these paths are also matched:
/css-config.env
/css-backup.sql
/csssecrets.yml
If such files exist under the configured static root, Rack forwards the request to the file server and serves them as static content.
This means a configuration intended to expose only directory trees such as /css/... and /js/... may also expose sibling files whose names begin with those same strings.
Impact
An attacker can request files under the configured static root whose names share a configured URL prefix and obtain their contents.
In affected deployments, this may expose configuration files, secrets, backups, environment files, or other unintended static content located under the same root directory.
Mitigation
- Update to a patched version of Rack that enforces a path boundary when matching configured static URL prefixes.
- Match only paths that are either exactly equal to the configured prefix or begin with
prefix + "/". - Avoid placing sensitive files under the
Rack::Staticroot directory. - Prefer static URL mappings that cannot overlap with sensitive filenames.
- Record
GHSA-h2jq-g4cq-5ppq- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-187, CWE-200
- Updated
- 2026-11-02
NVD
7.5
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Record
CVE-2026-34785- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-187, CWE-200, CWE-552
- Updated
- 2026-11-02
OSV
7.5
Rack: Local file inclusion in `Rack::Static` via URL Prefix Matching
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Record
CVE-2026-34785- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-187, CWE-200
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-34785
7.5
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Record
DEBIAN-CVE-2026-34785- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
Show 10 moreShow less
OSVGHSA-h2jq-g4cq-5ppq
7.5
Rack::Static prefix matching can expose unintended files under the static root
Summary
Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql".
As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure.
Details
Rack::Static#route_file performs static-route matching using logic equivalent to:
@urls.any? { |url| path.index(url) == 0 }
This checks only whether the request path starts with the configured prefix string. It does not require a path segment boundary after the prefix.
For example, with:
use Rack::Static, urls: ["/css", "/js"], root: "public"
the following path is matched as intended:
/css/style.css
but these paths are also matched:
/css-config.env
/css-backup.sql
/csssecrets.yml
If such files exist under the configured static root, Rack forwards the request to the file server and serves them as static content.
This means a configuration intended to expose only directory trees such as /css/... and /js/... may also expose sibling files whose names begin with those same strings.
Impact
An attacker can request files under the configured static root whose names share a configured URL prefix and obtain their contents.
In affected deployments, this may expose configuration files, secrets, backups, environment files, or other unintended static content located under the same root directory.
Mitigation
- Update to a patched version of Rack that enforces a path boundary when matching configured static URL prefixes.
- Match only paths that are either exactly equal to the configured prefix or begin with
prefix + "/". - Avoid placing sensitive files under the
Rack::Staticroot directory. - Prefer static URL mappings that cannot overlap with sensitive filenames.
- Record
GHSA-h2jq-g4cq-5ppq- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-187, CWE-200
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-34785
7.5
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static determines whether a request should be served as a static file using a simple string prefix check. When configured with URL prefixes such as "/css", it matches any request path that begins with that string, including unrelated paths such as "/css-config.env" or "/css-backup.sql". As a result, files under the static root whose names merely share the configured prefix may be served unintentionally, leading to information disclosure. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Record
UBUNTU-CVE-2026-34785- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-04
OSVMGASA-2026-0226 No score
Updated ruby-rack packages fix security vulnerabilities
CVE-2026-26961 Greedy multipart boundary parsing can cause parser
differentials and WAF bypass. Forwarded header semicolon injection
enables Host and Scheme spoofing.
CVE-2026-34230 Quadratic complexity in
Rack::Utils.select_best_encoding via wildcard Accept-Encoding
header.
CVE-2026-34763 Root directory disclosure via unescaped regex
interpolation in Rack::Directory.
CVE-2026-34785 Rack::Static prefix matching can expose unintended
files under the static root.
CVE-2026-34786 Rack::Static header_rules bypass via URL-encoded path
mismatch.
CVE-2026-34826 Multipart byte range processing allows denial of service
via excessive overlapping ranges.
CVE-2026-34827 Multipart header parsing allows denial of service via
escape-heavy quoted parameters.
CVE-2026-34829 Multipart parsing without Content-Length header allows
unbounded chunked file uploads.
CVE-2026-34830 Rack::Sendfile header-based X-Accel-Mapping regex
injection enables unauthorized X-Accel-Redirect.
CVE-2026-34831 Content-Length mismatch in Rack::Files error
responses.
CVE-2026-34835 Rack::Request accepts invalid Host characters, enabling
host allowlist bypass.
- Record
MGASA-2026-0226- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10508-1 No score
ruby4.0-rubygem-rack-2.2-2.2.23-1.1 on GA media
These are all security issues fixed in the ruby4.0-rubygem-rack-2.2-2.2.23-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10508-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21640-1 No score
Security update for rmt-server
This update for rmt-server fixes the following issues:
Update to version 3.1 (bsc#1274715).
Security issues fixed:
- CVE-2026-26961: rack: greedy multipart boundary parsing can lead to parser differentials and WAF bypass (bsc#1261398).
- CVE-2026-26962: rack: improper unfolding of folded multipart headers can lead to downstream header injection and response splitting(bsc#1261471).
- CVE-2026-34763: rack: unescaped regex interpolation of configured root path can lead to root directory disclosure (bsc#1261406).
- CVE-2026-34230: rack: crafted
Accept-Encodingheaders can cause a denial of service (bsc#1261388). - CVE-2026-34785: rack: prefix matching logic can lead to the exposure of unintended files under the static root (bsc#1261417).
- CVE-2026-34786: rack: URL-encoded path mismatch can lead to
header_rulesbypass (bsc#1261426). - CVE-2026-34826: rack: missing individual byte range limit checks when parsing HTTP
Rangeheaders can lead to excessive resource consumption and a denial of service (bsc#1261436). - CVE-2026-34829: rack: multipart parsing without
Content-Lengthheader can lead to unbounded chunked file uploads and a denial of service (bsc#1261447). - CVE-2026-34230: rack: quadratic complexity when processing of wildcard
Accept-Encodingheaders can lead to a denial of service (bsc#1261388). - CVE-2026-34830: rack: improper sanitization of the
X-Accel-Mappingrequest header can lead to the exposure of unintended files viaX-Accel-Redirect(bsc#1261458). - CVE-2026-34831: rack:
Content-Lengthheader and body byte size mismatch when creating error responses can lead to incorrect HTTP response framing (bsc#1261466).
Other updates and bugfixes:
- Version 3.1:
- Remove all errors and warnigs due to new Ruby and Ruby on Rails versions
- Version 2.28:
- Set arch to unknown for Rancher based products (jsc#SCC-759)
- Fix purge for large amount of systems (bsc#1262706)
- Change data type to
MEDIUMTEXTin profiles table (bsc#1268305) - Remove
proxy_byoscolumn - Fix race condition when no system matches (bsc#1268301)
- Fix race condition for PAYG (bsc#1268149)
- Fix race condition to update a system (bsc#1268303)
- Version 2.27:
- Fix ReDoS vulnerability in
Addressable - Fixes out-of-bounds read vulnerability in
rdiscount
- Fix ReDoS vulnerability in
- Record
openSUSE-SU-2026:21640-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:1745-1 No score
Security update for rmt-server
This update for rmt-server fixes the following issues:
Update to version 2.27.
Security issues fixed:
- CVE-2026-26961: rack: greedy multipart boundary parsing can lead to parser differentials and WAF bypass (bsc#1261398).
- CVE-2026-26962: rack: improper unfolding of folded multipart headers can lead to downstream header injection and response splitting(bsc#1261471).
- CVE-2026-34763: rack: unescaped regex interpolation of configured root path can lead to root directory disclosure (bsc#1261406).
- CVE-2026-34785: rack: prefix matching logic can lead to the exposure of unintended files under the static root (bsc#1261417).
- CVE-2026-34786: rack: URL-encoded path mismatch can lead to
header_rulesbypass (bsc#1261426). - CVE-2026-34826: rack: missing individual byte range limit checks when parsing HTTP
Rangeheaders can lead to excessive resource consumption and a denial of service (bsc#1261436). - CVE-2026-34829: rack: multipart parsing without
Content-Lengthheader can lead to unbounded chunked file uploads and a denial of service (bsc#1261447). - CVE-2026-34230: rack: quadratic complexity when processing of wildcard
Accept-Encodingheaders can lead to a denial of service (bsc#1261388). - CVE-2026-34830: rack: improper sanitization of the
X-Accel-Mappingrequest header can lead to the exposure of unintended files viaX-Accel-Redirect(bsc#1261458). - CVE-2026-34831: rack:
Content-Lengthheader and body byte size mismatch when creating error responses can lead to incorrect HTTP response framing (bsc#1261466).
Other updates and bugfixes:
- Fix ReDoS in
Addressable. - Fix out-of-bounds read in
rdiscount.
- Record
SUSE-SU-2026:1745-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:1964-1 No score
Security update for rmt-server
This update for rmt-server fixes the following issues
- CVE-2026-26961: rack: mismatch in header handling can allow to smuggle multipart content (bsc#1261398).
- CVE-2026-26962: rack: improper unfolding of folded multipart headers can lead to header injection or response splitting (bsc#1261471).
- CVE-2026-34230: rack: crafted Accept-Encoding header can cause a denial of service (bsc#1261388).
- CVE-2026-34763: rack: failing of the prefix stripping can lead to information disclosure (bsc#1261406).
- CVE-2026-34785: rack: prefix matching can expose unintended files under the static root (bsc#1261417).
- CVE-2026-34786: rack: URL-encoded path mismatch can lead to
header_rulesbypass (bsc#1261426). - CVE-2026-34826: rack: multipart byte range processing can allow denial of service (bsc#1261436).
- CVE-2026-34829: rack: multipart parsing without
Content-Lengthheader allows unbounded chunked file uploads (bsc#1261447). - CVE-2026-34830: rack: crafted
X-Accel-Mappingheaders can lead to regex injection (bsc#1261458). - CVE-2026-34831: rack:
Content-Lengthmismatch can lead to incorrectly framed error responses (bsc#1261466).
Other fixes:
- Update to version 2.27
- Record
SUSE-SU-2026:1964-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23321-1 No score
Security update for rmt-server
This update for rmt-server fixes the following issues:
Update to version 3.1 (bsc#1274715).
Security issues fixed:
- CVE-2026-26961: rack: greedy multipart boundary parsing can lead to parser differentials and WAF bypass (bsc#1261398).
- CVE-2026-26962: rack: improper unfolding of folded multipart headers can lead to downstream header injection and response splitting(bsc#1261471).
- CVE-2026-34763: rack: unescaped regex interpolation of configured root path can lead to root directory disclosure (bsc#1261406).
- CVE-2026-34230: rack: crafted
Accept-Encodingheaders can cause a denial of service (bsc#1261388). - CVE-2026-34785: rack: prefix matching logic can lead to the exposure of unintended files under the static root (bsc#1261417).
- CVE-2026-34786: rack: URL-encoded path mismatch can lead to
header_rulesbypass (bsc#1261426). - CVE-2026-34826: rack: missing individual byte range limit checks when parsing HTTP
Rangeheaders can lead to excessive resource consumption and a denial of service (bsc#1261436). - CVE-2026-34829: rack: multipart parsing without
Content-Lengthheader can lead to unbounded chunked file uploads and a denial of service (bsc#1261447). - CVE-2026-34230: rack: quadratic complexity when processing of wildcard
Accept-Encodingheaders can lead to a denial of service (bsc#1261388). - CVE-2026-34830: rack: improper sanitization of the
X-Accel-Mappingrequest header can lead to the exposure of unintended files viaX-Accel-Redirect(bsc#1261458). - CVE-2026-34831: rack:
Content-Lengthheader and body byte size mismatch when creating error responses can lead to incorrect HTTP response framing (bsc#1261466).
Other updates and bugfixes:
- Version 3.1:
- Remove all errors and warnigs due to new Ruby and Ruby on Rails versions
- Version 2.28:
- Set arch to unknown for Rancher based products (jsc#SCC-759)
- Fix purge for large amount of systems (bsc#1262706)
- Change data type to
MEDIUMTEXTin profiles table (bsc#1268305) - Remove
proxy_byoscolumn - Fix race condition when no system matches (bsc#1268301)
- Fix race condition for PAYG (bsc#1268149)
- Fix race condition to update a system (bsc#1268303)
- Version 2.27:
- Fix ReDoS vulnerability in
Addressable - Fixes out-of-bounds read vulnerability in
rdiscount
- Fix ReDoS vulnerability in
- Record
SUSE-SU-2026:23321-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:2487-1 No score
Security update for rmt-server
This update for rmt-server fixes the following issues
- CVE-2026-26961: rack: mismatch in header handling can allow to smuggle multipart content (bsc#1261398).
- CVE-2026-26962: rack: improper unfolding of folded multipart headers can lead to header injection or response splitting (bsc#1261471).
- CVE-2026-34230: rack: crafted Accept-Encoding header can cause a denial of service (bsc#1261388).
- CVE-2026-34763: rack: failing of the prefix stripping can lead to information disclosure (bsc#1261406).
- CVE-2026-34785: rack: prefix matching can expose unintended files under the static root (bsc#1261417).
- CVE-2026-34786: rack: URL-encoded path mismatch can lead to
header_rulesbypass (bsc#1261426). - CVE-2026-34826: rack: multipart byte range processing can allow denial of service (bsc#1261436).
- CVE-2026-34829: rack: multipart parsing without
Content-Lengthheader allows unbounded chunked file uploads (bsc#1261447). - CVE-2026-34830: rack: crafted
X-Accel-Mappingheaders can lead to regex injection (bsc#1261458). - CVE-2026-34831: rack:
Content-Lengthmismatch can lead to incorrectly framed error responses (bsc#1261466).
Changes for rmt-server:
- Updated to version 2.27
- Record
SUSE-SU-2026:2487-1- Updated
- 2026-11-02
OSVUSN-8989-1 No score
ruby-rack vulnerabilities
Andrew Lacambra discovered that Rack did not properly parse certain regular expressions. An attacker could possibly use this issue to bypass network security filters. (CVE-2026-26961)
William T. Nelson discovered that Rack did not handle multipart headers correctly. An attacker could possibly use this issue to cause downstream parsing issues or a denial of service. (CVE-2026-26962)
It was discovered that Rack did not handle the Forwarded header correctly. An attacker could possibly use this issue to manipulate header values. (CVE-2026-32762)
It was discovered that Rack could consume excessive CPU when handling certain Accept-Encoding values. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34230)
Haruki Oyama discovered that certain configurations of Rack could erroneously fail to derive the displayed directory path, and expose the full file system path. An attacker could possibly use this issue to disclose deployment details such as layout and usernames. (CVE-2026-34763)
It was discovered that Rack did not properly handle static file paths. An attacker could possibly use this issue to exfiltrate unintentionally served data. (CVE-2026-34785)
Haruki Oyama discovered that Rack did not apply header rules to certain requests for URL-encoded static paths. An attacker could possibly use this issue to bypass security-relevant response headers. (CVE-2026-34786)
It was discovered that Rack did not limit the number of ranges requested in the Range header. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34826)
It was discovered that Rack could consume excessive CPU when parsing certain multipart parameters. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34827)
It was discovered that Rack could consume unbounded disk space when handling requests without a Content-Length header. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34829)
Mehtab Zafar discovered that Rack directly interpreted the X-Accel-Mapping header as a regular expression without escaping. An attacker could possibly use this issue to exfiltrate arbitrary files from internal locations. (CVE-2026-34830)
It was discovered that Rack did not properly handle messages with Unicode. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34831)
It was discovered that Rack did not properly parse the Host header. An attacker could possibly use this issue to bypass security filters or poison generated links. (CVE-2026-34835)
- Record
USN-8989-1- Updated
- 2026-11-04
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
rackRubyGems |
before 2.2.23 | 2.2.23 |
rackRubyGems |
3.0.0.beta1 up to 3.1.21 | 3.1.21 |
rackRubyGems |
3.2.0 up to 3.2.6 | 3.2.6 |
ruby-rackDebian:12 |
before 2.2.22-0+deb12u2, plus listed versions 2.2.13-1~deb12u12.2.20-0+deb12u12.2.22-0+deb12u12.2.6.4-12.2.6.4-1+deb12u12.2.7-12.2.7-1.1 |
2.2.22-0+deb12u2 |
ruby-rackDebian:13 |
before 3.1.20-0+deb13u2, plus listed versions 3.1.16-0.13.1.18-13.1.18-1~deb13u13.1.20-0+deb13u1 |
3.1.20-0+deb13u2 |
ruby-rackDebian:14 |
before 3.2.6-2, plus listed versions 3.1.16-0.13.1.18-13.1.18-1~deb13u13.2.4-13.2.5-13.2.5-23.2.6-1 |
3.2.6-2 |
rackRubyGems |
before 2.2.23, plus listed versions 0.1.00.2.00.3.00.4.00.9.0 Show 45 moreShow less0.9.11.0.01.0.11.1.01.1.11.1.1.pre1.1.21.1.31.1.41.1.51.1.61.2.01.2.11.2.21.2.31.2.41.2.51.2.61.2.71.2.81.3.01.3.0.beta1.3.0.beta21.3.11.3.101.3.21.3.31.3.41.3.51.3.61.3.71.3.81.3.91.4.01.4.11.4.21.4.31.4.41.4.51.4.61.4.71.5.01.5.0.beta.11.5.0.beta.21.5.1 |
2.2.23 |
rackRubyGems |
3.0.0.beta1 up to 3.1.21, plus listed versions 3.0.03.0.0.rc13.0.13.0.103.0.11 Show 40 moreShow less3.0.123.0.133.0.143.0.153.0.163.0.173.0.183.0.23.0.33.0.43.0.4.13.0.4.23.0.53.0.63.0.6.13.0.73.0.83.0.93.0.9.13.1.03.1.13.1.103.1.113.1.123.1.133.1.143.1.153.1.163.1.173.1.183.1.193.1.23.1.203.1.33.1.43.1.53.1.63.1.73.1.83.1.9 |
3.1.21 |
rackRubyGems |
3.2.0 up to 3.2.6, plus listed versions 3.2.13.2.23.2.33.2.43.2.5 |
3.2.6 |
ruby-rackMageia:9 From an advisory covering 12 CVEs |
before 2.2.23-1.mga9 | 2.2.23-1.mga9 |
Show 20 moreShow less
| Package | Affected | Fixed |
|---|---|---|
rmt-serverSUSE:Linux Enterprise Server 16.0 From an advisory covering 10 CVEs |
before 3.1.0-160000.1.1 | 3.1.0-160000.1.1 |
rmt-serverSUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 10 CVEs |
before 3.1.0-160000.1.1 | 3.1.0-160000.1.1 |
rmt-serverSUSE:Linux Enterprise Module for Public Cloud 15 SP5 From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise Module for Public Cloud 15 SP6 From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise Server 15 SP5-LTSS From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise Server 15 SP6-LTSS From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise Server for SAP Applications 15 SP5 From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
rmt-serverSUSE:Linux Enterprise Server for SAP Applications 15 SP6 From an advisory covering 10 CVEs |
before 2.27-150500.3.47.1 | 2.27-150500.3.47.1 |
ruby-rackUbuntu:Pro:14.04:LTS |
before 1.5.2-3+deb8u3ubuntu1~esm11, plus listed versions 1.5.2-11.5.2-1ubuntu0.1~esm11.5.2-3+deb8u3ubuntu1~esm21.5.2-3+deb8u3ubuntu1~esm31.5.2-3+deb8u3ubuntu1~esm4 Show 5 moreShow less1.5.2-3+deb8u3ubuntu1~esm61.5.2-3+deb8u3ubuntu1~esm71.5.2-3+deb8u3ubuntu1~esm81.5.2-3+deb8u3ubuntu1~esm91.5.2-3+deb8u3ubuntu1~esm10 |
1.5.2-3+deb8u3ubuntu1~esm11 |
ruby-rackUbuntu:Pro:16.04:LTS |
before 1.6.4-3ubuntu0.2+esm10, plus listed versions 1.5.2-41.6.4-21.6.4-31.6.4-3ubuntu0.11.6.4-3ubuntu0.2 Show 8 moreShow less1.6.4-3ubuntu0.2+esm11.6.4-3ubuntu0.2+esm21.6.4-3ubuntu0.2+esm41.6.4-3ubuntu0.2+esm51.6.4-3ubuntu0.2+esm61.6.4-3ubuntu0.2+esm71.6.4-3ubuntu0.2+esm81.6.4-3ubuntu0.2+esm9 |
1.6.4-3ubuntu0.2+esm10 |
ruby-rackUbuntu:Pro:18.04:LTS |
before 1.6.4-4ubuntu0.2+esm10, plus listed versions 1.6.4-41.6.4-4ubuntu0.11.6.4-4ubuntu0.21.6.4-4ubuntu0.2+esm11.6.4-4ubuntu0.2+esm2 Show 6 moreShow less1.6.4-4ubuntu0.2+esm41.6.4-4ubuntu0.2+esm51.6.4-4ubuntu0.2+esm61.6.4-4ubuntu0.2+esm71.6.4-4ubuntu0.2+esm81.6.4-4ubuntu0.2+esm9 |
1.6.4-4ubuntu0.2+esm10 |
ruby-rackUbuntu:Pro:22.04:LTS |
before 2.1.4-5ubuntu1.2+esm3, plus listed versions 2.1.4-32.1.4-42.1.4-52.1.4-5ubuntu12.1.4-5ubuntu1+esm2 Show 9 moreShow less2.1.4-5ubuntu1+esm32.1.4-5ubuntu1+esm42.1.4-5ubuntu1+esm52.1.4-5ubuntu1.12.1.4-5ubuntu1.1+esm12.1.4-5ubuntu1.1+esm22.1.4-5ubuntu1.22.1.4-5ubuntu1.2+esm12.1.4-5ubuntu1.2+esm2 |
2.1.4-5ubuntu1.2+esm3 |
ruby-rackUbuntu:24.04:LTS |
before 2.2.7-1ubuntu0.7, plus listed versions 2.2.4-32.2.7-12.2.7-1ubuntu0.12.2.7-1ubuntu0.22.2.7-1ubuntu0.32.2.7-1ubuntu0.42.2.7-1ubuntu0.52.2.7-1ubuntu0.6 |
2.2.7-1ubuntu0.7 |
ruby-rackUbuntu:25.10 |
before 3.1.16-0.1ubuntu0.3, plus listed versions 2.2.7-1.13.1.16-0.13.1.16-0.1ubuntu0.13.1.16-0.1ubuntu0.2 |
3.1.16-0.1ubuntu0.3 |
ruby-rackUbuntu:26.04:LTS |
before 3.2.4-1ubuntu1.1, plus listed versions 3.1.16-0.13.1.18-13.1.18-1build13.2.4-1ubuntu1 |
3.2.4-1ubuntu1.1 |
ruby-rackUbuntu:26.04:LTS From an advisory covering 13 CVEs |
before 3.2.4-1ubuntu1.1, plus listed versions 3.1.16-0.13.1.18-13.1.18-1build13.2.4-1ubuntu1 |
3.2.4-1ubuntu1.1 |
rubygem-rack-2.2openSUSE:Tumbleweed From an advisory covering 9 CVEs |
before 2.2.23-1.1 | 2.2.23-1.1 |
rmt-serveropenSUSE:Leap 16.0 From an advisory covering 10 CVEs |
before 3.1.0-160000.1.1 | 3.1.0-160000.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| affected, aliases, references | OSV | |
| affected, facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-34785 is a high vulnerability (CVSS 7.5) in Rack, published April 2, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.39%, the 33rd percentile. Fixed in rack 2.2.23.
References
github.com/rack/rack/security/advisories/GHSA-h2jq-g4cq-5ppq
access.redhat.com/security/cve/CVE-2026-34785
bugzilla.redhat.com/show_bug.cgi?id=2454486
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-34785.json
nvd.nist.gov/vuln/detail/CVE-2026-34785
github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2026-34785.yml
Show 64 moreShow less
github.com/advisories/GHSA-h2jq-g4cq-5ppq
github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34785.json
security-tracker.debian.org/tracker/CVE-2026-34785
github.com/rack/rack
advisories.mageia.org/MGASA-2026-0226.html
bugs.mageia.org/show_bug.cgi?id=35446
github.com/rack/rack/security/advisories/GHSA-vgpv-f759-9wx3
github.com/rack/rack/security/advisories/GHSA-qfgr-crr9-7r49
github.com/rack/rack/security/advisories/GHSA-v569-hp3g-36wr
github.com/rack/rack/security/advisories/GHSA-7mqq-6cf9-v2qp
github.com/rack/rack/security/advisories/GHSA-q4qf-9j86-f5mh
github.com/rack/rack/security/advisories/GHSA-x8cg-fq8g-mxfx
github.com/rack/rack/security/advisories/GHSA-v6x5-cg8r-vv6x
github.com/rack/rack/security/advisories/GHSA-8vqr-qjwx-82mw
github.com/rack/rack/security/advisories/GHSA-qv7j-4883-hwh7
github.com/rack/rack/security/advisories/GHSA-q2ww-5357-x388
github.com/rack/rack/security/advisories/GHSA-g2pf-xv49-m2h5
suse.com/support/update/announcement/2026/suse-su-20261745-1
bugzilla.suse.com/1261388
bugzilla.suse.com/1261398
bugzilla.suse.com/1261406
bugzilla.suse.com/1261417
bugzilla.suse.com/1261426
bugzilla.suse.com/1261436
bugzilla.suse.com/1261447
bugzilla.suse.com/1261458
bugzilla.suse.com/1261466
bugzilla.suse.com/1261471
suse.com/security/cve/CVE-2026-26961
suse.com/security/cve/CVE-2026-26962
suse.com/security/cve/CVE-2026-34230
suse.com/security/cve/CVE-2026-34763
suse.com/security/cve/CVE-2026-34785
suse.com/security/cve/CVE-2026-34786
suse.com/security/cve/CVE-2026-34826
suse.com/security/cve/CVE-2026-34829
suse.com/security/cve/CVE-2026-34830
suse.com/security/cve/CVE-2026-34831
suse.com/support/update/announcement/2026/suse-su-20261964-1
bugzilla.suse.com/1246976
suse.com/support/update/announcement/2026/suse-su-202623321-1
bugzilla.suse.com/1262706
bugzilla.suse.com/1268149
bugzilla.suse.com/1268301
bugzilla.suse.com/1268303
bugzilla.suse.com/1268305
bugzilla.suse.com/1274715
suse.com/support/update/announcement/2026/suse-su-20262487-1
ubuntu.com/security/CVE-2026-34785
cve.org/CVERecord?id=CVE-2026-34785
ubuntu.com/security/notices/USN-8182-1
ubuntu.com/security/notices/USN-8989-1
ubuntu.com/security/CVE-2026-26961
ubuntu.com/security/CVE-2026-26962
ubuntu.com/security/CVE-2026-32762
ubuntu.com/security/CVE-2026-34230
ubuntu.com/security/CVE-2026-34763
ubuntu.com/security/CVE-2026-34786
ubuntu.com/security/CVE-2026-34826
ubuntu.com/security/CVE-2026-34827
ubuntu.com/security/CVE-2026-34829
ubuntu.com/security/CVE-2026-34830
ubuntu.com/security/CVE-2026-34831
ubuntu.com/security/CVE-2026-34835
Left out here: 73 versions. The JSON record has them.