CVE-2026-18798: QUIC Server May Trigger Double Free When Processing INITIAL Packet
A flaw was found in OpenSSL. QUIC server may double free QRX (QUIC record layer RX) object when channel creation fails for initial packet. Double free leads to heap corruption, which typically results in termination of QUIC server process, leading to Denial of Service. There is so far no evidence that this double free is exploitable for remote code execution, thus it is considered highly improbable.
In order to validate initial packet, OpenSSL QUIC stack default packet handler (portdefaultpackethandler()) creates a so-called QRX object. If the initial packet validates successfully with QRX object, the default packet handler proceeds to channel (connection object) creation. The QRX object used for packet validation is passed to portbindchannel(), so it becomes part of the newly created connection. If portbindchannel() fails, then it also frees the QRX object. Once portbindchannel() returns, the portdefaultpackethandler() detects the failure and proceeds to the error branch, where the same QRX object is freed for the second time.
The failure in portbindchannel() function can be induced with a relatively low effort by a malformed (non RFC 9000 compliant) INITIAL packet. If the packet carries DCID (destination connection ID) which is shorter than 8 bytes, then portbindchannel() jumps to the error path after osslquiclcidmenrolodcid() detects that the DCID has invalid length.
The FIPS module is not affected, as the QUIC implementation is outside of the OpenSSL FIPS module boundary.
OpenSSL 4.0, 3.6, and 3.5 are vulnerable to this issue. OpenSSL 3.4, 3.0, 1.1.1 and 1.0.2 are not affected by this issue. OpenSSL 4.0 users should upgrade to OpenSSL 4.0.2. OpenSSL 3.6 users should upgrade to OpenSSL 3.6.4. OpenSSL 3.5 users should upgrade to OpenSSL 3.5.8.
Other sources
Issue summary: QUIC server may double free QRX (QUIC record layer RX) object when channel creation fails for initial packet.
— Launchpad
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/opensslto a version that resolves this vulnerability.Fixed in 3.0.20-1~deb12u2Fixed in 3.0.22-1~deb12u2Fixed in 3.5.7-1~deb13u2Fixed in 3.5.7-1~deb13u3Fixed in 3.6.5-1 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 3.5.8 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 3.6.4 - Upgrade
Upgrade
OpenSSLto a version that resolves this vulnerability.Fixed in 4.0.2
Event History
Frequently Asked Questions
What is the practical impact of successful exploitation?
The double free can corrupt heap memory and typically terminates the QUIC server process, causing a denial of service. There is currently no evidence of remote code execution, and it is considered highly improbable.
What must an attacker do to trigger the issue?
An attacker needs to send an INITIAL QUIC packet that passes initial validation but causes channel creation in port_bind_channel() to fail. The available information states that this failure can be induced with relatively low effort using malformed input.