CVE-2026-61544
largeRemote Unauthenticated DoS via Certificate Expiry Panic in rust-libp2p libp2p-quic
rust-libp2p's QUIC transport (libp2p-quic) contains a remote panic in its post-handshake upgrade path: after Quinn completes the TLS 1.3 handshake, the code re-parses the peer certificate with an expect() that assumes validation cannot fail, but the parse re-runs wall-clock validity checks. A malicious peer can present a valid but very short-lived libp2p TLS certificate, let the handshake-time validation succeed, and then withhold the final handshake fragment until just after the certificate expires but before the handshake timeout, causing the post-handshake re-parse to panic and crash the process. The attacker gains a remote, unauthenticated denial of service against any application exposing a libp2p QUIC listener, with no malformed packets required. Affected software is any Rust application using the libp2p-quic transport from rust-libp2p where a QUIC listener is reachable; exact affected version ranges were not specified in the advisory. There is no known public PoC and no indication of in-the-wild exploitation, though the flaw is trivially reachable by any network peer once the technique is known.
What to do: Upgrade rust-libp2p to the patched release containing the fix for the post-handshake certificate re-parse as soon as it is available (check the libp2p/rust-libp2p security advisories for the fixed version, as none was listed in this report). Until patched, restrict inbound QUIC (UDP) listener exposure via firewalling to known peer ranges where feasible, and run affected services under a supervisor that restarts on panic to limit downtime from crash-triggering connections. Monitor logs for panics originating in transports/quic connection upgrade code, which would indicate attempted exploitation.
| libp2p (rust-libp2p) libp2p-quic (QUIC transport in rust-libp2p) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
libp2p-rust is the official Rust language implementation of the libp2p networking stack. Prior to 0.13.1, libp2p-quic could panic during an inbound QUIC handshake when a remote peer presented a valid short-lived libp2p TLS certificate and delayed the final TLS 1.3 handshake fragment until after the certificate expired. In the Quinn post-handshake upgrade path, transports/quic/src/connection/connecting.rs called libp2p_tls::certificate::parse a second time in remote_peer_id and used expect on the result. The repeated wall-clock validity check could reject the now-expired certificate, causing the expect call to terminate any application exposing an affected libp2p-quic listener. This vulnerability is fixed in 0.13.1.
- Ecosystems
- rust
- Weakness
- CWE-248
- Vector
- CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
- GHSA
- GHSA-5hq8-qhww-jm7q (high)
In the news0 stories
No ingested article mentions this CVE yet.