CVE-2026-65981
WysokieCVSS 7.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
Coturn w wersjach przed 4.15.0 z włączoną opcją --mobility zawiera podatność, która pozwala uwierzytelnionemu atakującemu na przejęcie sesji REFRESH innego użytkownika. Atakujący, który zdobędzie MOBILITY-TICKET ofiary, może odbierać i wstrzykiwać ruch przekaźnikowy oraz zużywać limit ofiary. Problem wynika z nieprawidłowej weryfikacji tożsamości w gałęzi resume.
Ocena ryzyka
Atakujący może podszyć się pod innego użytkownika, przechwycić jego ruch TURN i zużyć jego zasoby. Może to prowadzić do naruszenia poufności danych i zakłócenia usług dla legalnych użytkowników.
Rekomendacja
Należy zaktualizować Coturn do wersji 4.15.0 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy wyłączyć opcję --mobility lub ograniczyć dostęp do serwera tylko dla zaufanych klientów.
Inne podatności w Coturn
Zobacz wszystkie- CVE-2026-68555Średnie
Coturn w wersji 4.15.0 ma podatność, która pozwala uwierzytelnionemu użytkownikowi TURN na wielokrotne wznawianie alokacji z nowych 5-krotek UDP bez zakończenia przekazania, gdy włączona jest opcja --mobility. Prowadzi to do nieograniczonej liczby sesji po stronie serwera i wyczerpania pamięci procesu, nawet przy skonfigurowanym --user-quota=1.
- CVE-2026-68554Niskie
Coturn to darmowa implementacja serwera TURN i STUN. Przed wersją 4.15.0 atakujący w ścieżce sieciowej może dodać atrybuty po MESSAGE-INTEGRITY do uwierzytelnionego żądania STUN przez zwykły UDP lub TCP, dostosować długość nagłówka STUN i przeliczyć niekluczowany FINGERPRINT, podczas gdy oryginalny HMAC pozostaje ważny, ponieważ obejmuje tylko prefiks wiadomości. Parsowanie po stronie serwera w src/server/ns_turn_server.c kontynuuje po MESSAGE-INTEGRITY przez handle_turn_allocate(), handle_turn_create_permission(), handle_turn_refresh() i handle_turn_command(), co pozwala na nadpisanie czasu życia alokacji, wstrzyknięcie uprawnienia lub ominięcie kontroli pochodzenia przez atrybuty LIFETIME, XOR-PEER-ADDRESS lub ORIGIN. Wdrożenia TLS i DTLS zapobiegają tej modyfikacji w tranzycie. Problem naprawiono w wersji 4.15.0.
- CVE-2026-68553Wysokie
W Coturn przed wersją 4.13.0 uwierzytelniony użytkownik TURN może umieścić specyfikatory formatu printf w atrybutach STUN USERNAME lub REALM, które przechodzą walidację is_secure_string() i są osadzane w kluczach Redis. Funkcja send_message_to_redis() przekazuje kontrolowany klucz jako argument formatu do redisAsyncCommand(), co może prowadzić do odczytu poza va_list. Eksploitacja może spowodować awarię procesu coturn lub ujawnienie pamięci stosu do Redis.
- CVE-2026-68552Średnie
Coturn przed wersją 4.15.0 ma podatność, w której nieuwierzytelniony klient może wysłać wiadomość STUN przez TCP/TLS z polem długości treści od 65520 do 65532, powodując zawinięcie zmiennej len w stun_get_message_len_str(). Prowadzi to do desynchronizacji parsera strumienia i zerwania połączenia atakującego klienta, ale nie wpływa na innych klientów ani proces serwera.
- CVE-2026-73216Średnie
Coturn to implementacja serwerów TURN i STUN. Przed wersją 4.17.0 funkcja shutdown_client_connection() przedwcześnie wywołuje dec_quota() i zwalnia rozliczanie przepustowości podczas pierwszego etapu zamykania alokacji z włączoną mobilnością, zachowując alokację, gniazdo przekaźnikowe, sesję i bilet mobilności. Umożliwia to uwierzytelnionemu klientowi ominięcie limitów --user-quota i --total-quota oraz wyczerpanie portów przekaźnikowych. Problem naprawiono w wersji 4.17.0.
- CVE-2026-73215Wysokie
Coturn przed wersją 4.17.0 ma podatność w funkcji turnports_allocate_even(), która oznacza nieużywany port nieparzysty jako TPS_TAKEN_ODD dla żądania Allocate z parzystym portem i bitem rezerwacji R=0, mimo że żaden gniazdo RTCP go nie zwolni. Uwierzytelniony klient może trwale wyczerpać pulę portów relay, powodując błędy alokacji z kodem STUN 508.
- CVE-2026-73214Wysokie
Coturn przed wersją 4.16.0 ma podatność w funkcjach dtls_server_input_handler() i create_new_connected_udp_socket(), które przechowują stan OpenSSL dtls1_reassemble_fragment() dla 35-bajtowego pofragmentowanego ClientHello deklarującego 650 000-bajtowe uzgadnianie przed walidacją ciasteczka. Nieuwierzytelniony zdalny nadawca może wyczerpać pamięć bez poświadczeń TURN, ukończonego uzgadniania, ważnego ciasteczka lub spoofingu źródła.
- CVE-2026-73213Średnie
Coturn to implementacja serwerów TURN i STUN. Przed wersją 4.16.0 funkcja addr_less_eq() w src/client/ns_turn_ioaddr.c używa porównania składowych dla natywnych zakresów IPv6 min-max w ioa_addr_in_range(), co pozwala uwierzytelnionemu klientowi TURN na przekazywanie do peera IPv6, który numerycznie znajduje się w skonfigurowanym zakresie denied-peer-ip (nie wyrównanym do prefiksu), ale jest klasyfikowany jako poza nim. Problem naprawiono w wersji 4.16.0.
- CVE-2026-73212Średnie
Coturn przed wersją 4.13.1 zawiera podatność w funkcji good_peer_addr(), która nie kanonizuje adresów IPv4-kompatybilnych, 6to4 i NAT64 (64:ff9b::/96). Umożliwia to uwierzytelnionemu klientowi TCP CONNECT (RFC 6062) ominięcie zakresu adresów IPv4 z listy zabronionych (denied-peer-ip), gdy host Coturn ma odpowiednią trasę translacji.
- CVE-2026-62959Wysokie
Coturn od wersji 4.5.2 do 4.14.0, uruchomiony z opcją --acme-redirect i nasłuchującym na czystym TCP, pozwala nieuwierzytelnionemu klientowi na wysłanie żądania HTTP GET, w odpowiedzi 301 zwracając do ~870 bajtów sąsiedniego sterty procesu. Wyciek zawiera dane z innych żądań klientów, takie jak poświadczenia TURN, tokeny OAuth czy przekaźnikowane ładunki.
Oryginalny opis (angielski, źródło NVD)
Coturn is a free open source implementation of TURN and STUN Server. Prior to 4.15.0, a server using --mobility authenticates a resumed REFRESH request with the resuming user's credentials but does not verify that identity against the original allocation owner, allowing an authenticated attacker who obtains a victim MOBILITY-TICKET to receive and inject relayed traffic and consume the victim's quota. In the handle_turn_refresh resume branch, the victim allocation (orig_ss) is located solely by the attacker-controlled mobile id, and credentials are only adopted (via copy_auth_parameters) when the resuming session is unauthenticated. Because the attacker's session already has hmackey_set set to 1 from its own prior authentication (which is never reset for long-term-credential sessions), the credential copy is skipped and check_stun_auth validates the REFRESH against the attacker's own identity rather than the allocation owner's. This issue is fixed in version 4.15.0.

