CVE-2026-50161
KrytyczneCVSS 9.3Streszczenie
W bibliotece libre przed wersją 4.8.1 funkcja websock_decode() w pliku src/websock/websock.c zawiera przepełnienie liczby całkowitej podczas walidacji maskowanej ramki WebSocket z użyciem 64-bitowego kodowania długości. Wyrażenie 4 + hdr->len może się zawinąć, gdy hdr->len jest bliskie UINT64_MAX, co powoduje, że kontrola mbuf_get_left() przechodzi, a pętla XOR zapisuje poza bufor heap. Dotknięte są aplikacje używające websock_accept() lub websock_accept_proto() do implementacji serwera WebSocket; eksploatacja może prowadzić do kontrolowanego uszkodzenia pamięci lub DoS po uzgodnieniu HTTP WebSocket upgrade. Problem naprawiono w wersji 4.8.1.
Ocena ryzyka
Atakujący może spowodować uszkodzenie pamięci lub odmowę usługi w aplikacjach korzystających z biblioteki libre jako serwera WebSocket, co może prowadzić do przejęcia kontroli nad procesem lub przerwania działania usługi.
Rekomendacja
Zaleca się natychmiastową aktualizację biblioteki libre do wersji 4.8.1 lub nowszej, która zawiera poprawkę.
Oryginalny opis (angielski, źródło NVD)
libre is a generic library for real-time communications with asynchronous input and output support. Prior to 4.8.1, the websock_decode() function in src/websock/websock.c contains an integer overflow when validating a masked WebSocket frame that uses the 64-bit extended length encoding. The expression 4 + hdr->len can wrap when hdr->len is close to UINT64_MAX, causing the mbuf_get_left() bounds check to pass. The subsequent XOR unmasking loop then writes beyond the heap buffer. Applications using websock_accept() or websock_accept_proto() to implement a WebSocket server are affected, and exploitation can cause attacker-controlled heap corruption or denial of service after the HTTP WebSocket upgrade handshake. This issue is fixed in version 4.8.1.

