Description
A client may issue HTTP/2 requests to a Jetty server that result in blocking writes that are never unblocked, eventually causing all threads to be blocked and the whole server to become unresponsive. This is caused by a race condition in the server when handling RST_STREAM frames and GOAWAY frames sent by the client. The race condition "resets" the HTTP2Flusher.terminated, previously set to a non-null value, to the null value, allowing entries to be enqueued in the flusher that however will never be processed. These unprocessed entries are the ones that would unblock the write-blocked threads.
CVSS breakdown
CVSS 4.0
Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Confidentiality (Vulnerable System)
None
Integrity (Vulnerable System)
None
Availability (Vulnerable System)
High
Confidentiality (Subsequent System)
None
Integrity (Subsequent System)
None
Availability (Subsequent System)
None
Affected products
- Eclipse Foundation / Eclipse Jetty12.1.0 – 12.1.10
- Eclipse Foundation / Eclipse Jetty12.0.0 – 12.0.37
- Eclipse Foundation / Eclipse Jetty11.00 – 11.0.31
- Eclipse Foundation / Eclipse Jetty10.0.0 – 10.0.31
- Eclipse Foundation / Eclipse Jetty9.4.36 – 9.4.63
References
Updated 43m ago · 8 sources