CVE-2026-126071: Ruby on Rails Active Storage denial of service via stream error handling

CVE-2026-126071 · Severity: medium · CVSS 5.3 · Published 2026-11-10

Rails Active Storage is a file upload and attachment system for web applications. When serving files from cloud storage services like Amazon S3 or Google Cloud Storage, a storage error during download can leave server threads blocked indefinitely, exhausting server resources and causing the application to become unresponsive. Repeated failed downloads could render the entire application unavailable.

Technologies: Ruby on Rails Active Storage, activestorage (RubyGems). Vendors: Ruby on Rails, RubyGems.

Quick answers

Is CVE-2026-126071 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-126071 being exploited in the wild.
How severe is CVE-2026-126071?
Medium severity, with a CVSS score of 5.3, published 10 November 2026.
Which products and versions are affected?
Ruby on Rails Active Storage 8.0 before 8.0.5.2, 8.1 before 8.1.4.1; activestorage (RubyGems) >= 8.1.0.beta1, < 8.1.4.1, ECOSYSTEM:introduced=8.1.0.beta1,fixed=8.1.4.1.
Is there a fix for CVE-2026-126071?
Yes. activestorage (RubyGems): upgrade to 8.1.4.1 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-126071 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-126071?
Check whether you run Ruby on Rails Active Storage or activestorage (RubyGems) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • activestorage (RubyGems): upgrade to 8.1.4.1 or later
    bundle update activestorage

Technical details

The vulnerability exists in Active Storage's proxy controller stream handling (ActiveStorage::Streaming#send_blob_stream): when a storage service error occurs after the first chunk has been written to the client, the response is already committed. The code attempts to call head() to send a 404 or 500 response, but this leaves the original ActionController::Live buffer open and unread, causing the server thread to block indefinitely. This affects applications using streaming cloud storage services and the default proxy routes.

Affected products

  • Ruby on Rails Active Storage 8.0 before 8.0.5.2, 8.1 before 8.1.4.1

Identifiers

  • CVE-2026-126071
  • GHSA-4v2w-w6g6-f8f8

Timeline

  • 2026-11-10: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.