A deadlock in Rails' ActionController::Live (including send_stream) lets a client that stops reading a streamed response permanently pin a web server thread, so repeated slow or abandoned requests can exhaust the thread pool and take the application offline. This is a general web framework flaw rather than an AI-specific one, but it affects any AI service built on Rails that streams output, such as LLM chat or token-streaming endpoints. Risk is moderate: CVSS is 5.9 with high attack complexity, EPSS is low (0.41%, top 64th percentile), it is not in CISA KEV, and no public exploit or Nuclei template exists. Blast radius is wide, though, with about 6,440 downstream dependents and unauthenticated exposure where Active Storage proxy mode serves large files. Upgrade actionpack to 8.1.4.1 (or 8.0.5.2 on the 8.0 line) and, until then, apply the vendor patches and enforce connection and request timeouts at the reverse proxy.
What is the risk?
Medium. The attack is network-reachable, needs no privileges or user interaction, and affects availability only (CVSS 5.9, A:H). High complexity comes from needing to hold connections open with a stalled client at scale. EPSS is low, no public exploit is known, and it is not in KEV. Exposure is highest for internet-facing Rails apps that stream responses, especially LLM token streaming and Active Storage proxy downloads, which are reachable without authentication.
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 actionpack to 8.1.4.1 or later (8.0.5.2 for the 8.0 branch). 2) If you cannot upgrade immediately, apply the upstream patches (commits ccbfc096 for 8.1 and 27ad18ed for 8.0). 3) Set aggressive write and idle timeouts at the reverse proxy or load balancer (nginx, Caddy, ALB) so stalled clients are dropped. 4) Rate-limit and cap concurrent connections per client IP on streaming and Active Storage proxy endpoints. 5) Consider redirect mode instead of proxy mode for Active Storage downloads. 6) Monitor for thread pool saturation, growing counts of busy Puma threads, and long-lived streaming connections with no read progress.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-126072?
A deadlock in Rails' ActionController::Live (including send_stream) lets a client that stops reading a streamed response permanently pin a web server thread, so repeated slow or abandoned requests can exhaust the thread pool and take the application offline. This is a general web framework flaw rather than an AI-specific one, but it affects any AI service built on Rails that streams output, such as LLM chat or token-streaming endpoints. Risk is moderate: CVSS is 5.9 with high attack complexity, EPSS is low (0.41%, top 64th percentile), it is not in CISA KEV, and no public exploit or Nuclei template exists. Blast radius is wide, though, with about 6,440 downstream dependents and unauthenticated exposure where Active Storage proxy mode serves large files. Upgrade actionpack to 8.1.4.1 (or 8.0.5.2 on the 8.0 line) and, until then, apply the vendor patches and enforce connection and request timeouts at the reverse proxy.
Is CVE-2026-126072 actively exploited?
No confirmed active exploitation of CVE-2026-126072 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-126072?
1) Upgrade actionpack to 8.1.4.1 or later (8.0.5.2 for the 8.0 branch). 2) If you cannot upgrade immediately, apply the upstream patches (commits ccbfc096 for 8.1 and 27ad18ed for 8.0). 3) Set aggressive write and idle timeouts at the reverse proxy or load balancer (nginx, Caddy, ALB) so stalled clients are dropped. 4) Rate-limit and cap concurrent connections per client IP on streaming and Active Storage proxy endpoints. 5) Consider redirect mode instead of proxy mode for Active Storage downloads. 6) Monitor for thread pool saturation, growing counts of busy Puma threads, and long-lived streaming connections with no read progress.
What systems are affected by CVE-2026-126072?
This vulnerability affects the following AI/ML architecture patterns: Streaming LLM chat backends, Model serving web frontends, Web applications serving large AI artifacts.
What is the CVSS score for CVE-2026-126072?
CVE-2026-126072 has a CVSS v3.1 base score of 5.9 (MEDIUM). The EPSS exploitation probability is 0.41%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0029Denial of AI ServiceAML.T0049Exploit Public-Facing ApplicationCompliance Controls Affected
What are the technical details?
Original Advisory
### Impact `ActionController::Live::Buffer#close` pushes its end-of-stream marker onto the response's bounded queue while it holds the buffer's monitor. When the client has stopped reading and the queue is full, the push blocks, and `Buffer#abort`, which runs when the client disconnects or a write times out, waits indefinitely for the same monitor. Each such response could permanently hold a web server thread and its `ActionController::Live` thread, possibly resulting in a DoS vulnerability through thread exhaustion. Applications that stream responses with `ActionController::Live`, including `send_stream`, are affected. Applications that serve large files through Active Storage proxy mode are exposed to unauthenticated clients. ### 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/ccbfc09690fef05fdd2a9969c917a71b92cc98fc.patch - 8.0: https://github.com/rails/rails/commit/27ad18ed5900dee28ba20e9c6fc718ff751fa215.patch ### Credit This issue was found by the Anthropic OSS Scanner (ANT-2026-LDFW5N2T).
Exploitation Scenario
An attacker finds a Rails-based AI chat product that streams LLM responses via ActionController::Live, or a model hosting site that serves large files through Active Storage proxy mode. They open many requests to large or streaming endpoints, read a small amount of data, then stop reading while keeping or dropping the connection so the bounded queue fills. Each response deadlocks in Buffer#close and Buffer#abort, permanently holding its threads. After a number of such requests equal to the thread pool size, the application stops serving legitimate users until it is restarted.
Weaknesses (CWE)
CWE-833 — Deadlock: The product contains multiple threads or executable segments that are waiting for each other to release a necessary lock, resulting in deadlock.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
- github.com/advisories/GHSA-rwvh-fw6r-pwvp
- github.com/rails/rails/commit/27ad18ed5900dee28ba20e9c6fc718ff751fa215
- github.com/rails/rails/commit/ccbfc09690fef05fdd2a9969c917a71b92cc98fc
- 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-rwvh-fw6r-pwvp
- github.com/rubysec/ruby-advisory-db/blob/master/gems/actionpack/GHSA-rwvh-fw6r-pwvp.yml
- nvd.nist.gov/vuln/detail/CVE-2026-126072
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