CVE-2026-26965
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 44 - wyżej niż 44% wszystkich znanych CVE
Streszczenie
W FreeRDP przed wersją 3.23.0 w funkcji `planar_decompress_plane_rle()` brakuje walidacji wymiarów docelowych bufora, co pozwala złośliwemu serwerowi RDP na zapis poza przydzieloną pamięcią sterty. Atakujący może nadpisać wskaźnik funkcji w strukturze `NSC_CONTEXT`, przejmując kontrolę nad przepływem sterowania klienta.
Ocena ryzyka
Organizacja narażona jest na zdalne wykonanie kodu przez atakującego serwer RDP, co może prowadzić do przejęcia stacji klienckiej i eskalacji uprawnień w sieci wewnętrznej.
Rekomendacja
Należy niezwłocznie zaktualizować FreeRDP do wersji 3.23.0 lub nowszej, która zawiera poprawkę eliminującą podatność.
Inne podatności w FreeRDP
Zobacz wszystkie- 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.
Oryginalny opis (angielski, źródło NVD)
FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, in the RLE planar decode path, `planar_decompress_plane_rle()` writes into `pDstData` at `((nYDst+y) * nDstStep) + (4*nXDst) + nChannel` without verifying that `(nYDst+nSrcHeight)` fits in the destination height or that `(nXDst+nSrcWidth)` fits in the destination stride. When `TempFormat != DstFormat`, `pDstData` becomes `planar->pTempData` (sized for the desktop), while `nYDst` is only validated against the **surface** by `is_within_surface()`. A malicious RDP server can exploit this to perform a heap out-of-bounds write with attacker-controlled offset and pixel data on any connecting FreeRDP client. The OOB write reaches up to 132,096 bytes past the temp buffer end, and on the brk heap (desktop ≤ 128×128), an adjacent `NSC_CONTEXT` struct's `decode` function pointer is overwritten with attacker-controlled pixel data — control-flow–relevant corruption (function pointer overwritten) demonstrated under deterministic heap layout (`nsc->decode = 0xFF414141FF414141`). Version 3.23.0 fixes the vulnerability.

