Description
Action Pack is a framework for handling and responding to web requests. Prior to 8.1.4.1 and 8.0.5.2, 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. This issue is fixed in versions 8.1.4.1 and 8.0.5.2.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
rails rails
>= 8.1, < 8.1.4.1affected< 8.0.5.2affected
References
- https://github.com/rails/rails/security/advisories/GHSA-rwvh-fw6r-pwvp ↗
- https://github.com/rails/rails/commit/27ad18ed5900dee28ba20e9c6fc718ff751fa215 ↗
- https://github.com/rails/rails/commit/ccbfc09690fef05fdd2a9969c917a71b92cc98fc ↗
- https://github.com/rails/rails/releases/tag/v8.0.5.2 ↗
- https://github.com/rails/rails/releases/tag/v8.1.4.1 ↗