CVE-2026-121952
KrytyczneCVSS 9.8Streszczenie
FreeRDP w wersjach przed 3.32.2 ma podatność out-of-bounds write w proxy, ponieważ funkcja rdp_read_bitmap_cache_v2_capability_set odrzuca tylko wartości numCellCaches większe niż 5, podczas gdy tablica komórek bitmap cache v2 jest później odwoływana pod stałymi indeksami od 0 do 4. Klient łączący się z proxy może zadeklarować mniej niż pięć komórek cache w Confirm Active, powodując uszkodzenie sterty, wyciek danych sterty do backendu lub awarię.
Ocena ryzyka
Złośliwy klient może uszkodzić pamięć sterty proxy, wyciec dane do backendu lub wywołać awarię usługi. Może to naruszyć poufność i dostępność infrastruktury proxy RDP.
Rekomendacja
Zaktualizuj FreeRDP do wersji 3.32.2 lub nowszej. Ogranicz dostęp do proxy RDP wyłącznie do zaufanych klientów.
Inne podatności w FreeRDP
Zobacz wszystkie- CVE-2026-121964Wysokie
FreeRDP w wersjach przed 3.32.2 zawiera przepełnienie bufora na stercie w kliencie RPC RD Gateway, gdzie funkcja rpc_client_recv_fragment zapisuje fragmenty BIND_ACK i ALTER_CONTEXT_RESP do trwałego strumienia PDU, sprawdzając tylko całkowitą pojemność, a nie pozostałą pojemność od bieżącej pozycji strumienia. Złośliwy lub przejęty RD Gateway może wysłać spreparowane fragmenty RPC z zmanipulowanymi wartościami alloc_hint i frag_length, aby nadpisać pamięć sterty klienta danymi kontrolowanymi przez atakującego, powodując awarię lub potencjalne wykonanie dowolnego kodu.
- CVE-2026-121963Średnie
FreeRDP przed wersją 3.32.2 zawiera podatność use-after-free w asynchronicznym dynamicznym kanale rdpsnd, która pozwala złośliwym serwerom RDP wywołać dostęp do zwolnionego callbacku poprzez zamknięcie kanału z zakolejkowanymi PDU audio. Atakujący mogą wysłać PDU treningowy, a następnie zamknąć kanał, tak aby wątek odtwarzania odczytał zwolniony callback w rdpsnd_virtual_channel_write, powodując awarię klienta.
- CVE-2026-121962Wysokie
FreeRDP w wersjach przed 3.32.2 zawiera przepełnienie bufora na stercie w funkcji transport_default_read_pdu podczas obsługi częściowych odczytów Early User Authorization w ramach PROTOCOL_HYBRID_EX CredSSP. Złośliwy serwer RDP może podzielić czterobajtowy wynik EUA na krótkie odczyty, które przesuwają wskaźnik strumienia poza alokację 16 KiB, powodując zapis poza granicami i odmowę usługi po stronie klienta.
- CVE-2026-121961Średnie
FreeRDP przed wersją 3.32.2 zawiera podatność use-after-free w trackerze DRDYNVC freerdp-proxy podczas przechwytywania kanału drdynvc. Złośliwy serwer docelowy może wielokrotnie wysyłać CREATE_REQUEST_PDU dla aktywnego identyfikatora kanału, ścigając się z obsługą danych front DATA w celu zwolnienia pożyczonego kontekstu i spowodowania awarii procesu proxy.
- CVE-2026-121960Wysokie
FreeRDP w wersjach przed 3.32.2 zawiera podatność odmowy usługi w serwerze shadow z włączonym NLA, gdy żądanie CredSSP TSRequest nie zawiera negoTokens. Nieuwierzytelniony atakujący może wysłać spreparowane siedmiobajtowe żądanie TSRequest zawierające tylko pole wersji, aby wywołać krytyczny WINPR_ASSERT i przerwać proces serwera.
- CVE-2026-121959Średnie
FreeRDP w wersjach przed 3.32.2 zawiera podatność na nieskończoną pętlę w funkcji websocket_context_read, która nie obsługuje wyniku zerowego BIO przy oczekującym ładunku. Złośliwy serwer RD Gateway może wysłać obcięty frame WebSocket, a następnie TLS close_notify, powodując zapętlenie wątku klienta i zużycie CPU aż do jego zabicia.
- CVE-2026-121958Wysokie
FreeRDP do wersji 3.32.1 ma podatność heap out-of-bounds write w kliencie RDPGFX, ponieważ callback delete_surface obcina klucze haszy powierzchni do 16 bitów, pozostawiając tablicę powierzchni w niespójnym stanie, przez co HashTable_GetKeys zapisuje poza zaalokowaną tablicą kluczy. Złośliwy lub działający jako man-in-the-middle serwer RDP może to wykorzystać, tworząc surfaceId 0xFFFF, zamykając kanał RDPGFX, wysyłając powtarzane PDU DELETESURFACE, a następnie ENDFRAME lub RESETGRAPHICS.
- CVE-2026-121957Wysokie
FreeRDP w wersjach przed 3.32.2 zawiera podatność use-after-free, która pozwala złośliwym serwerom RDP uszkodzić pamięć klienta poprzez wyścig między obsługą ResetGraphics w RDPGFX a dekoderem bitmap planarnych. Atakujący może wysłać ResetGraphics jednocześnie wysyłając skompresowane bitmapy 32 bpp lub większe, aby wywołać use-after-free na stercie lub odczyt/zapis poza granicami współdzielonych buforów planarnych.
- CVE-2026-121956Wysokie
FreeRDP przed wersją 3.32.2 zawiera błąd podwójnego zwolnienia w funkcji WinPR Kerberos SSPI retrieveSomeTgt, która przypisuje domyślny realm krb5 do głównego podmiotu z pustym realmem bez przejęcia własności. Nieuwierzytelnieni zdalni klienci mogą wysłać spreparowane żądanie NLA/CredSSP u2u TGT z znakiem '@' w nazwie serwera, co uszkadza stertę i powoduje awarię procesu serwera.
- CVE-2026-121955Wysokie
FreeRDP przed wersją 3.32.2 zawiera podatność use-after-free w funkcji Emulate_SCardReleaseContext, która zwalnia emulowany SCardContext przed anulowaniem i dołączeniem wątku roboczego. Złośliwy serwer może wysłać IRP smartcard ESTABLISHCONTEXT, GETSTATUSCHANGE z długim limitem czasu, a następnie RELEASECONTEXT, aby uszkodzić pamięć sterty lub spowodować awarię klientów korzystających z emulacji smartcard.
Oryginalny opis (angielski, źródło NVD)
FreeRDP before 3.32.2 has an out-of-bounds write in the proxy because rdp_read_bitmap_cache_v2_capability_set rejects only numCellCaches values above 5, yet the bitmap cache v2 cell array is later accessed at fixed indices 0 through 4. A client connecting to the proxy can declare fewer than five cell caches in its Confirm Active, causing heap corruption, heap data leakage to the backend, or a crash.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

