Podatności FreeRDP
90 znanych podatności CVE w FreeRDP, przetłumaczonych i ocenionych.
- CVE-2026-23732Wysokie
FreeRDP przed wersją 3.21.0 zawiera podatność w parsowaniu FastGlyph, gdzie długość danych nie jest weryfikowana względem minimalnego rozmiaru wynikającego z wymiarów cx/cy. Złośliwy serwer może wywołać przepełnienie bufora po stronie klienta, prowadząc do awarii (DoS).
- CVE-2026-22856Wysokie
FreeRDP to darmowa implementacja protokołu Remote Desktop Protocol. Przed wersją 3.20.1, wyścig w śledzeniu wątków IRP kanału szeregowego pozwala na użycie po zwolnieniu (use-after-free) w stercie, gdy jeden wątek usuwa wpis z serial->IrpThreads, a inny go czyta. Luka została naprawiona w wersji 3.20.1.
- CVE-2013-4119Wysokie
FreeRDP w wersjach przed 1.1.0-beta+2013071101 pozwala zdalnym atakującym na spowodowanie odmowy usługi poprzez rozłączenie przed zakończeniem procesu uwierzytelniania, co prowadzi do dereferencji wskaźnika NULL i awarii aplikacji.
- CVE-2013-4118Wysokie
FreeRDP w wersjach przed 1.1.0-beta1 pozwala zdalnym atakującym na spowodowanie odmowy usługi poprzez dereferencję wskaźnika NULL, co prowadzi do awarii aplikacji.
- CVE-2014-0250Wysokie
Wielokrotne przepełnienia całkowite w pliku client/X11/xf_graphics.c w FreeRDP mogą pozwolić zdalnym atakującym na wywołanie nieokreślonego wpływu poprzez szerokość i wysokość w funkcjach xf_Pointer_New lub xf_Bitmap_Decompress, co prowadzi do niewłaściwej alokacji pamięci.
- CVE-2026-68579Krytyczne
FreeRDP przed wersją 3.30.0 zawiera przepełnienie bufora sterty w funkcji CliprdrStream_Read klienta schowka Windows. Złośliwy serwer RDP może wysłać odpowiedź o rozmiarze większym niż bufor odbiorcy, powodując zapis poza zakresem.
- CVE-2026-67305Krytyczne
Klient FreeRDP dla systemu Windows przed wersją 3.29.0 zawiera podatność na przepełnienie bufora sterty w wirtualnym kanale schowka podczas przetwarzania PDU CLIPRDR_FILE_CONTENTS_RESPONSE bez walidacji rozmiaru dostarczonego przez serwer względem bufora docelowego. Złośliwy serwer RDP może wysłać odpowiedź z ładunkiem danych znacznie większym niż żądany, powodując dowolne uszkodzenie pamięci sterty, co może umożliwić zdalne wykonanie kodu, gdy użytkownik wykona operację wklejania.
- CVE-2026-67289Krytyczne
FreeRDP przed wersją 3.29.0 (dotknięte wersje <= 3.28.0) nie waliduje znaków CRLF i kontrolnych w polu TargetNetAddress przekierowania RDP kontrolowanym przez serwer. Ta wartość jest kopiowana do ServerHostname klienta, a gdy klient łączy się przez proxy HTTP, jest zapisywana bezpośrednio w linii żądania CONNECT proxy i nagłówku Host przez http_proxy_connect() bez filtrowania. Złośliwy lub skompromitowany serwer RDP może wysłać spreparowany PDU przekierowania zawierający osadzone znaki kontrolne, aby wstrzyknąć dowolne nagłówki/żądania do żądania CONNECT proxy HTTP.
- CVE-2026-66402Krytyczne
FreeRDP przed wersją 3.29.0 (dotknięte wersje <= 3.28.0) zawiera wiele słabości weryfikacji tożsamości certyfikatu TLS w tls_verify_certificate(), tls_match_hostname() i x509_utils_get_dns_names(). Ponieważ FreeRDP wykonuje niestandardowe dopasowywanie Common Name i DNS SAN zamiast używać API OpenSSL uwzględniających długość, (1) obcina wartości DNS SAN przy osadzonych bajtach NUL (akceptując np. 'victim.example\0.attacker.example' jako 'victim.example'), (2) akceptuje pasujący Common Name nawet gdy obecne są niepasujące wpisy DNS SAN, oraz (3) akceptuje cele w postaci literałów IP poprzez dopasowanie DNS/CN bez porównywania iPAddress SAN. W zaufanym lub błędnie wydanym łańcuchu certyfikatów atakujący mogący przedstawić taki certyfikat może ominąć weryfikację tożsamości serwera, osłabiając uwierzytelnianie TLS serwera.
- CVE-2026-64620Krytyczne
Przepełnienie bufora sterty w FreeRDP przed wersją 3.28.0 (dotknięte <=3.27.1) w funkcji crypto_rsa_common(). Funkcja zapisuje wynik potęgowania modularnego do bufora wyjściowego przed sprawdzeniem granic, co pozwala na zapisanie danych poza buforem.
- CVE-2026-57158Krytyczne
FreeRDP w wersjach od 3.21.0 do 3.27.9 zawiera niekompletną poprawkę dla CVE-2026-23530 w funkcji planar_decompress_plane_rle_only w pliku planar.c. Złośliwy serwer RDP może wysłać specjalnie spreparowany ładunek planar RDPGFX_CMDID_WIRETOSURFACE_1, który powoduje odczyt jednego bajtu poza buforem wejściowym.
- CVE-2026-57156Krytyczne
W 32-bitowych wersjach FreeRDP przed 3.28.0 występuje przepełnienie liczby całkowitej w funkcji update_read_delta_points w pliku libfreerdp/core/orders.c. Atakujący serwer RDP może wykorzystać tę podatność do przydzielenia zbyt małego bufora sterty i zapisu poza jego granice.
- CVE-2026-45700Krytyczne
FreeRDP przed wersją 3.26.0 zawiera podatność polegającą na zapisie poza dozwolonym obszarem sterty w dekoderze bitmap planarnych. Atakujący może ominąć walidację współrzędnych i spowodować zapis poza buforem wewnętrznym.
- CVE-2026-31806Krytyczne
W FreeRDP przed wersją 3.24.0 funkcja gdi_surface_bits() nieprawidłowo waliduje wartości bmp.width i bmp.height dostarczane przez serwer RDP. Złośliwy serwer może wysłać spreparowane wartości przekraczające rozmiar powierzchni, co prowadzi do przepełnienia bufora sterty podczas dekodowania bitmap. Atakujący może kontrolować dane pikseli, co umożliwia potencjalne nadpisanie sąsiedniej pamięci sterty.
- CVE-2026-23884Krytyczne
W FreeRDP przed wersją 3.21.0 usuwanie bitmapy pozackranowej pozostawia wskaźnik `gdi->drawing` wskazujący na zwolnioną pamięć, co prowadzi do użycia po zwolnieniu (UAF) po otrzymaniu powiązanych pakietów aktualizacji. Złośliwy serwer może wywołać tę podatność po stronie klienta, powodując awarię (DoS) oraz potencjalne uszkodzenie sterty z ryzykiem wykonania kodu.
- CVE-2026-23883Krytyczne
W FreeRDP przed wersją 3.21.0 funkcja `xf_Pointer_New` zwalnia pamięć `cursorPixels` w przypadku błędu, a następnie `pointer_free` wywołuje `xf_Pointer_Free`, które ponownie zwalnia tę samą pamięć, co prowadzi do podwójnego zwolnienia (use-after-free) wykrywanego przez ASan. Złośliwy serwer może wywołać tę podatność po stronie klienta, powodując awarię (DoS) oraz potencjalne uszkodzenie sterty, co może umożliwić wykonanie kodu w zależności od zachowania alokatora i układu sterty.
- CVE-2026-23534Krytyczne
W FreeRDP przed wersją 3.21.0 wykryto podatność na przepełnienie bufora sterty po stronie klienta w dekodowaniu pasm ClearCodec. Specjalnie spreparowane współrzędne pasm umożliwiają zapis poza granicami bufora powierzchni docelowej.
- CVE-2026-23533Krytyczne
W FreeRDP przed wersją 3.21.0 wykryto podatność na przepełnienie bufora sterty po stronie klienta w ścieżce dekodowania RDPGFX ClearCodec. Złośliwie spreparowane dane resztkowe powodują zapis poza dozwolonym obszarem podczas generowania kolorów, co może prowadzić do awarii i potencjalnego wykonania kodu.
- CVE-2026-23532Krytyczne
W FreeRDP przed wersją 3.21.0 wykryto podatność przepełnienia bufora sterty po stronie klienta w ścieżce `gdi_SurfaceToSurface`. Problem wynika z niezgodności między ograniczeniem docelowego prostokąta a rzeczywistym rozmiarem kopii, co może prowadzić do awarii i potencjalnego wykonania kodu.
- CVE-2026-23531Krytyczne
W FreeRDP przed wersją 3.21.0, w komponencie ClearCodec, funkcja `clear_decompress` wywołuje `freerdp_image_copy_no_overlap` bez walidacji docelowego prostokąta, co umożliwia odczyt/zapis poza zakresem poprzez spreparowane aktualizacje powierzchni RDPGFX. Złośliwy serwer może wywołać przepełnienie bufora sterty po stronie klienta, prowadząc do awarii (DoS) oraz potencjalnego uszkodzenia sterty z ryzykiem wykonania kodu.
- CVE-2026-23530Krytyczne
W FreeRDP przed wersją 3.21.0 funkcja `freerdp_bitmap_decompress_planar` nie sprawdza poprawności wartości `nSrcWidth` i `nSrcHeight` względem `planar->maxWidth` i `maxHeight` przed dekodowaniem RLE. Złośliwy serwer może wykorzystać tę lukę do wywołania przepełnienia bufora sterty po stronie klienta, prowadząc do awarii (DoS) oraz potencjalnego uszkodzenia sterty z ryzykiem wykonania kodu.
- CVE-2026-22859Krytyczne
W bibliotece FreeRDP przed wersją 3.20.1 wykryto podatność polegającą na braku sprawdzania zakresu wartości MSUSB_INTERFACE_DESCRIPTOR dostarczanych przez serwer. Klient URBDRC używa tych wartości jako indeksów w funkcji libusb_udev_complete_msconfig_setup, co prowadzi do odczytu poza dozwolonym obszarem pamięci.
- CVE-2026-22858Krytyczne
W FreeRDP przed wersją 3.20.1 wykryto przepełnienie bufora globalnego w ścieżce dekodowania Base64. Problem wynika z implementacyjnie zdefiniowanej znakowości typu char: na platformach Arm/AArch64 typ char jest traktowany jako unsigned, przez co warunek c <= 0 może być zoptymalizowany do c != 0, co pozwala na użycie bajtów spoza ASCII (0x80-0xFF) jako indeksu do globalnej tablicy, prowadząc do odczytu poza zakresem.
- CVE-2026-22857Krytyczne
FreeRDP przed wersją 3.20.1 zawiera podatność use-after-free w funkcji irp_thread_func. Obiekt IRP jest zwalniany przez wywołanie irp->Complete(), a następnie ponownie używany na ścieżce błędu, co może prowadzić do naruszenia pamięci.
- CVE-2026-22855Krytyczne
W FreeRDP przed wersją 3.20.1 występuje podatność na odczyt poza dozwolonym obszarem sterty w ścieżce SetAttrib dla kart inteligentnych. Problem pojawia się, gdy długość atrybutu (cbAttrLen) nie zgadza się z rzeczywistą długością bufora NDR.
- CVE-2026-22854Krytyczne
FreeRDP przed wersją 3.20.1 zawiera podatność przepełnienia bufora na stercie podczas odczytu dysku. Długość odczytu kontrolowana przez serwer nie ma górnego ograniczenia, co pozwala na nadmierny odczyt i nadpisanie pamięci sterty.
- CVE-2026-22853Krytyczne
W bibliotece FreeRDP przed wersją 3.20.1 wykryto podatność polegającą na braku sprawdzania zakresu liczby elementów w czytniku tablic NDR protokołu RDPEAR. Atakujący może wykorzystać tę lukę do zapisu poza przydzielonym buforem sterty, co prowadzi do przepełnienia bufora sterty w funkcji ndr_read_uint8Array.
- CVE-2026-22852Krytyczne
FreeRDP przed wersją 3.20.1 zawiera podatność przepełnienia bufora na stercie podczas przetwarzania list formatów Audio Input (AUDIN). Funkcja audin_process_formats ponownie używa licznika formats_count i zapisuje poza nowo przydzieloną tablicą, powodując uszkodzenie pamięci i awarię.
- CVE-2025-68118Krytyczne
FreeRDP przed wersją 3.20.0 zawiera podatność w kodzie obsługi certyfikatów na platformach Windows. Funkcja `freerdp_certificate_data_hash_uses` używa specyficznej dla Microsoftu funkcji `_snprintf` do formatowania nazw plików pamięci podręcznej certyfikatów bez gwarancji zakończenia NUL w przypadku przycięcia. Jeśli atakujący kontroluje wartość hostname (np. przez przekierowanie serwera lub spreparowany plik .rdp), bufor nazwy pliku może nie być zakończony NUL, co prowadzi do odczytu poza przydzielonym obszarem pamięci (heap-based out-of-bounds read). W domyślnej konfiguracji połączenie jest zwykle przerywane przed znaczącym ujawnieniem danych, ale może wystąpić nieoczekiwany odczyt pamięci lub awaria klienta.
- CVE-2026-63652Wysokie
W FreeRDP przed wersją 3.28.0 funkcja rdpsnd_server_recv_formats zwalnia pamięć context->client_formats po otrzymaniu nieprawidłowego pakietu Client Audio Formats PDU, nie czyszcząc wskaźnika ani licznika. Uwierzytelniony klient RDP może wywołać błąd, pozostawiając wiszący wskaźnik, co prowadzi do podwójnego zwolnienia pamięci przy zamykaniu sesji. Może to spowodować awarię serwera i uszkodzenie sterty.
- CVE-2026-63633Wysokie
W FreeRDP przed wersją 3.28.0 funkcja freerdp_dsp_decode_opus wywołuje Stream_EnsureRemainingCapacity na buforze kontekstu, mimo że opus_decode zapisuje dane do bufora dostarczonego przez wywołującego. Złośliwy serwer RDP negocjujący WAVE_FORMAT_OPUS może spowodować zapis dużych ramek poza przydzielony bufor, co prowadzi do uszkodzenia sterty klienta, awarii i potencjalnego wykonania kodu.
- CVE-2026-63117Średnie
FreeRDP przed wersją 3.28.0 zawiera podatność, w której uwierzytelniony klient RDP może zareklamować DVI ADPCM z nBlockAlign równym 8 i nChannels równym 2, aby obliczenie `bs` w rdpsnd_server_select_format w channels/rdpsnd/server/rdpsnd_main.c wyniosło zero. Kolejna operacja out_frames modulo `bs` powoduje SIGFPE i kończy proces kanału rdpsnd po stronie serwera. Podatność naprawiono w wersji 3.28.0.
- CVE-2026-55648Średnie
FreeRDP przed wersją 3.27.0 zawiera podatność w freerdp_image_copy_from_icon_data w libfreerdp/codec/color.c, gdzie obliczenie nWidth pomnożone przez nHeight pomnożone przez FreeRDPGetBytesPerPixel(format) jest wykonywane w arytmetyce 32-bitowej. Złośliwy serwer RDP może wysłać aktualizację RAIL TS_ICON_INFO o wymiarach takich jak 32768 na 32768 i 32 bity na piksel, co powoduje zawinięcie obliczenia rozmiaru, omijając sprawdzenie granic cbBitsColor przed odczytem przez freerdp_image_copy_no_overlap danych ikony kontrolowanych przez atakującego. Dotyczy to klientów RemoteApp korzystających z podatnej ścieżki biblioteki, podczas gdy xfreerdp ma zabezpieczenie po stronie wywołującego. Problem naprawiono w wersji 3.27.0.
- CVE-2026-55564Średnie
FreeRDP przed wersją 3.27.0 zawiera podatność w funkcji glyph_cache_get w libfreerdp/cache/glyph.c, która sprawdza, czy indeks jest większy niż cache->number zamiast większy lub równy. Złośliwy serwer RDP może użyć powtórzenia GLYPH_FRAGMENT_USE w update_process_glyph_fragments, aby domyślna pamięć podręczna otrzymała indeks 254, gdy cache->number wynosi 254, co powoduje odczyt jednego wskaźnika poza tablicą entries i jego dereferencję jako glif. Może to spowodować awarię klienta i potencjalnie ujawnić sąsiednie dane sterty. Problem naprawiono w wersji 3.27.0.
- CVE-2026-55194Wysokie
W FreeRDP przed wersją 3.27.0 funkcja rpc_client_recv_fragment zapewnia pojemność bufora na podstawie tylko deklarowanego przez serwer alloc_hint, a nie rzeczywistej długości StubLength. Złośliwy serwer TS Gateway może wysłać odpowiedź z małym alloc_hint i dużym frag_length, powodując zapis danych poza bufor pdu->s. Może to doprowadzić do awarii klienta i potencjalnego wykonania kodu.
- CVE-2026-55193Wysokie
W FreeRDP przed wersją 3.27.0 klienci używający TS Gateway akceptują wartość max_xmit_frag kontrolowaną przez serwer bez ograniczenia do rozmiaru bufora ReceiveFragment. Złośliwa brama może zadeklarować 65535 i wysłać fragment o tej długości, powodując zapis do mniejszego bufora. Może to doprowadzić do awarii klienta i potencjalnego wykonania kodu.
- CVE-2026-55192Wysokie
W FreeRDP przed wersją 3.27.0 backendy dekodera H.264 mogą zwracać płaszczyzny YUV o rozmiarach z bitstreamu bez porównania z wymiarami powierzchni RDPGFX. Złośliwy serwer RDP może dostarczyć bitstream AVC420 lub AVC444 o mniejszej klatce niż negocjowana powierzchnia, powodując odczyt poza przydzielone płaszczyzny. Może to ujawnić pamięć klienta lub doprowadzić do awarii.
- CVE-2026-55191Wysokie
W FreeRDP przed wersją 3.27.0 klienci negocjujący RDPGFX AVC444 obliczają rozmiar alokacji YUV444 przy użyciu 32-bitowego mnożenia w avc444_ensure_buffer. Złośliwy serwer RDP może podać wymiary powierzchni, dla których iloczyn piDstStride i padDstHeight zawija się do małej wartości, powodując alokację zbyt małego bufora. Może to doprowadzić do awarii klienta i potencjalnego wykonania kodu.
- CVE-2026-73242Wysokie
FreeRDP, implementacja protokołu Remote Desktop Protocol, przed wersją 3.30.0 zawiera podatność w funkcji kerberos_DecryptMessage, która nie ogranicza kontrolowanego przez peera pola EC w tokenie GSS Wrap przed użyciem go w offsetach wskaźników IOV. Złośliwy peer RDP może wywołać odczyty poza zakresem i zapisy w miejscu podczas deszyfrowania Kerberos w CredSSP/NLA.
- CVE-2026-73241Wysokie
FreeRDP przed wersją 3.30.0 zawiera podatność w serwerowej części RDSTLS, która akceptuje PDU RDSTLS_TYPE_CAPABILITIES dostarczone przez atakującego, podczas gdy rdstls_server_authenticate oczekuje na RDSTLS_TYPE_AUTHREQ. Pozwala to zdalnemu nieuwierzytelnionemu klientowi ominąć sprawdzanie RedirectionGuid, nazwy użytkownika, domeny lub hasła.
- CVE-2026-68580Wysokie
FreeRDP przed wersją 3.29.0 zawiera przepełnienie liczb całkowitych w kanale audin w backendach ALSA, sndio, WinMM i OpenSL ES. Złośliwy serwer RDP może podać wartość FramesPerPacket powodującą zawinięcie rozmiaru alokacji.
- CVE-2026-67306Średnie
FreeRDP w wersjach do 3.28.0 zawiera podatność na odczyt poza zakresem w dekoderach bitmap RDP6 planar RLE: planar_decompress_plane_rle i planar_decompress_plane_rle_only w libfreerdp/codec/planar.c. Tylko 1-bajtowy bajt kontrolny jest sprawdzany pod kątem granic; kolejne 0–15 bajtów surowych deklarowanych przez atakującego są odczytywane bez walidacji, czy bufor źródłowy je zawiera. Złośliwy lub skompromitowany serwer RDP może wysłać obciętą bitmapę zakodowaną planar lub aktualizację powierzchni, powodując odczyt poza końcem bufora źródłowego przez klienta.
- CVE-2026-67304Wysokie
FreeRDP przed wersją 3.29.0 zawiera podatność na dereferencję pustego wskaźnika podczas czyszczenia żądania sterowania urządzeniem smartcard, gdy dekodowanie stanu czytnika nie powiedzie się. Atakujący mogą wysyłać zniekształcone żądania IRP smartcard z niezerowym cReaders i obciętymi danymi stanu czytnika, aby spowodować awarię procesu poprzez dostęp do pustego wskaźnika w funkcjach free_reader_states.
- CVE-2026-67303Średnie
FreeRDP przed wersją 3.29.0 zawiera osiągalne asercje (WINPR_ASSERT(OutputBufferLength == BytesReturned)) w serial_process_irp_device_control() w channels/serial/client/serial_main.c. Gdy przekierowanie urządzenia szeregowego jest włączone, a żądanie IRP_MJ_DEVICE_CONTROL kontrolowane przez serwer określa nieobsługiwany IOCTL z niezerowym OutputBufferLength, CommDeviceIoControl() może zakończyć się niepowodzeniem z BytesReturned = 0, powodując niezgodność wyzwalającą asercję i przerwanie procesu klienta (odmowa usługi).
- CVE-2026-67302Średnie
FreeRDP przed wersją 3.29.0 (dotknięte wersje <= 3.28.0) zawiera podatność na dzielenie przez zero w kliencie przekierowania kamery rdpecam. Funkcja ecam_dev_process_start_streams_request() parsuje kontrolowany przez serwer CAM_MEDIA_TYPE_DESCRIPTION z PDU StartStreamsRequest, ale waliduje tylko Format i Flags, a nie FrameRateDenominator. Gdy złośliwy lub skompromitowany serwer RDP wyśle StartStreamsRequest z FrameRateDenominator ustawionym na zero, ecam_encoder_context_init() oblicza FrameRateNumerator / FrameRateDenominator, powodując dzielenie całkowite przez zero (SIGFPE) i zakończenie procesu klienta FreeRDP.
- CVE-2026-67301Wysokie
FreeRDP przed wersją 3.29.0 zawiera podatności na odczyt poza zakresem w asynchronicznym proxy komunikatów aktualizacji dla podstawowych poleceń rysowania PolygonSC i PolygonCB. Gdy AsyncUpdate jest włączone (np. xfreerdp /async-update), funkcje update_message_PolygonSC() i update_message_PolygonCB() alokują nową tablicę punktów, ale kopiują dane punktów z adresu struktury order zamiast z polygonSC->points / polygonCB->points, co skutkuje odczytem poza zakresem po stronie klienta. Złośliwy lub skompromitowany serwer RDP wysyłający spreparowane polecenia aktualizacji PolygonSC/PolygonCB może wywołać ujawnienie pamięci lub awarię klienta.
- CVE-2026-67300Wysokie
FreeRDP przed wersją 3.29.0 zawiera podatności na use-after-free w stercie po stronie klienta w asynchronicznym proxy komunikatów aktualizacji dla RAIL WINDOW_STATE_ORDER i NOTIFY_ICON_STATE_ORDER, gdy AsyncUpdate jest włączone. Gdy złośliwy lub skompromitowany serwer RDP wysyła spreparowane polecenia aktualizacji, proxy komunikatów płytko kopiuje struktury zawierające zagnieżdżone wskaźniki należące do parsera (np. titleInfo.string, windowRects, visibilityRects, bufory ikon). Parser zwalnia te zagnieżdżone bufory po zakończeniu wywołania zwrotnego, więc zakolejkowana asynchroniczna wiadomość później wysyła nieaktualne wskaźniki, potencjalnie powodując uszkodzenie pamięci lub awarię klienta.
- CVE-2026-67299Wysokie
FreeRDP przed wersją 3.29.0 zawiera podatność na use-after-free w stercie po stronie klienta w asynchronicznym proxy komunikatów aktualizacji dla WINDOW_ICON_ORDER, gdy AsyncUpdate jest włączone (np. xfreerdp /async-update). W funkcji update_message_WindowIcon() płytkie CopyMemory() nadpisuje świeżo zaalokowane lParam->iconInfo wskaźnikiem iconInfo należącym do parsera (windowIcon->iconInfo). Po zakończeniu wywołania zwrotnego parsera, update_recv_window_info_order() zwalnia window_icon.iconInfo, ale zakolejkowana asynchroniczna wiadomość nadal przechowuje i później wysyła ten nieaktualny wskaźnik. Złośliwy lub skompromitowany serwer RDP wysyłający spreparowane RAIL Window Alternate Secondary Order z WINDOW_ORDER_ICON może wywołać use-after-free, prowadząc do uszkodzenia pamięci i awarii klienta.
- CVE-2026-67298Wysokie
FreeRDP w wersjach 3.28.0 i wcześniejszych zawiera przepełnienie bufora sterty w obsłudze kanału RAIL po stronie serwera (rail_server_handle_messages() w channels/rail/server/rail_main.c). Podczas przetwarzania nagłówka PDU RAIL, kod odejmuje RAIL_PDU_HEADER_LENGTH od kontrolowanego przez rówieśnika pola orderLength bez uprzedniego sprawdzenia, czy orderLength jest co najmniej równe długości nagłówka. Dla wartości orderLength 0..3 powoduje to niedomiar liczby całkowitej bez znaku do bardzo dużego rozmiaru, co omija sprawdzenie pojemności Stream_EnsureRemainingCapacity() (z powodu zawijania arytmetyki wskaźników), a następnie jest przekazywane do WTSVirtualChannelRead(), co skutkuje zapisem poza zakresem sterty. Złośliwy lub skompromitowany klient RDP może to wykorzystać do uszkodzenia sterty i awarii serwera. Naprawione w FreeRDP 3.29.0.
- CVE-2026-67297Wysokie
FreeRDP przed wersją 3.29.0 nie egzekwuje limitu RESPONSE_SIZE_LIMIT podczas przetwarzania odpowiedzi HTTP z kodowaniem Transfer-Encoding: chunked w http_response_recv_body(). Atakujący kontrolujący złośliwy punkt końcowy RD Gateway mogą wysyłać zbyt duże fragmentaryczne treści odpowiedzi, aby wyczerpać zasoby pamięci klienta bez wyzwalania skonfigurowanego limitu rozmiaru.

