Podatności FreeRDP
112 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-91949Krytyczne
Serwer FreeRDP w wersjach przed 3.31.0 zawiera podatność obejścia negocjacji protokołu, która pozwala nieuwierzytelnionym atakującym na ustanowienie połączeń RDSTLS pomimo polityki serwera wyłączającej je. Atakujący mogą wysyłać niekompatybilne żądania protokołu, otrzymywać błędy negocjacji, a następnie zakończyć uzgadnianie TLS i wejść w RDSTLS, aby obejść ograniczenia transportu przed uwierzytelnianiem.
- CVE-2026-63633Krytyczne
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-55194Krytyczne
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-55191Krytyczne
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-73242Krytyczne
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-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-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-91964Wysokie
FreeRDP przed wersją 3.31.0 zawiera podatność na przepełnienie bufora na stercie w nego_send_negotiation_request podczas przetwarzania wiadomości Server Redirection PDU z kontrolowanym przez atakującego polem LoadBalanceInfo. Złośliwy serwer RDP może wywołać przepełnienie, wysyłając pole o dowolnej długości, które jest zapisywane do stałego bufora 512-bajtowego bez walidacji, co powoduje awarie klienta lub potencjalne wykonanie kodu w połączeniu z ujawnieniem pamięci.
- CVE-2026-91963Średnie
FreeRDP w wersjach przed 3.31.0 zawiera podatność ujawnienia niezainicjalizowanej pamięci sterty w kanale przekierowania USB urbdrc. Złośliwy serwer RDP może wywołać nieudane transfery USB, aby odczytać niezainicjalizowaną pamięć sterty z klienta, co umożliwia obejście ASLR i zdalne wykonanie kodu w połączeniu z podatnościami typu memory corruption.
- CVE-2026-91962Średnie
FreeRDP przed wersją 3.31.0 zawiera przepełnienie liczb całkowitych w backendach audin Apple podczas przetwarzania wartości FramesPerPacket z komunikatów MSG_SNDIN_OPEN. Atakujący mogą dostarczyć spreparowane wartości FramesPerPacket, które powodują zawinięcie obliczeń rozmiaru AudioQueueAllocateBuffer, skutkując zbyt małą alokacją bufora i potencjalnym dostępem poza granice.
- CVE-2026-91961Średnie
FreeRDP przed wersją 3.31.0 zawiera podatność typu denial-of-service w ścieżce żądań kontrolnych URBDRC, która nie waliduje OutputBufferSize przed przekazaniem do backendu libusb. Złośliwy serwer RDP może wysłać żądanie kontrolne z OutputBufferSize ustawionym na 65536, wywołując osiągalną asercję, która kończy proces klienta.
- CVE-2026-91960Średnie
FreeRDP w wersjach przed 3.31.0 zawiera przepełnienie liczb całkowitych w funkcji Stream_EnsureRemainingCapacity biblioteki WinPR, umożliwiające zdalnym atakującym wywołanie denial-of-service. Złośliwy peer RD Gateway może wysłać ramkę WebSocket Ping ze spreparowaną 64-bitową rozszerzoną długością ładunku, wywołując zawinięcie liczb całkowitych i podwójne zwolnienie pamięci, które powoduje awarię klienta FreeRDP podczas połączenia.
- CVE-2026-91959Średnie
FreeRDP przed wersją 3.31.0 zawiera podatność typu buffer over-read w funkcji rts_read_result w parserze transportu bramy RPC. Atakujący mogą wysłać złośliwy PDU BIND_ACK z obciętym wpisem wyniku, aby wywołać odczyt poza granice bufora powodujący przerwanie procesu.
- CVE-2026-91958Średnie
FreeRDP w wersjach przed 3.31.0 nie waliduje wartości tablicy MonitorIds podczas parsowania plików połączeń RDP, umożliwiając nieograniczone indeksowanie tablicy w xf_detect_monitors. Atakujący mogą spreparować złośliwy plik RDP z wartością selectedmonitors poza zakresem, aby wywołać odczyt i zapis poza granice sterty podczas otwierania w xfreerdp.
- CVE-2026-91957Niskie
FreeRDP przed wersją 3.31.0 zawiera podatność use-after-free w obsłudze urządzenia smartcard RDPDR, gdy utworzenie wątku roboczego nie powiedzie się po rejestracji urządzenia. Atakujący może wywołać błąd tworzenia wątku podczas konfiguracji kanału, powodując zwolnienie wskaźnika urządzenia, gdy devman nadal go używa, co prowadzi do awarii lub wykonania kodu.
- CVE-2026-91956Średnie
FreeRDP przed wersją 3.31.0 zawiera podatność typu out-of-bounds read w funkcji func_get_ep_desc kanału URBDRC, która indeksuje tablice interfejsów według pozycji zamiast pola protokołu InterfaceNumber. Złośliwy serwer RDP może wysłać spreparowany komunikat SELECT_CONFIGURATION z permutowanymi wartościami InterfaceNumber, aby odczytać pamięć poza przydzieloną stertą i spowodować awarię klienta.
- CVE-2026-91955Wysokie
FreeRDP przed wersją 3.31.0 nie weryfikuje wartości DesktopWidth i DesktopHeight dostarczanych przez klienta podczas negocjacji GCC, co pozwala zdalnym atakującym na doprowadzenie do awarii serwera. Atakujący mogą wysyłać spreparowane pakiety RDP z zerowymi lub zbyt dużymi wymiarami, aby wywołać dzielenie przez zero lub błędy asercji w obliczeniach możliwości aktualizacji wielofragmentowych, co kończy proces serwera.
- CVE-2026-91954Średnie
FreeRDP przed wersją 3.31.0 zawiera podatność dereferencji wskaźnika null w funkcji gdi_surface_bits podczas przetwarzania poleceń Surface Bits z identyfikatorem kodeka NSCodec. Złośliwy serwer RDP może wywołać awarię klienta FreeRDP, wysyłając spreparowane polecenie Surface Bits deklarujące użycie NSCodec, nawet gdy kodek jest wyłączony.
- CVE-2026-91953Średnie
FreeRDP w wersjach przed 3.31.0 zawiera przepełnienie bufora na stercie w funkcji nego_send_negotiation_request(), która nie waliduje długości pola LB_LOAD_BALANCE_INFO przed zapisem do stałego bufora 512 bajtów. Złośliwy serwer RDP lub atakujący typu man-in-the-middle może wysłać pakiet Server Redirection PDU z nadmiernie dużym polem LB_LOAD_BALANCE_INFO, aby przepełnić bufor danymi kontrolowanymi przez atakującego.
- CVE-2026-91952Średnie
FreeRDP w wersjach przed 3.31.0 zawiera podatność na odmowę usługi poprzez nieskończoną pętlę w funkcji pool_decode_rect podczas dekodowania metabloków AVC444 z większą liczbą prostokątów regionów niż wstępnie przydzielony rozmiar tablicy roboczej. Złośliwy serwer RDP może wysłać spreparowane aktualizacje graficzne AVC444, powodując nieskończoną pętlę w wątkowanej ścieżce dekodowania.
- CVE-2026-91951Średnie
FreeRDP w wersjach przed 3.31.0 zawiera podatność na zapis poza granicami bufora w funkcji urb_send_current_frame_number_result() kanału klienta urbdrc. Złośliwy serwer RDP może wysłać spreparowaną 28-bajtową wiadomość przekierowania USB, aby wywołać 4-bajtowy zapis poza przydzielonym buforem 16 bajtów.
- CVE-2026-91950Średnie
FreeRDP przed 3.31.0 zawiera podatność na odczyt poza granicami bufora w funkcji rdpdr_dump_packet z powodu przepełnienia 32-bitowej liczby całkowitej bez znaku w walidacji granic bufora. Złośliwy serwer RDP może wysłać spreparowany pakiet RDPDR z computerNameLen ustawionym na 0xFFFFFFF0, aby ominąć sprawdzanie granic i wywołać odczyty pamięci poza buforem pakietu.
- CVE-2026-91948Wysokie
FreeRDP przed wersją 3.31.0 zawiera podatność na zapis poza zakresem w obsłudze statycznych kanałów wirtualnych po stronie serwera, gdy włączona jest opcja CHANNEL_OPTION_SHOW_PROTOCOL. Uwierzytelnieni klienci mogą kolejkować zbyt duże wiadomości kanałowe, co powoduje niedomiar bufora i uszkodzenie pamięci sterty, w tym żywych wskaźników, potencjalnie umożliwiając wykonanie kodu.
- CVE-2026-91947Wysokie
Serwer FreeRDP przed wersją 3.31.0 zawiera podatność use-after-free w parserze DRDYNVC, która dereferencuje wskaźnik kanału po zwolnieniu blokady synchronizacji. Uwierzytelnieni klienci mogą ścigać komunikaty zamknięcia kanału AUDIN z przetwarzaniem danych DRDYNVC, aby wywołać heap-use-after-free podczas uzyskiwania dostępu do zwolnionych obiektów kanałów.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

