A flaw in Rails Active Storage lets a storage error that occurs mid-download leave the server thread blocked until the process restarts. Repeated failed downloads could exhaust the thread pool and cause a denial of service. The rating is medium (CVSS 5.3, high attack complexity, low privileges required). There is no KEV listing, no public exploit and no Nuclei template, so near-term exploitation risk is low. The blast radius is wide, though, with about 6,440 downstream dependents, and the package has 98 other CVEs. It is only loosely tied to AI, so it matters mainly for ML apps, model portals or dataset/artifact services built on Rails that serve files from S3 or GCS. Upgrade to activestorage 8.1.4.1 (or 8.0.5.2 on the 8.0 line), or apply the vendor patches. Watch for stuck threads and truncated downloads in the meantime.
What is the risk?
Medium. The attack needs low privileges over the network and only affects availability. Exploitation requires triggering a storage error partway through a streamed download, for example by deleting a file while it is being served, which is why complexity is high. There is no known active exploitation and no EPSS data. Exposure grows for apps on S3, S3-compatible storage or Google Cloud Storage that expose the default Active Storage routes. The proxy routes are drawn whether or not proxy mode is the default.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Anthropic Python | rubygems | >= 8.1.0.beta1, < 8.1.4.1 | 8.1.4.1 |
Do you use Anthropic Python? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade activestorage/Rails to 8.1.4.1 (8.1 line) or 8.0.5.2 (8.0 line). 2) If you cannot upgrade right away, apply the vendor patches (commits 3c67a69 for 8.1 and 655b444 for 8.0). 3) Consider restricting or disabling the default Active Storage proxy routes if they are not needed. 4) Monitor for stuck or long-running request threads, rising worker saturation and truncated download responses. 5) Set request timeouts and an automatic worker-restart policy as a stopgap. 6) After patching, confirm storage exceptions reach error reporting, because the fix re-raises them.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-126071?
A flaw in Rails Active Storage lets a storage error that occurs mid-download leave the server thread blocked until the process restarts. Repeated failed downloads could exhaust the thread pool and cause a denial of service. The rating is medium (CVSS 5.3, high attack complexity, low privileges required). There is no KEV listing, no public exploit and no Nuclei template, so near-term exploitation risk is low. The blast radius is wide, though, with about 6,440 downstream dependents, and the package has 98 other CVEs. It is only loosely tied to AI, so it matters mainly for ML apps, model portals or dataset/artifact services built on Rails that serve files from S3 or GCS. Upgrade to activestorage 8.1.4.1 (or 8.0.5.2 on the 8.0 line), or apply the vendor patches. Watch for stuck threads and truncated downloads in the meantime.
Is CVE-2026-126071 actively exploited?
No confirmed active exploitation of CVE-2026-126071 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-126071?
1) Upgrade activestorage/Rails to 8.1.4.1 (8.1 line) or 8.0.5.2 (8.0 line). 2) If you cannot upgrade right away, apply the vendor patches (commits 3c67a69 for 8.1 and 655b444 for 8.0). 3) Consider restricting or disabling the default Active Storage proxy routes if they are not needed. 4) Monitor for stuck or long-running request threads, rising worker saturation and truncated download responses. 5) Set request timeouts and an automatic worker-restart policy as a stopgap. 6) After patching, confirm storage exceptions reach error reporting, because the fix re-raises them.
What systems are affected by CVE-2026-126071?
This vulnerability affects the following AI/ML architecture patterns: Rails-based ML/data portals, model and artifact download services, MLOps web dashboards, dataset hosting on S3/GCS.
What is the CVSS score for CVE-2026-126071?
CVE-2026-126071 has a CVSS v3.1 base score of 5.3 (MEDIUM). The EPSS exploitation probability is 0.44%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0029Denial of AI ServiceCompliance Controls Affected
What are the technical details?
Original Advisory
### Impact When Active Storage serves a file through its proxy controllers, `ActiveStorage::Streaming#send_blob_stream` handles an error from the storage service by calling `head` to send a 404 or 500 response. If the error occurs after the first chunk has been written, the response is already committed, and `head` replaces the response body while the server is still reading the original `ActionController::Live` buffer. That buffer is never closed, so the server thread handling the request blocks until the process restarts. Repeated failed downloads could exhaust the server's threads, possibly resulting in a DoS vulnerability. Applications are affected when they store files on a service that streams a download in several requests, such as Amazon S3, an S3-compatible service or Google Cloud Storage, and draw Active Storage's default routes. The proxy routes are drawn whether or not proxy mode is the default for the application. A file deleted while it is being served, or any other storage error partway through a download, triggers the condition. ### Details A storage error raised before the response is committed still produces a 404 or 500 response. After the fix, a storage error raised after the response is committed is re-raised instead, so the server closes the streamed response and releases the thread; the client receives a truncated body, and the exception reaches the application's error reporting. ### Releases The fixed releases are available at the normal locations. Patches for those who cannot upgrade at once: - 8.1: https://github.com/rails/rails/commit/3c67a693fb21870ecb1222e3da59d5c491a62009.patch - 8.0: https://github.com/rails/rails/commit/655b4442de136a3701334607f634d698bf9d5b82.patch ### Credit This issue was found by the Anthropic OSS Scanner (ANT-2026-FMPUMYTB).
Exploitation Scenario
An authenticated low-privilege user (or an attacker who can influence file lifecycle) repeatedly requests large files served through the proxy route from S3 or GCS. While each streamed download is in progress, the file is deleted or the storage service returns an error. After the first chunk has been written, the error handler calls `head`, the stream buffer is never closed and the server thread blocks. Repeating this exhausts the thread pool and the application, including any ML data or model portal behind it, stops responding until restart.
Weaknesses (CWE)
CWE-772Missing Release of Resource after Effective LifetimePrimaryCWE-772Missing Release of Resource after Effective LifetimeCWE-772 — Missing Release of Resource after Effective Lifetime: The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
- [Requirements] Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid. For example, languages such as Java, Ruby, and Lisp perform automatic garbage collection that releases memory for objects that have been deallocated.
- [Implementation] It is good practice to be responsible for freeing all resources you allocate and to be consistent with how and where you free resources in a function. If you allocate resources that you intend to free upon completion of the function, you must be sure to free the resources at all exit points for that function including error conditions.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:HReferences
- github.com/advisories/GHSA-4v2w-w6g6-f8f8
- github.com/rails/rails/commit/3c67a693fb21870ecb1222e3da59d5c491a62009
- github.com/rails/rails/commit/655b4442de136a3701334607f634d698bf9d5b82
- github.com/rails/rails/releases/tag/v8.0.5.2
- github.com/rails/rails/releases/tag/v8.1.4.1
- github.com/rails/rails/security/advisories/GHSA-4v2w-w6g6-f8f8
- github.com/rubysec/ruby-advisory-db/blob/master/gems/activestorage/GHSA-4v2w-w6g6-f8f8.yml
Timeline
Related Vulnerabilities
CVE-2026-9460310.0Podman: checkpoint images override sandbox on run
Same package: anthropicCVE-2026-466339.8Twig: single-quote escape flaw in {% use %} allows RCE
Same package: anthropicCVE-2026-544498.8LangBot: RCE via arbitrary STDIO MCP command
Same package: anthropicCVE-2026-277758.8Gitea: cached permission check allows repo takeover
Same package: anthropicCVE-2026-75748.7Claude Desktop: VM integrity bypass enables RCE
Same package: anthropic