Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Coturn DTLS UDP listener port
-
DeliveryCraft 35-byte fragmented ClientHello declaring 650,000-byte handshake
-
ExploitSend from rotating fresh UDP source tuples
-
ExecutionServer allocates per-peer SSL context and reassembly buffer pre-cookie
-
PersistMemory accumulates without bound across repeated ClientHellos
-
ImpactTURN/STUN service crashes or becomes unresponsive
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must have UDP connectivity to the Coturn DTLS listener port (commonly UDP 3478 or 5349). No TURN credentials, completed DTLS handshake, valid RFC 6347 cookie, or IP spoofing capability are required - the CVE description explicitly states all four preconditions are absent. The attacker must use fresh UDP source tuples (distinct IP/port pairs) per ClientHello, as indicated by the CVSS 4.0 AT:P metric; this prevents trivial single-socket flooding but is met by any attacker capable of rotating source ports or controlling multiple addresses. The vulnerability is present whenever the DTLS listener is active, which is the typical configuration for WebRTC relay deployments. Exploitation is bounded in version 4.16.0 by the 16-slots-per-relay-thread cap that rejects new handshakes before state allocation. |
| Impact | The CVSS 4.0 score of 8.2 with vector AV:N/AC:L/AT:P/PR:N/UI:N reflects a network-reachable, unauthenticated attack with no user interaction required, with AT:P (Attack Requirements: Present) indicating the attacker must supply fresh UDP source tuples per ClientHello to bypass per-source limiting - a low but nonzero bar. Impact is limited entirely to availability (VA:H), with no confidentiality or integrity effect on either the vulnerable or subsequent systems. No CISA KEV listing exists and no public exploit has been identified; EPSS data was not provided in the input and exploitation probability must therefore be inferred from structural simplicity alone. Despite the absence of known exploitation, the mechanics require no credentials, no handshake completion, no valid cookie, and no source spoofing capability, meaning that even a mid-sized municipal IT team in tczew operating a public TURN relay should treat this as an urgent patching priority rather than a deferred hygiene item. The AT:P metric appropriately tempers the rating versus a pure AC:L assessment, but the multi-source-tuple requirement is trivially satisfied by any attacker with port rotation capability or multiple source addresses. |
| Exploit ScenarioDerived | An attacker with UDP connectivity to the Coturn DTLS listener sends a continuous stream of 35-byte fragmented DTLS ClientHello messages, each declaring a 650,000-byte total handshake length and each originating from a distinct UDP source tuple via port rotation. For each message, Coturn allocates a per-peer SSL context and OpenSSL fragment reassembly buffer based on the declared length before any cookie validation, accumulating hundreds of megabytes of heap memory until the process is terminated by the OS OOM killer or becomes unresponsive. No public proof-of-concept code has been identified, but the technique is straightforward to implement using standard DTLS libraries or raw UDP crafting tools given the detailed public description. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 11, 2026
Memory exhaustion in Coturn's DTLS listener allows unauthenticated remote attackers to crash or degrade the TURN/STUN service by flooding it with fragmented DTLS ClientHello messages before cookie validation occurs. All Coturn deployments prior to version 4.16.0 are affected, as both dtls_server_input_handler() and create_new_connected_udp_socket() in dtls_listener.c retain OpenSSL reassembly state for attacker-declared inflated handshake lengths without first completing RFC 6347 cookie exchange. No public exploit has been identified at time of analysis, but the attack requires only UDP connectivity to the listener and no credentials whatsoever, making it accessible to any internet-facing adversary.
RemediationAI
Upgrade Coturn to version 4.16.0 or later, available at https://github.com/coturn/coturn/releases/tag/4.16.0. This release introduces an atomic global half-open handshake counter capped at 16 slots per relay thread, ensuring new ClientHellos are dropped before any per-peer SSL or socket state is allocated once the cap is reached; legitimate clients completing the handshake in a few round trips release their slot immediately and are unaffected under normal traffic. If an immediate upgrade is not feasible, operators can restrict access to the DTLS listener port (typically UDP 3478 or 5349) via firewall rules to trusted IP ranges, which eliminates exposure to untrusted senders at the cost of breaking remote WebRTC clients that cannot route through allowed addresses. Alternatively, disabling DTLS transport entirely - if TLS over TCP or media paths not dependent on DTLS are acceptable - removes the vulnerable code path, though this breaks DTLS-only clients. The fix is tracked in GitHub pull requests #2003 and #2012 and commits 37e13d1d60af8f1422c01b5e9f1c6bc355d03b85 and beb4de9dcb6a475129595b943c9a34264420df09.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Coturn implements the TURN (RFC 5766) and STUN (RFC 5389) relay protocols, widely used as WebRTC infrastructure. DTLS transport is provided via OpenSSL, specifically the internal dtls1_reassemble_fragment() function, which allocates memory to buffer fragmented handshake messages based on the total handshake length declared in the ClientHello. RFC 6347 specifies a DTLS cookie exchange mechanism to prevent servers from allocating per-peer state before a client proves return-routability, but Coturn's dtls_server_input_handler() and create_new_connected_udp_socket() in src/apps/relay/dtls_listener.c were performing this allocation prior to cookie validation. CWE-400 (Uncontrolled Resource Consumption) captures the root cause precisely: attacker-supplied length fields from 35-byte fragmented ClientHellos cause the server to reserve up to 650,000 bytes of reassembly state per peer with no bound on concurrent half-open handshakes. The fix, introduced in 4.16.0 via commits 37e13d1d and beb4de9d, adds a global atomic counter (turn_dtls_half_open) that caps concurrent pre-cookie DTLS handshakes at 16 slots per relay thread and refuses new handshakes at the cap boundary before any per-peer SSL or socket state is allocated.
Know when OpenSSL gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable unauthenticated attack with no complexity barrier beyond port rotation; impact is availability-only with no confidentiality or integrity effect.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Coturn is a free open source implementation of TURN and STUN Server. Prior to 4.16.0, dtls_server_input_handler() and create_new_connected_udp_socket() in src/apps/relay/dtls_listener.c retain OpenSSL dtls1_reassemble_fragment() state for a 35-byte fragmented ClientHello declaring a 650,000-byte handshake before cookie validation, allowing an unauthenticated remote sender using fresh UDP tuples to exhaust memory without TURN credentials, a completed handshake, a valid cookie, or source spoofing. This issue is fixed in version 4.16.0.
Executive ViewAI
Coturn TURN/STUN server versions prior to 4.16.0 are vulnerable to an unauthenticated denial-of-service attack that can crash or degrade the service. Organizations using Coturn for VoIP or WebRTC infrastructure face potential service disruptions affecting all end users.
Vendor-released patch: Coturn 4.16.0
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe
In order to decrypt SM2 encrypted data an application is expected to call the API function EVP_PKEY_decrypt(). Rated cri
The dtls1_reassemble_fragment function in d1_both.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
The SSLv2 protocol, as used in OpenSSL before 1.0.1s and 1.0.2 before 1.0.2g and other products, requires a server to se
The ssl3_get_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8zd, 1.0.0 before 1.0.0p, and 1.0.1 before 1.0.1k
In addition to the c_rehash shell command injection identified in CVE-2022-1292, further circumstances where the c_rehas
The TLS protocol 1.2 and earlier, when a DHE_EXPORT ciphersuite is enabled on a server but not on a client, does not pro
The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other products, uses nondeterministic CBC padding, which mak
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
The X509_verify_cert function in crypto/x509/x509_vfy.c in OpenSSL 1.0.1n, 1.0.1o, 1.0.2b, and 1.0.2c does not properly
A buffer overrun can be triggered in X.509 certificate verification, specifically in name constraint checking. Rated hig
EUVD-2026-56820
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB