CVE-2026-115928
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 54 - wyżej niż 54% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Przepełnienie uszkadza pamięć i może spowodować awarię procesu FreeSWITCH, zrywając wszystkie aktywne połączenia. Wykonanie zdalnego kodu nie zostało wykazane, ale stabilność usługi jest zagrożona.
Rekomendacja
Zaktualizuj FreeSWITCH do wersji 1.11.2 lub nowszej. Jako obejście ustaw rtp_secure_media_inbound na false, aby usunąć podatną ścieżkę.
Inne podatności w FreeSWITCH
Zobacz wszystkie- 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ść.
Oryginalny opis (angielski, źródło NVD)
FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a software implementation that runs on any commodity hardware. Prior to 1.11.2, switch_core_media_add_crypto() passed the encoded key and salt length from an inbound SDP a=crypto attribute to switch_b64_decode() as the destination capacity. A zero-length key and salt made that capacity underflow, allowing the decoded attribute to overflow a fixed stack buffer with sender-chosen bytes before the call was answered. On the shipped external profile, an unauthenticated caller can reach the SDES-SRTP parser, while profiles that challenge inbound calls remain affected for senders who can authenticate; setting rtp_secure_media_inbound to false removes the path, and WebRTC DTLS-SRTP legs are unaffected. The overflow corrupts memory and can crash the FreeSWITCH process, dropping every active call, although remote code execution has not been demonstrated. This issue is fixed in version 1.11.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

