CVE-2026-66402
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 21 - wyżej niż 21% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko polega na możliwości ominięcia weryfikacji tożsamości serwera TLS, co może prowadzić do ataków typu man-in-the-middle i naruszenia poufności komunikacji.
Rekomendacja
Należy zaktualizować FreeRDP do wersji 3.29.0 lub nowszej.
Inne podatności w FreeRDP
Zobacz wszystkie- 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.
Oryginalny opis (angielski, źródło NVD)
FreeRDP before 3.29.0 (affected versions <= 3.28.0) contains multiple TLS certificate identity validation weaknesses in tls_verify_certificate(), tls_match_hostname(), and x509_utils_get_dns_names(). Because FreeRDP performs custom Common Name and DNS SAN string matching instead of using OpenSSL's length-aware identity validation APIs, it (1) truncates DNS SAN values at embedded NUL bytes (accepting e.g. 'victim.example\0.attacker.example' as 'victim.example'), (2) accepts a matching Common Name even when non-matching DNS SAN entries are present, and (3) accepts IP-literal targets via DNS/CN matching without comparing iPAddress SANs. Under a trusted or misissued certificate chain, an attacker positioned to present such a certificate can bypass server identity verification, weakening TLS server authentication.

