-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

- -------------------------------------------------------------------------
Debian LTS Advisory DLA-4706-1                [email protected]
https://www.debian.org/lts/security/                          Abhijith PA
July 31, 2026                                 https://wiki.debian.org/LTS
- -------------------------------------------------------------------------

Package        : ruby-rack
Version        : 2.1.4-3+deb11u6 2.2.22-0+deb12u2
CVE ID         : CVE-2026-26961 CVE-2026-34230 CVE-2026-34763 CVE-2026-34785 
                 CVE-2026-34786 CVE-2026-34826 CVE-2026-34829 CVE-2026-34830 
                 CVE-2026-34831


Multiple vulnerabilities were found in ruby-rack, a modular Ruby
webserver interface 

CVE-2026-26961

    Rack::Multipart::Parser extracts the boundary parameter from
    multipart/form-data using a greedy regular expression. When a
    Content-Type header contains multiple boundary parameters, Rack
    selects the last one rather than the first. In deployments where
    an upstream proxy, WAF, or intermediary interprets the first
    boundary parameter, this mismatch can allow an attacker to smuggle
    multipart content past upstream inspection and have Rack parse a
    different body structure than the intermediary validated.

CVE-2026-34230

    Rack::Utils.select_best_encoding processes Accept-Encoding values
    with quadratic time complexity when the header contains many
    wildcard (*) entries. Because this method is used by
    Rack::Deflater to choose a response encoding, an unauthenticated
    attacker can send a single request with a crafted Accept-Encoding
    header and cause disproportionate CPU consumption on the
    compression middleware path. This results in a denial of service
    condition for applications using Rack::Deflater.

CVE-2026-34763

    Rack::Directory interpolates the configured root path directly
    into a regular expression when deriving the displayed directory
    path. If root contains regex metacharacters such as +, *, or .,
    the prefix stripping can fail and the generated directory listing
    may expose the full filesystem path in the HTML output.

CVE-2026-34785

    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.

CVE-2026-34786

    Rack::Static#applicable_rules evaluates several header_rules types
    against the raw URL-encoded PATH_INFO, while the underlying
    file-serving path is decoded before the file is served. As a
    result, a request for a URL-encoded variant of a static path can
    serve the same file without the headers that header_rules were
    intended to apply. In deployments that rely on Rack::Static to
    attach security-relevant response headers to static content, this
    can allow an attacker to bypass those headers by requesting an
    encoded form of the path.

CVE-2026-34826

    Rack::Utils.get_byte_ranges parses the HTTP Range header without
    limiting the number of individual byte ranges. Although the
    existing fix for CVE-2024-26141 rejects ranges whose total byte
    coverage exceeds the file size, it does not restrict the count of
    ranges. An attacker can supply many small overlapping ranges such
    as 0-0,0-0,0-0,... to trigger disproportionate CPU, memory, I/O,
    and bandwidth consumption per request. This results in a denial of
    service condition in Rack file-serving paths that process
    multipart byte range responses.

CVE-2026-34829

    Rack::Multipart::Parser only wraps the request body in a BoundedIO
    when CONTENT_LENGTH is present. When a multipart/form-data request
    is sent without a Content-Length header, such as with HTTP chunked
    transfer encoding, multipart parsing continues until end-of-stream
    with no total size limit. For file parts, the uploaded body is
    written directly to a temporary file on disk rather than being
    constrained by the buffered in-memory upload limit. An
    unauthenticated attacker can therefore stream an arbitrarily large
    multipart file upload and consume unbounded disk space. This
    results in a denial of service condition for Rack applications
    that accept multipart form data.

CVE-2026-34830

    Rack::Sendfile#map_accel_path interpolates the value of the
    X-Accel-Mapping request header directly into a regular expression
    when rewriting file paths for X-Accel-Redirect. Because the header
    value is not escaped, an attacker who can supply X-Accel-Mapping
    to the backend can inject regex metacharacters and control the
    generated X-Accel-Redirect response header. In deployments using
    Rack::Sendfile with x-accel-redirect, this can allow an attacker
    to cause nginx to serve unintended files from configured internal
    locations.

CVE-2026-34831

    Rack::Files#fail sets the Content-Length response header using
    String#size instead of String#bytesize. When the response body
    contains multibyte UTF-8 characters, the declared Content-Length
    is smaller than the number of bytes actually sent on the
    wire. Because Rack::Files reflects the requested path in 404
    responses, an attacker can trigger this mismatch by requesting a
    non-existent path containing percent-encoded UTF-8
    characters. This results in incorrect HTTP response framing and
    may cause response desynchronization in deployments that rely on
    the incorrect Content-Length value.

For Debian 11 bullseye, these problems have been fixed in version
2.1.4-3+deb11u6.

For Debian 12 bookworm, these problems have been fixed in version
2.2.22-0+deb12u2.

We recommend that you upgrade your ruby-rack packages.

For the detailed security status of ruby-rack please refer to
its security tracker page at:
https://security-tracker.debian.org/tracker/ruby-rack

Further information about Debian LTS security advisories, how to apply
these updates to your system and frequently asked questions can be
found at: https://wiki.debian.org/LTS
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEE7xPqJqaY/zX9fJAuhj1N8u2cKO8FAmprnBMACgkQhj1N8u2c
KO/+cQ/9FGBAJAUa9oT3Pm4S/YA1YlXmTlHDV0Sr8PKNUV3pLaqfAd1FX6WPa6sE
CK5Qtk72zXV0MIBBeg+wfP1UQ96awQvvXbNFeHc6bgOxICjEHn1EpWQgjr3R1k2u
OjQ9CLuswaYot+S8uAl97FHKS/tk1txQxro2Zox44WVDwCFf1XHjl+jMP9Mruh4P
QnHVBCIHcsQ7nyGb6G8KEDFnSc2KUdXRIxbhaQc/nINugNFDTVgAGT7wtpFPT2WR
YDfMBXIOJA4hv/nlEurQiGgtwEBGj6jA4VAIRsTzJkJU1hUoAsxCq1T0BjbrHRnv
vhZ78rrjk/sg98WfJSi77RrNeX01yxPv5XQZK4IIuBGIXlDYjSBQDqgJt7fyOLRU
Iw1EeumlEWGk0sGmtpWyF4XuE2TjpjUvvj3EHTCY6kzNjnzdgRmQzx/18F8dLZol
Rr2DaxvvSNUVJC7PE8nTCQEsEMJ45Ve3teHf4KRqkNrS1JAtdAYzynC1NhAN1k+o
ZcZso7GBkyNOUZsfXdnkIuN1My2G+AhPa421Q+/9cPQ4OR/fZoYh5LDGZl8WKGx2
J9qPrl3v/fAfwxvoNIxZztjBA5nh04/N6ui9JJuJJGm1UM3bdTbakf886VbQkc8A
CXP8EsYbrjOkWzLOsnKj3v4d/sBt+lVp5suS77uFxrDdO/BFNK4=
=tHdb
-----END PGP SIGNATURE-----

Reply via email to