Podatności FreeSWITCH
31 znanych podatności CVE w FreeSWITCH, przetłumaczonych i ocenionych.
- CVE-2026-116790Krytyczne
FreeSWITCH przed wersją 1.11.2 akceptuje wszystkie testy łączności ICE bez kryptograficznej weryfikacji atrybutu STUN MESSAGE-INTEGRITY. Zdalny atakujący może sfałszować test łączności ICE bez poświadczeń SDP, nominować własny adres i przekierować ruch RTP/DTLS, co umożliwia podsłuchiwanie i wstrzykiwanie mediów na niezaszyfrowanych połączeniach.
- CVE-2026-116785Krytyczne
FreeSWITCH przed wersją 1.11.2 ma błąd w funkcji ws_read_frame(), która dekoduje 64-bitową długość ładunku WebSocket z 32-bitową zamianą bajtów i zawęża wynik do typu signed. Wartość, której dolne słowo staje się ujemne, omija sprawdzenie rozmiaru i jest reinterpretowana jako ogromna liczba unsigned, powodując nadpisanie pamięci poza buforem odbioru 64 KiB. Może to uszkodzić wskaźniki połączeń i spowodować awarię FreeSWITCH, kończąc wszystkie sesje.
- CVE-2026-116779KrytyczneAktywnie exploitowane
FreeSWITCH przed wersją 1.11.3 w funkcji sofia_presence_handle_sip_i_message() dzieli użytkownika To przychodzącego komunikatu SIP MESSAGE na znaku plus i traktuje lewą stronę jako selektor protokołu czatu. Wybór api chat proto prowadzi do switch_api_execute(), pozwalając peerowi, którego MESSAGE został zaakceptowany, na uruchamianie poleceń API FreeSWITCH, w tym poleceń systemowych, z uprawnieniami demona. Podatność jest aktywnie wykorzystywana w środowisku.
- CVE-2026-49841Krytyczne
FreeSWITCH przed wersją 1.11.1 zawiera podatność przepełnienia sterty w module mod_verto. Atakujący może wysłać żądanie HTTP POST z dużym ciałem, co prowadzi do przepełnienia bufora przed uwierzytelnieniem.
- CVE-2026-49840Krytyczne
W FreeSWITCH przed wersją 1.11.1 funkcja esl_recv_event() nieprawidłowo obsługuje Content-Length, co pozwala złośliwemu peerowi ESL na wysłanie ramki z ujemną wartością, powodując uszkodzenie sterty lub awarię procesu przed uwierzytelnieniem.
- CVE-2026-116789Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja dtls_state_setup() porównuje certyfikat peera z odciskiem SDP a=fingerprint tylko gdy FreeSWITCH jest klientem DTLS, a nie gdy pełni rolę serwera. Nieuwierzytelniony peer może ukończyć handshake DTLS-SRTP z niepowiązanym certyfikatem, uzyskać klucze SRTP i wstrzykiwać media.
- CVE-2026-116788Wysokie
W FreeSWITCH przed wersją 1.11.2 w switch_xml_decode() występuje niedomiar liczby całkowitej powodujący zbyt małą alokację sterty, gdy dokument XML deklaruje encję z pustą wartością zastępczą. Kolejne kopiowanie przepełnia bufor.
- CVE-2026-116787Wysokie
W FreeSWITCH przed wersją 1.11.2 mod_event_socket używa nieuwierzytelnionej wartości Content-Length bezpośrednio jako rozmiaru alokacji treści wiadomości Event Socket. Wartości ujemne lub bardzo duże mogą przepełnić obliczenia terminatora lub wymusić błąd alokacji kończący proces.
- CVE-2026-116786Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja sofia_handle_sip_i_refer() umieszcza surowe parametry i nagłówki URI Refer-To w bloku zmiennych kanału przekazywanym do switch_ivr_originate(). Przecinek w wartości kontrolowanej przez atakującego jest traktowany jako separator zmiennych, co pozwala uwierzytelnionemu dzwoniącemu wstrzyknąć dowolne zmienne do nowo tworzonego legu.
- CVE-2026-116784Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja process_rtcp_report() używała zadeklarowanej w pakiecie RTPFB NACK długości nagłówka RTCP jako granicy pętli przetwarzania wpisów zwrotnych, zamiast zweryfikowanej wcześniej długości datagramu. Krótki pakiet z zawyżoną deklaracją mógł powodować odczyty daleko poza buforem odbiorczym o stałym rozmiarze 16 KiB. Każdy peer mogący wysłać RTCP do aktywnej rozmowy wideo może wykorzystać tę podatność.
- CVE-2026-116783Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja udptl_rx_packet() używała kontrolowanej przez peera liczby wpisów FEC bezpośrednio do wypełniania pięcioelementowych tablic FEC w sesji T.38 mod_spandsp. Większa liczba powodowała zapis danych kontrolowanych przez nadawcę poza tymi tablicami i utrwalenie zawyżonej liczby do późniejszego etapu rekonstrukcji. Każdy peer mogący dostarczyć UDPTL do ustanowionej sesji faksu T.38 może wykorzystać tę podatność.
- CVE-2026-116782Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja rtmp_i_connect() przekazywała pierwszy argument połączenia RTMP do amf0_object_get() bez sprawdzenia, czy wartość AMF jest obiektem. Ciąg znaków lub liczba w miejscu obiektu AMF powodowały interpretację bajtów unii z wiadomości jako wskaźników do węzłów i ich dereferencję. Każdy klient z dostępem sieciowym do włączonego nasłuchu mod_rtmp mógł wysłać zniekształcone polecenie połączenia przed logowaniem; moduł jest domyślnie wyłączony w standardowej kompilacji i konfiguracji.
- CVE-2026-116781Średnie
W FreeSWITCH przed wersją 1.11.2 funkcja ws_read_frame() odmaskowywała ładunek WebSocket, iterując po wsh->datalen obejmującym nagłówki ramki, co mogło powodować zapis poza buforem odbiorczym 64 KiB. Luka jest osiągalna przed uwierzytelnieniem, gdy mod_xml_rpc i jego opcjonalny endpoint WebSocket są włączone.
- CVE-2026-116780Niskie
W FreeSWITCH przed wersją 1.11.2 funkcja switch_event_expand_headers_check() wychodzi poza kopię sterty, gdy dodatni offset w ${variable:offset} przekracza długość wartości zmiennej. Kolejne obliczenie długości i kopiowanie dołączają sąsiednią pamięć sterty do wyniku rozwinięcia, co może ujawnić zmienne kanału, poświadczenia, dane alokatora i bajty wskaźników. Luka jest osiągalna przez szablony konfiguracji wycinające zdalne dane wejściowe oraz przez uwierzytelnione polecenia Event Socket eval i expand.
- CVE-2026-116572Średnie
W FreeSWITCH od wersji 1.10.0 do 1.11.1 w mod_sofia występuje przepełnienie bufora stosu podczas przetwarzania nazw wyświetlanych w nagłówku Contact SIP dla powiadomień o zdarzeniach dialogowych. Zbyt długa nazwa wyświetlana przepełnia stały bufor 512 bajtów.
- CVE-2026-116571Średnie
W FreeSWITCH przed wersją 1.11.2 funkcja rtmp_rtp2rtmpH264() budowała rekord konfiguracji dekodera AVC w stałym buforze stosu, kopiując wartości SPS i PPS bez sprawdzania ich rozmiarów. Zbyt duże zestawy parametrów mogły przepełnić ramkę stosu funkcji.
- CVE-2026-116570Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja http_directory_auth() odtwarzała oczekiwane poświadczenia user@domain:password i kodowała je base64 do bufora o rozmiarze 80 bajtów przy użyciu kodera bez argumentu długości wyjściowej. Poświadczenie dłuższe niż 57 znaków powodowało przepełnienie stosu przed porównaniem dostarczonego hasła HTTP Basic. Nieuwierzytelniony klient musiał jedynie wskazać istniejącego użytkownika katalogu na wystawionym nasłuchu HTTP mod_xml_rpc; moduł jest kompilowany, ale nie ładowany w standardowej konfiguracji.
- CVE-2026-116569Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja msrp_parse_buffer() odejmowała ramkowanie separatora od kontrolowanego przez peera krótkiego segmentu, którego zakres bajtów MSRP kończył się na *, bez uprzedniego sprawdzenia, czy segment jest wystarczająco długi. Wynik bez znaku zawijał się w pobliżu SIZE_MAX i trafiał do switch_msrp_msg_set_payload() zarówno jako rozmiar alokacji, jak i długość memcpy, a powiązana arytmetyka wskaźników mogła odczytywać przed buforem odbiorczym. Nasłuch jest domyślnie wyłączony w msrp.conf.xml, ale każde wdrożenie z włączonym portem MSRP TCP lub TLS przetwarza to ramkowanie przed uwierzytelnieniem.
- CVE-2026-116568Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja rtmp_rtmp2rtpH264() ufała prefiksowi długości każdej przychodzącej jednostki NAL H.264 bez sprawdzenia go względem pozostałych bajtów w wiadomości RTMP. Zawyżona zadeklarowana jednostka powodowała niedomiar licznika pozostałych bajtów bez znaku i przesunięcie parsera poza bufor odbiorczy, gdzie kolejny odczyt prefiksu długości mógł spowodować awarię procesu. Podatność dotyczy wdrożeń, które kompilują i ładują mod_rtmp oraz akceptują sesje rozmów wideo, zwykle na porcie TCP 1935; ustanowienie połączenia wymaga logowania do katalogu, gdy auth-calls jest true, natomiast nie wymaga poświadczeń, gdy auth-calls jest nieobecne lub false.
- CVE-2026-116567Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja rtmp_handle_control() kopiuje treść komunikatu RTMP user-control do bufora stosu o rozmiarze 200 bajtów za pomocą niezabezpieczonej pętli sprintf sterowanej długością komunikatu. Komunikat o długości około 70 bajtów lub większej powoduje przepełnienie stosu jeszcze przed logowaniem RTMP, ponieważ handshake nie uwierzytelnia żadnej ze stron. Podatność dotyczy wdrożeń z modułem mod_rtmp, który domyślnie jest wyłączony, ale po włączeniu często nasłuchuje na porcie TCP 1935.
- CVE-2026-115928Wysokie
W FreeSWITCH przed wersją 1.11.2 funkcja switch_core_media_add_crypto() przekazuje długość zakodowanego klucza i soli z atrybutu a=crypto w przychodzącym SDP do switch_b64_decode() jako pojemność bufora docelowego. Klucz i sól o długości zero powodują niedomiar pojemności, co pozwala zdekodowanemu atrybutowi przepełnić stały bufor stosu danymi wybranymi przez nadawcę jeszcze przed odebraniem połączenia. Na domyślnym profilu external nieuwierzytelniony dzwoniący może dotrzeć do parsera SDES-SRTP.
- CVE-2026-116574Średnie
FreeSWITCH to otwarta platforma telekomunikacyjna. W wersjach przed 1.11.2 funkcja switch_xml_ampencode() rezerwowała tylko dziesięć bajtów na najszerszą referencję znakową liczbową utworzoną z czterobajtowej sekwencji UTF-8, pomijając miejsce na kończący NUL. Gdy tekst dostarczony zdalnie był serializowany dokładnie na granicy wzrostu bufora, terminator zapisywał jeden bajt poza alokacją sterty. Podatność może przerwać proces lub uszkodzić sąsiedni obiekt; zdalne wykonanie kodu nie zostało wykazane. Problem naprawiono w wersji 1.11.2.
- CVE-2026-116573Średnie
FreeSWITCH to otwarta platforma telekomunikacyjna. Od wersji 1.10.0 do 1.11.1 w mod_sofia występuje przepełnienie bufora stosu podczas generowania powiadomień o zdarzeniach dialogowych. Peer może ustanowić dialog z nadmiernie długą częścią użytkownika nagłówka SIP To, a następnie subskrybować zdarzenia dialogowe tej encji, powodując przepełnienie stałego bufora stosu przez zapisaną wartość. Wykorzystanie wymaga włączonego zarządzania presence lub shared-appearance i zwykle wymaga ważnych poświadczeń profilu, chyba że uwierzytelnianie subskrypcji jest wyłączone. Przepełnienie może zakończyć proces FreeSWITCH i wszystkie aktywne połączenia. Podatność naprawiono w wersji 1.11.2.
- CVE-2026-9754Średnie
Uwierzytelniony użytkownik z rolą odczytu może odczytać ograniczone ilości niezainicjalizowanej pamięci stosu poprzez specjalnie spreparowane wydania polecenia filemd5.
- CVE-2026-49848Średnie
Podatność w FreeSWITCH przed wersją 1.11.1 w module mod_verto w gałęzi check_auth userauth powoduje, że zmienne użytkownika dostarczone w żądaniu są zapisywane do stanu połączenia przed weryfikacją hasła. Zapisy są tylko dołączane, a połączenie nie jest zamykane po nieudanym porównaniu, więc wartości z nieudanych prób logowania utrzymują się na tym samym WebSocket i są przenoszone do kolejnego udanego logowania.
- CVE-2026-49847Wysokie
Podatność na przepełnienie stosu w FreeSWITCH przed wersją 1.11.1. Pojedyncza ramka WebSocket z głęboko zagnieżdżonym dokumentem JSON powoduje awarię procesu FreeSWITCH, przerywając wszystkie połączenia i sesje na hoście. Atak nie wymaga uwierzytelnienia.
- CVE-2026-49843Średnie
FreeSWITCH przed wersją 1.11.1 zawiera podatność w module mod_verto. Procedura obsługi JSON-RPC wiąże połączenie z sessid dostarczonym przez klienta przed bramą uwierzytelniania. Nieuwierzytelniony atakujący znający UUID docelowej sesji może usunąć prawowitego klienta, wysyłając mu verto.punt i zamykając jego gniazdo.
- CVE-2026-49842Wysokie
Podatność w FreeSWITCH przed wersją 1.11.1. Pętla ramek WebSocket w module mod_verto przechwytuje protokół testowania prędkości z prefiksem # (#SPU / #SPB / #SPE) przed jakimkolwiek sprawdzeniem uwierzytelnienia. Zadeklarowany rozmiar ładunku w #SPU jest parsowany za pomocą atoi() i odrzucane są tylko wartości nie-dodatnie, więc nieuwierzytelniony peer może zażądać do INT_MAX bajtów. Serwer następnie zapisuje około size * 10 bajtów podczas fazy pobierania, co daje około 20 GB na żądanie, co prowadzi do silnej amplifikacji przepustowości wychodzącej z krótkiego żądania.
- CVE-2026-49475Wysokie
FreeSWITCH przed wersją 1.11.0 zawiera lukę w obsłudze pakietów STUN, gdzie zadeklarowana długość atrybutu jest krótsza niż struktura, do której parser rzutuje, co powoduje odczyt i zapis poza granicami atrybutu, prowadząc do dostępu do pamięci poza buforem mediów.
- CVE-2026-49472Średnie
FreeSWITCH przed wersją 1.11.0 zawiera podatną funkcję PREFIX(prologTok)() w pliku libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c, która została sklonowana z przestarzałej i podatnej wersji libexpat/libexpat. Funkcja nie otrzymała odpowiedniej łatki bezpieczeństwa. Problem został naprawiony w wersji 1.11.0.
- CVE-2026-45771Wysokie
FreeSWITCH przed wersją 1.11.0 zawiera podatność w parserze XML, który rozwijając zagnieżdżone encje <!ENTITY> bez ograniczeń głębokości lub liczby, umożliwia atak "billion laughs". Nieuwierzytelniony atakujący sieciowo może wysłać pojedyncze żądanie SIP PUBLISH z treścią PIDF, która przed weryfikacją sumy kontrolnej powoduje nieograniczone zużycie CPU i pamięci.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

