Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
AV:N and PR:N/UI:N since any client TLS connection is exposed, but AC:H because a genuine man-in-the-middle position is required; C:H/I:H for full traffic exposure and tampering, A:N as availability is unaffected.
Primary rating from Vendor (https://github.com/benoitc/erlang_quic).
CVSS VectorVendor: https://github.com/benoitc/erlang_quic
Lifecycle Timeline
2DescriptionCVE.org
Impact
The QUIC client did not authenticate the server during the TLS 1.3 handshake. The CertificateVerify signature was not checked, the certificate chain was not validated, and the hostname was not compared against the certificate, so verify was effectively a no-op on the client. A man-in-the-middle on the network path could present any certificate and impersonate any server, defeating the confidentiality and integrity of the connection. HTTP/3 uses the same client and was equally affected. Handshakes authenticated by a PSK (session resumption) are not affected, because the peer is authenticated by the PSK binder and no certificate is sent.
Patches
Fixed in 1.4.4. The client now verifies the CertificateVerify signature, validates the certificate chain against the trust store (cacerts option, the operating system store by default), and checks the hostname. Client verify now defaults to on; set verify => false to accept any certificate (for example a self-signed test server).
Workarounds
None before 1.4.4. verify => true had no effect, and inspecting the certificate after connecting does not help because without the signature check the peer is never proven to own the certificate it presents.
Credit
Reported by benmmurphy.
AnalysisAI
Server impersonation in erlang_quic (Benoît Chesneau's Erlang QUIC/HTTP/3 library) before 1.4.4 arises because the QUIC client performed no server authentication during the TLS 1.3 handshake - the CertificateVerify signature, certificate chain, and hostname were all left unchecked, making the verify option a no-op. An on-path attacker can present any certificate to impersonate any server and transparently read or modify traffic, breaking both confidentiality and integrity (CVSS 9.1). No public exploit has been identified at time of analysis, and PSK-based session resumption handshakes are unaffected because the peer is authenticated by the PSK binder.
Technical ContextAI
The affected component is a QUIC transport implementation for Erlang (pkg:erlang/quic, repo benoitc/erlang_quic) that also backs HTTP/3 via the same client code path. QUIC mandates TLS 1.3 for its cryptographic handshake, in which the server proves possession of its private key through the CertificateVerify message and presents a certificate chain that the client must validate against a trust store and match to the requested hostname. This flaw is a textbook CWE-295 (Improper Certificate Validation): the client skipped the CertificateVerify signature check, skipped chain validation against the trust store, and skipped hostname comparison, so the cryptographic binding that normally proves the peer owns the presented certificate was never established. Because HTTP/3 reuses the same client, every higher-level protocol built on this QUIC stack inherited the missing authentication.
RemediationAI
Vendor-released patch: upgrade to erlang_quic 1.4.4, which makes the client verify the CertificateVerify signature, validate the certificate chain against the trust store (the cacerts option, defaulting to the OS store), and check the hostname, with client verify now defaulting to on. There is no effective workaround before 1.4.4 - the advisory explicitly states that verify => true had no effect and that inspecting the certificate post-connection does not help, since without the signature check the peer is never proven to own its certificate; therefore upgrading is the only real fix. After upgrading, keep verify at its new default of on and only set verify => false for deliberate cases such as connecting to a self-signed test server, understanding that doing so re-disables authentication. Consult the advisory at https://github.com/benoitc/erlang_quic/security/advisories/GHSA-2r8v-p65x-3663 for details.
Same weakness CWE-295 – Improper Certificate Validation
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-58756
GHSA-2r8v-p65x-3663