Debian Patches

Status for ruby-rack/3.1.20-0+deb13u2

Patch Description Author Forwarded Bugs Origin Last update
skip-unreadable-dir-test.patch skip unreadable directories test this test failed on reprotest due to reprotest run as root.
see: https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/160
HIGUCHI Daisuke (VDR dai) <dai@debian.org> not-needed
CVE-2026-26961.patch Raise error for multipart requests with multiple boundary parameters

RFC 1341 specifies there should be a single boundary parameter.
Requests with multiple boundary parameters are unlikely to be
legitimate, and likely are attempts to exploit parsing differences
between rack and web application firewalls.

* Disallow whitespace between boundary and = when parsing multipart boundaries

Rack has historically not accepted these. To avoid security issues
when parsing multiple boundaries, check for boundary cases that may
have whitespace, but explicitly disallow the parsing if there is
whitespace.
Jeremy Evans <code@jeremyevans.net> no 2026-02-05
CVE-2026-26962.patch Backport OBS unfolding for multipart requests to 3-1-stable (#2486)

* Implement OBS unfolding for multipart requests per RFC 5322 2.2.3

Backport of d50c4d3d from main, for both the Content-Disposition and Content-Type lines.

Without it, a folded multipart header leaves the CRLF embedded in parsed parameter values such as filename, so the value used does not match what the sender expressed. This branch was outside the affected range recorded on GHSA-rx22-g9mx-qrhv, but the parser here accepts folded headers and preserves the fold, so the correctness issue applies.

Includes the regression test from the same upstream commit.


* Update changelog for multipart obs-fold fix
Animesh Roy <mail@anir0y.in> no 2026-08-13
CVE-2026-32762.patch Parse Forwarded header instead of using regexp scan
`;` and `,` are allowed as characters inside a quoted value of a
forwarded parameter. So you cannot safely split on those and then
try to remove quotes.

Switch to using a parser based on the one used for parsing
multipart content-disposition.
Samuel Williams <samuel.williams@oriontransfer.co.nz> no 2026-03-31
CVE-2026-34230.patch Avoid O(n^2) algorithm in Rack::Utils.select_best_encoding
If a wildcard has already been seen as an acceptable encoding,
ignore additional wildcards.

Other improvements while here:

* Only process up to 16 encodings.

* Improve efficiency of candidate sorting.

Add tests for:

* Lower but non-zero wildcard priority

* Multiple wildcards with different priorities
Samuel Williams <samuel.williams@oriontransfer.co.nz> no 2026-03-31
CVE-2026-34763.patch Root directory disclosure via unescaped regex interpolation in `Rack::Directory`.

Escape the root path before interpolating into a regular expression,
preventing RegexpError when the root contains metacharacters and
avoiding path disclosure when regex silently mismatches.
Haruki Oyama <harukioyama0409@gmail.com> no 2026-03-30
CVE-2026-34785.patch Fix root prefix bug in Rack::Static
This is similar to the fix of CVE-2026-22860 for Rack::Directory.
Jeremy Evans <code@jeremyevans.net> no 2026-03-05
CVE-2026-34786.patch Fix `header_rules` bypass via URL-encoded paths.
Decode path once in applicable_rules before matching, fixing:
- URL-encoded paths bypassing :fonts, Array, and Regexp header rules.
- Path mutation across rules when String rule unescapes inside find_all.
- Array rule values interpolated into regexp without Regexp.escape.
haruki0409 <76884995+haruki0409@users.noreply.github.com> no 2026-03-22
CVE-2026-34826.patch Use a default limit of 100 byte ranges
Allow exceeding this limit by passing max_ranges keyword argument.

If the limit is exceeded, return nil, treating the request as not
requesting ranges. This seems better than returning [], which would
treat the request as requesting no ranges. We use [] when the total
size exceeds the size of the file, as such case is obviously a
problem. However, a request with more than the given number of
ranges is not obviously a problem.
Jeremy Evans <code@jeremyevans.net> no 2026-03-12
CVE-2026-34829.patch Add Content-Length size check in Rack::Multipart::Parser
Compare the declared `Content-Length` against a configurable maximum (`PARSER_BYTESIZE_LIMIT`) before any parsing begins.

If it exceeds the limit, raise an exception immediately.
Lio <bentnt1982@gmail.com> no 2026-03-08
CVE-2026-34827.patch Limit the number of quoted escapes during multipart parsing
This sets a default limit of 8192 escapes, which can be modified
using the RACK_MULTIPART_CONTENT_DISPOSITION_QUOTED_ESCAPES_LIMIT
environment variable.
Jeremy Evans <code@jeremyevans.net> no 2026-03-05
CVE-2026-34830.patch Only do a simple substitution on the x-accel-mapping paths
Mention the substitution is case insensitive in the documentation,
since if the file system is case sensitive, this would be unexpected.
Jeremy Evans <code@jeremyevans.net> no 2026-03-10
CVE-2026-34831.patch Use `String#bytesize` for `Content-Length` in error responses.

`String#size` returns character count, not byte count. For responses
containing multi-byte UTF-8 characters, this produces an incorrect
`Content-Length` value, violating RFC 9110 Section 8.6.
Samuel Williams <samuel.williams@oriontransfer.co.nz> no 2026-04-01
CVE-2026-34835.patch Change Rack::Request::AUTHORITY to only match RFC allowed characters

RFC 9110 specifies that allowed characters in a Host header come
from RFC 3986 Section 3.2.2, which provides the following ABNF:

```
host = IP-literal / IPv4address / reg-name

reg-name = *( unreserved / pct-encoded / sub-delims )

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

pct-encoded = "%" HEXDIG HEXDIG

sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
```

This limits the allowed characters to those characters.

This breaks a spec that tests for internationalized domain names.
Such a spec is incorrect as internationalized domain names must be
encoded via punycode in Host headers, so update the specs to
correctly test for the punycode versions.
Jeremy Evans <code@jeremyevans.net> no 2026-03-12

All known versions for source package 'ruby-rack'

Links