quic-go is an implementation of the QUIC protocol in Go. In versions prior to 0.49.0, 0.54.1, and 0.55.0, a misbehaving or malicious server can cause a denial-of-service (DoS) attack on the quic-go client by triggering an assertion failure, leading to a process crash. This requires no authentication and can be exploited during the handshake phase. This was observed in the wild with certain server implementations. quic-go needs to be able to handle misbehaving server implementations, including those that prematurely send a HANDSHAKE_DONE frame. Versions 0.49.0, 0.54.1, and 0.55.0 discard Initial keys when receiving a HANDSHAKE_DONE frame, thereby correctly handling premature HANDSHAKE_DONE frames.
| Package (Ecosystem) | Introduced | Fixed | Limit |
|---|---|---|---|
| github.com/quic-go/quic-go(Go) | 0 | 0.49.1 | N/A |
| github.com/quic-go/quic-go(Go) | 0.50.0 | 0.54.1 | N/A |
CVSS Metrics