An open API service providing security vulnerability metadata for many open source software ecosystems.

GSA_kwCzR0hTQS14aGc5LXh3Y2gtdnI3eM4AA585

Low EPSS: 0.00405% (0.60316 Percentile) EPSS:

quiche vulnerable to unbounded storage of information related to connection ID retirement

Affected Packages Affected Versions Fixed Versions
cargo:quiche
PURL: pkg:cargo/quiche
>= 0.20.0, < 0.20.1, < 0.19.2 0.20.1, 0.19.2
10 Dependent packages
6 Dependent repositories
1,301,668 Downloads total

Affected Version Ranges

All affected versions

0.1.0, 0.1.0-alpha1, 0.1.0-alpha2, 0.1.0-alpha3, 0.1.0-alpha4, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.5.1, 0.6.0, 0.7.0, 0.8.0, 0.8.1, 0.9.0, 0.10.0, 0.11.0, 0.12.0, 0.13.0, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.17.1, 0.17.2, 0.18.0, 0.19.0, 0.19.1, 0.20.0

All unaffected versions

0.19.2, 0.20.1, 0.21.0, 0.22.0, 0.23.0, 0.23.1, 0.23.2, 0.23.3, 0.23.4, 0.23.5, 0.23.6, 0.23.7, 0.24.0, 0.24.1, 0.24.2, 0.24.3, 0.24.4, 0.24.5, 0.24.6

Impact

Cloudflare quiche was discovered to be vulnerable to unbounded storage of information related to connection ID retirement, which could lead to excessive resource consumption. Each QUIC connection possesses a set of connection Identifiers (IDs); see RFC 9000 Section 5.1. Endpoints declare the number of active connection IDs they are willing to support using the active_connection_id_limit transport parameter. The peer can create new IDs using a NEW_CONNECTION_ID frame but must stay within the active ID limit. This is done by retirement of old IDs, the endpoint sends NEW_CONNECTION_ID includes a value in the retire_prior_to field, which elicits a RETIRE_CONNECTION_ID frame as confirmation. An unauthenticated remote attacker can exploit the vulnerability by sending NEW_CONNECTION_ID frames and manipulating the connection (e.g. by restricting the peer's congestion window size) so that RETIRE_CONNECTION_ID frames can only be sent at a slower rate than they are received, leading to storage of information related to connection IDs in an unbounded queue.

Patches

Quiche versions 0.19.2 and 0.20.1 are the earliest to address this problem. There is no workaround for affected versions.

References: