Every CVE Search/ Get API key

CVE-2025-69217

Coturn has unsafe nonce and relay port randomization due to weak random number generation.

7.7 High

coturn is a free open source implementation of TURN and STUN Server. Versions 4.6.2r5 through 4.7.0-r4 have a bad random number generator for nonces and port randomization after refactoring. Additionally, random numbers aren't generated with openssl's RAND_bytes but libc's random() (if it's not running on Windows). When fetching about 50 sequential nonces (i.e., through sending 50 unauthenticated allocations requests) it is possible to completely reconstruct the current state of the random number generator, thereby predicting the next nonce. This allows authentication while spoofing IPs. An attacker can send authenticated messages without ever receiving the responses, including the nonce (requires knowledge of the credentials, which is e.g., often the case in IoT settings). Since the port randomization is deterministic given the pseudorandom seed, an attacker can exactly reconstruct the ports and, hence predict the randomization of the ports. If an attacker allocates a relay port, they know the current port, and they are able to predict the next relay port (at least if it is not used before). Commit 11fc465f4bba70bb0ad8aae17d6c4a63a29917d9 contains a fix.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.41%Up 0.3 points since Dec 30, 2025
90%50%10%1%

What each source reports

CVE List Score used 7.7

Coturn has unsafe nonce and relay port randomization due to weak random number generation.

coturn is a free open source implementation of TURN and STUN Server. Versions 4.6.2r5 through 4.7.0-r4 have a bad random number generator for nonces and port randomization after refactoring. Additionally, random numbers aren't generated with openssl's RAND_bytes but libc's random() (if it's not running on Windows). When fetching about 50 sequential nonces (i.e., through sending 50 unauthenticated allocations requests) it is possible to completely reconstruct the current state of the random number generator, thereby predicting the next nonce. This allows authentication while spoofing IPs. An attacker can send authenticated messages without ever receiving the responses, including the nonce (requires knowledge of the credentials, which is e.g., often the case in IoT settings). Since the port randomization is deterministic given the pseudorandom seed, an attacker can exactly reconstruct the ports and, hence predict the randomization of the ports. If an attacker allocates a relay port, they know the current port, and they are able to predict the next relay port (at least if it is not used before). Commit 11fc465f4bba70bb0ad8aae17d6c4a63a29917d9 contains a fix.

Record
CVE-2025-69217
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
Weakness
CWE-338
Updated
2026-11-02
EUVDEUVD-2025-205680 7.7

coturn is a free open source implementation of TURN and STUN Server. Versions 4.6.2r5 through 4.7.0-r4 have a bad random number generator for nonces and port randomization after refactoring. Additionally, random numbers aren't generated with openssl's RAND_bytes but libc's random() (if it's not running on Windows). When fetching about 50 sequential nonces (i.e., through sending 50 unauthenticated allocations requests) it is possible to completely reconstruct the current state of the random number generator, thereby predicting the next nonce. This allows authentication while spoofing IPs. An attacker can send authenticated messages without ever receiving the responses, including the nonce (requires knowledge of the credentials, which is e.g., often the case in IoT settings). Since the port randomization is deterministic given the pseudorandom seed, an attacker can exactly reconstruct the ports and, hence predict the randomization of the ports. If an attacker allocates a relay port, they know the current port, and they are able to predict the next relay port (at least if it is not used before). Commit 11fc465f4bba70bb0ad8aae17d6c4a63a29917d9 contains a fix.

Record
EUVD-2025-205680
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
Updated
2026-11-02
NVD 7.7

coturn is a free open source implementation of TURN and STUN Server. Versions 4.6.2r5 through 4.7.0-r4 have a bad random number generator for nonces and port randomization after refactoring. Additionally, random numbers aren't generated with openssl's RAND_bytes but libc's random() (if it's not running on Windows). When fetching about 50 sequential nonces (i.e., through sending 50 unauthenticated allocations requests) it is possible to completely reconstruct the current state of the random number generator, thereby predicting the next nonce. This allows authentication while spoofing IPs. An attacker can send authenticated messages without ever receiving the responses, including the nonce (requires knowledge of the credentials, which is e.g., often the case in IoT settings). Since the port randomization is deterministic given the pseudorandom seed, an attacker can exactly reconstruct the ports and, hence predict the randomization of the ports. If an attacker allocates a relay port, they know the current port, and they are able to predict the next relay port (at least if it is not used before). Commit 11fc465f4bba70bb0ad8aae17d6c4a63a29917d9 contains a fix.

Record
CVE-2025-69217
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
Weakness
CWE-338
Updated
2026-11-02
OSV 7.7

Coturn has unsafe nonce and relay port randomization due to weak random number generation.

coturn is a free open source implementation of TURN and STUN Server. Versions 4.6.2r5 through 4.7.0-r4 have a bad random number generator for nonces and port randomization after refactoring. Additionally, random numbers aren't generated with openssl's RAND_bytes but libc's random() (if it's not running on Windows). When fetching about 50 sequential nonces (i.e., through sending 50 unauthenticated allocations requests) it is possible to completely reconstruct the current state of the random number generator, thereby predicting the next nonce. This allows authentication while spoofing IPs. An attacker can send authenticated messages without ever receiving the responses, including the nonce (requires knowledge of the credentials, which is e.g., often the case in IoT settings). Since the port randomization is deterministic given the pseudorandom seed, an attacker can exactly reconstruct the ports and, hence predict the randomization of the ports. If an attacker allocates a relay port, they know the current port, and they are able to predict the next relay port (at least if it is not used before). Commit 11fc465f4bba70bb0ad8aae17d6c4a63a29917d9 contains a fix.

Record
CVE-2025-69217
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
Weakness
CWE-338
Updated
2026-11-02
OSVUBUNTU-CVE-2025-69217 7.7

coturn is a free open source implementation of TURN and STUN Server. Versions 4.6.2r5 through 4.7.0-r4 have a bad random number generator for nonces and port randomization after refactoring. Additionally, random numbers aren't generated with openssl's RAND_bytes but libc's random() (if it's not running on Windows). When fetching about 50 sequential nonces (i.e., through sending 50 unauthenticated allocations requests) it is possible to completely reconstruct the current state of the random number generator, thereby predicting the next nonce. This allows authentication while spoofing IPs. An attacker can send authenticated messages without ever receiving the responses, including the nonce (requires knowledge of the credentials, which is e.g., often the case in IoT settings). Since the port randomization is deterministic given the pseudorandom seed, an attacker can exactly reconstruct the ports and, hence predict the randomization of the ports. If an attacker allocates a relay port, they know the current port, and they are able to predict the next relay port (at least if it is not used before). Commit 11fc465f4bba70bb0ad8aae17d6c4a63a29917d9 contains a fix.

Record
UBUNTU-CVE-2025-69217
CVSS 3.1
7.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
Updated
2026-11-02
OSVopenSUSE-SU-2026:10375-1 No score

coturn-4.9.0-1.1 on GA media

These are all security issues fixed in the coturn-4.9.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:10375-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:21184-1 No score

Security update for coturn

This update for coturn fixes the following issues:

