Podatności FreeRDP
224 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-121953Krytyczne
FreeRDP w wersjach przed 3.32.2 zawiera podatność use-after-free w dynamicznym kanale wirtualnym rdpgfx po stronie klienta. Zduplikowany kanał o nowym ChannelId nadpisuje pojedynczy slot callbacku listenera, który funkcja rdpgfx_on_close zwalnia bez wyczyszczenia. Złośliwy serwer RDP może otworzyć i zamknąć taki kanał, a następnie wysłać PDU na oryginalnym kanale, powodując awarię klienta lub potencjalne wykonanie kodu.
- CVE-2026-121952Krytyczne
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ę.
- 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-44420Wysokie
W FreeRDP, przed wersją 3.26.0, złośliwy klient RDP może wywołać przepełnienie bufora sterty (heap-buffer-overflow) w kanale schowka (cliprdr) po stronie serwera. Dzieje się to poprzez wysłanie PDU CB_CLIP_CAPS z zbyt małym polem capabilitySetLength. Może to doprowadzić do awarii serwera (DoS) i potencjalnie do wykonania kodu.
- 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 w wersji przed 3.20.0 zawiera podatność w obsłudze certyfikatów na platformie Windows. Funkcja freerdp_certificate_data_hash_uses używa _snprintf do formatowania nazw plików pamięci podręcznej certyfikatów bez gwarancji zakończenia NUL, co przy kontroli nazwy hosta przez atakującego może prowadzić do odczytu poza zakresem pamięci sterty.
- 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.
- CVE-2026-121954Średnie
FreeRDP w wersjach przed 3.32.2 ma podatność na zapis poza granicami sterty w kodeku planar, ponieważ freerdp_bitmap_planar_context_reset zatwierdza nowe wymiary przed pomyślną realokacją bufora, a nieudany ResetGraphics jest tylko logowany. Złośliwy serwer RDP może wysłać zbyt duży PDU ResetGraphics, a następnie polecenie GFX PLANAR, aby uszkodzić pamięć sterty klienta i spowodować awarię klienta.
- CVE-2026-121951Wysokie
FreeRDP w wersji 3.0.0 przed 3.32.2 po stronie serwera podczas parsowania danych wejściowych RDP pomija sześciobajtowe ciało zdarzenia wejściowego slow-path o nieznanym typie wiadomości bez sprawdzenia, czy mieści się w zadeklarowanej długości pakietu, co powoduje błąd asercji strumienia WinPR. Zdalny klient RDP z aktywną sesją może wysłać obcięte nieznane zdarzenie wejściowe, aby przerwać procesy serwera z włączonymi asercjami, powodując odmowę usługi.
- CVE-2026-121950Średnie
FreeRDP w wersjach przed 3.32.2 nie sprawdza iloczynu wymiarów powierzchni w gdi_CreateSurface podczas obsługi PDU RDPGFX CREATE_SURFACE, co powoduje przepełnienie liczb całkowitych i przepełnienie bufora sterty w kompilacjach 32-bitowych oraz alokację około 4 GiB w kompilacjach 64-bitowych. Złośliwy serwer RDP może wysłać PDU CREATE_SURFACE o szerokości i wysokości 32766 do łączącego się klienta, aby uszkodzić pamięć sterty lub spowodować odmowę usługi.
- CVE-2026-121412Średnie
FreeRDP od wersji 3.0.0 przed 3.32.2 zawiera lukę niekontrolowanego zużycia zasobów w proxy, która pozwala podłączonym klientom zatrzymywać pamięć sterty poprzez przechwycone reassembly wiadomości DVC. Atakujący mogą zadeklarować dużą długość DATA_FIRST i kontynuować wysyłanie fragmentów bez ukończenia wiadomości, zwiększając pamięć proxy proporcjonalnie do ruchu i pogarszając usługę.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

