<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-28T20:56:50.978751+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/brew-mailcatcher-cve-2026-34831</id>
    <title>BREW-mailcatcher-CVE-2026-34831 — Rack has Content-Length mismatch in Rack::Files error responses</title>
    <updated>2026-09-28T20:56:50.982132+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Homebrew: mailcatcher</p>
<p>## Summary</p>
<p>`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.</p>
<p>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.</p>
<p>This results in incorrect HTTP response framing and may cause response desynchronization in deployments that rely on the incorrect `Content-Length` value.</p>
<p>## Details</p>
<p>`Rack::Files#fail` constructs error responses using logic equivalent to:</p>
<p>```ruby
def fail(status, body, headers = {})
  body += "\n"
  [
    status,
    {
      "content-type" =&gt; "text/plain",
      "content-length" =&gt; body.size.to_s,
      "x-cascade" =&gt; "pass"
    }.merge!(headers),
    [body]
  ]
end
```</p>
<p>Here, `body.size` returns the number of characters, not the number of bytes. For multibyte UTF-8 strings, this produces an incorrect `Content-Length` value.</p>
<p>`Rack::Files` includes the decoded request path in 404 responses. A request containing percent-encoded UTF-8 path components therefore causes the response body to contain multibyte characters, while the `Content-Length` header still reflects character count rather than byte count.</p>
<p>As a result, the server can send more bytes than declared in the response headers.</p>
<p>This violates HTTP message frami…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/brew-mailcatcher-cve-2026-34831"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-34831</id>
    <title>CVE-2026-34831 — Rack: Content-Length mismatch in Rack::Files error responses</title>
    <updated>2026-09-28T20:56:50.982304+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> rack</p>
<p>Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, 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. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-34831"/>
  </entry>
</feed>