Changes in coturn:

  • Update to version 4.14.0 New

    • No more dependency on prometheus-client-c
    • HTTPS support for prometheus client (optional)
    • TLS support for redis - now compatible with managed redis (optional).
    • Rate limiting "401 Unauthorized" responses - reduces reflection attacks off the coturn server. This is an experimental feature - not fully tested on production scale deployment and massive DDoS attacks. New prometheus counters should help shed some light on real life behavior and performance. The feature is off by default. What's Changed
    • validate hmackey length in sqlite_get_user_key before hex decode.
    • Add out-of-tree patch to restore deprecated OpenSSL 1.1.1.
    • Add optional TLS transport for Redis connections.
    • Fix relay threads override.
    • Flush prometheus hot-path counters once per second to kill lock contention.
    • fix signed-char index out-of-bounds read in base64_decode.
    • Build Prometheus exporter from vendored local sources.
    • Prom https.
    • Fix realm quota data race and warnings.
    • Add per-source rate-limiting of UDP 401 Unauthorized responses
  • Update to version 4.13.1

    • null-terminate server_name in stun_is_challenge_response_str.
    • Canonicalize all IPv4-in-IPv6 encodings before peer-IP checks.
    • Auto-deny coturn's own database backend endpoints as relay peers.
    • Deny link-local / ULA / site-local relay peers by default.
  • Update to version 4.13.0

    • Wrap atomic everywhere.
    • Fix sendmmsg stride bug in multiplex-peer UDP batch flush.
    • Reap TURN permissions/channels via a per-thread sweep instead of per-object timers.
    • Add --udp-sendmmsg-log to observe egress sendmmsg/UDP-GSO batching.
    • Expose recvmmsg/sendmmsg UDP batch sizes as Prometheus metrics
    • Restrict recvmmsg fast path to shared fan-in sockets (make --udp-recvmmsg useful standalone).
    • Enable --udp-recvmmsg by default on Linux.
    • Security hardening: port parsing, admin brute-force throttle, credential log redaction, constant-time compare, OAuth bounds checks, permission cap (#1932).
    • Add continuous latency mode to stunclient.
    • Fix test_redis_format link failure.
    • Fix configure MANPREFIX typo.
    • Fix missing sqlite3 dependendcy.
    • Fix UDP receive buffer ownership.
  • Update to version 4.12.0

    • Update khash to the latest version (#1919).
    • Update readme to match latest changes (#1920).
    • Update docs for drop-invalid-packets and response-origin-only-with-rfc5780.
    • Multiplexpeer (#1916).
    • Fix TTL/TOS type conversion (#1915).
    • turnutils_uclient: sender thread pool + UDP-GSO send batching + recv_pps reporting (#1913).
    • Fix memory leak introduced by recvmmsg path (#1912).
    • turnutils_uclient: multi-threaded listener (recv) pool.
    • examples/turnserver.conf: update description of cli option.
    • turnutils_uclient: Linux recvmmsg receive path + larger SO_RCVBUF (#1910).
    • Add UDP-GSO send path (--udp-gso) (#1907).
    • turnutils_peer: Linux fast path with drain loop, recvmmsg/sendmmsg, U… (#1908).
    • Relay recvmmsg (#1906).
    • fuzzing: use hex escapes for HTTP EOH dictionary entry.
    • Sync turnserver man page with current CLI options (#1903).
    • Remove stale --ne option from turnserver --help (#1904).
    • Restore CodeQL permissions, category, and manual build mode.
  • Update to version 4.11.0

    • Filc harness and pointer typedefs (#1896).
    • Load generator mode in turnutils_uclient (#1894).
    • Cache hot lookups in TURN data-path handlers (#1893).
    • Inline get_ioa_addr_len() in the header (#1891).
    • Trim two redundant checks from per-packet relay hot path.
    • Hoist turn_server_get_engine() out of per-packet hot path.
    • Add fuzz coverage for integrity helpers (#1888).
    • Add deterministic challenge-response builder to FuzzStun.
    • Seed address-mapping table in fuzz initializer (#1885).
    • Unblock fuzz coverage for…
Record
openSUSE-SU-2026:21184-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
coturn
Ubuntu:16.04:LTS
All versions, plus listed versions
4.4.5.4-24.5.0.2-34.5.0.3-14.5.0.3-1build14.5.0.3-1ubuntu0.24.5.0.3-1ubuntu0.34.5.0.3-1ubuntu0.4
None known
coturn
Ubuntu:18.04:LTS
All versions, plus listed versions
4.5.0.6-1ubuntu24.5.0.7-1ubuntu14.5.0.7-1ubuntu24.5.0.7-1ubuntu2.18.04.14.5.0.7-1ubuntu2.18.04.24.5.0.7-1ubuntu2.18.04.3
None known
coturn
Ubuntu:20.04:LTS
All versions, plus listed versions
4.5.1.1-1.1build14.5.1.1-1.1build24.5.1.1-1.1ubuntu0.20.04.14.5.1.1-1.1ubuntu0.20.04.2
None known
coturn
Ubuntu:22.04:LTS
All versions, plus listed versions
4.5.2-34.5.2-3.1~ubuntu22.04.1
None known
coturn
Ubuntu:24.04:LTS
All versions, plus listed versions
4.6.1-1build14.6.1-1build24.6.1-1build34.6.1-1build4
None known
coturn
Ubuntu:25.10
All versions, plus listed versions
4.6.1-2build1
None known
coturn
Ubuntu:26.10
All versions, plus listed versions
4.6.1-2build24.12.0-14.14.0-14.15.0-14.18.0-1
None known
coturn
Ubuntu:26.04:LTS
All versions, plus listed versions
4.6.1-2build14.6.1-2build2
None known
coturn
openSUSE:Tumbleweed
From an advisory covering 2 CVEs
before 4.9.0-1.1
4.9.0-1.1
coturn
openSUSE:Leap 16.0
From an advisory covering 2 CVEs
before 4.14.0-bp160.1.1
4.14.0-bp160.1.1

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2025-69217 is a high vulnerability (CVSS 7.7) in Coturn, published December 30, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. No source names a fixed version.

References

Show 5 moreShow less
This page doesn't list everything

Left out here: the rest of 1 source description. The JSON record has them.

MoveEnter Open