CVE-2026-116574
ŚrednieCVSS 5.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 32 - wyżej niż 32% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Zdalny atakujący może doprowadzić do awarii procesu FreeSWITCH lub uszkodzenia pamięci, powodując odmowę usługi i przerwanie aktywnych połączeń telefonicznych.
Rekomendacja
Zaktualizuj FreeSWITCH do wersji 1.11.2 lub nowszej. Ogranicz ekspozycję powierzchni serializujących dane kontrolowane przez wywołującego (mod_xml_cdr, konferencje, XML Event Socket, XML API).
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_xml_ampencode() reserved only ten bytes for the widest numeric character reference produced from a four-byte UTF-8 sequence, omitting space for the terminating NUL. When remote-supplied text was serialized at the exact buffer-growth boundary, the terminator wrote one byte beyond the heap allocation. Reachable surfaces include mod_xml_cdr, conference and formatted CDR XML, XML Event Socket output, and XML API output that serializes caller-controlled values. The fixed zero-byte write can abort the process or truncate an adjacent object, while 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

