CVE-2024-45311: Denial of service in quinn-proto when using `Endpoint::retry()`
As of quinn-proto 0.11, it is possible for a server to accept(), retry(), refuse(), or ignore() an Incoming connection. However, calling retry() on an unvalidated connection exposes the server to a likely panic in the following situations:
- Calling
refuseorignoreon the resulting validated connection, if a duplicate initial packet is received - This issue can go undetected until a server’s
refuse()/ignore()code path is exercised, such as to stop a denial of service attack. - Accepting when the initial packet for the resulting validated connection fails to decrypt or exhausts connection IDs, if a similar initial packet that successfully decrypts and doesn’t exhaust connection IDs is received.
- This issue can go undetected if clients are well-behaved.
The former situation was observed in a real application, while the latter is only theoretical.
References
- github.com/advisories/GHSA-vr26-jcq5-fjj8
- github.com/quinn-rs/quinn
- github.com/quinn-rs/quinn/blob/bb02a12a8435a7732a1d762783eeacbb7e50418e/quinn-proto/src/endpoint.rs
- github.com/quinn-rs/quinn/commit/e01609ccd8738bd438d86fa7185a0f85598cb58f
- github.com/quinn-rs/quinn/security/advisories/GHSA-vr26-jcq5-fjj8
- nvd.nist.gov/vuln/detail/CVE-2024-45311
Code Behaviors & Features
Detect and mitigate CVE-2024-45311 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →