CRITICAL🇬🇧 English

CVE-2026-64621

Double-free w FreeRDP przy parsowaniu pola selectedmonitors pliku .rdp

CVSS 9.3v4.0pub. 2026-07-20upd. 2026-07-28

FreeRDP w wersjach 3.x do 3.27.1 zawiera podatność double-free podczas parsowania pola selectedmonitors w pliku .rdp. Atakujący może doprowadzić do dwukrotnego zwolnienia tego samego obszaru pamięci, co w domyślnej konfiguracji klientów FreeRDP stanowi poważne zagrożenie.

Pokaż oryginał (EN)

FreeRDP before 3.28.0 (affected 3.x through 3.27.1) contains a double-free vulnerability in freerdp_client_rdp_file_apply_to_settings() (client/common/file.c) when parsing the selectedmonitors field of a .rdp connection file. The MonitorIds array is allocated through the settings object, and a raw non-owning pointer to it is freed on the strtoul error path without clearing settings->MonitorIds, leaving it dangling; at teardown freerdp_settings_free() frees the same buffer again. An attacker who convinces a victim to open a crafted .rdp file with oversized monitor tokens can trigger a size-controlled double-free in any FreeRDP CLI client (xfreerdp/sdl-freerdp/wlfreerdp) in the default configuration.

🤖 Analiza AI
Jak działa

W funkcji freerdp_client_rdp_file_apply_to_settings() tablica MonitorIds jest alokowana przez obiekt settings. Przy błędzie wywołania strtoul (np. gdy token monitora ma nadmierny rozmiar) wskaźnik do tej tablicy jest zwalniany bezpośrednio przez surowowy wskaźnik nieposiadający własności zasobu, jednak pole settings->MonitorIds nie jest przy tym zerowane. W efekcie wskaźnik pozostaje wiszący (dangling pointer), a podczas późniejszego niszczenia obiektu funkcja freerdp_settings_free() ponownie zwalnia ten sam bufor. Aby wywołać błąd, atakujący musi nakłonić ofiarę do otwarcia spreparowanego pliku .rdp zawierającego nadmiernie duże tokeny monitorów.

Skutki

Atakujący może wywołać kontrolowane rozmiarem double-free, co może prowadzić do uszkodzenia sterty, wykonania dowolnego kodu (RCE) lub destabilizacji aplikacji. Zagrożeni są użytkownicy klientów xfreerdp, sdl-freerdp oraz wlfreerdp w domyślnej konfiguracji.

Mitygacja

Należy zaktualizować FreeRDP do wersji 3.28.0 lub nowszej. Patch dostępny w repozytorium GitHub projektu (commit 1f7a716d39b5605bb8a83b0c3c97a6ce386609ef). Do czasu aktualizacji należy unikać otwierania plików .rdp pochodzących z niezaufanych źródeł.

Kogo dotyczy

FreeRDP w wersjach 3.x od 3.0.0 do 3.27.1 włącznie (wersje 2.x nie są wymienione jako podatne)

Uwagi

Podatność jest sklasyfikowana jako CWE-415 (Double Free). Wektor ataku wymaga interakcji użytkownika — otworzenia spreparowanego pliku .rdp. Szczegóły opublikowane zostały również w ramach GitHub Security Advisory GHSA-f27x-frr8-j9hc.

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Freerdp

    APP
    Freerdp
    3.0.0 – 3.28.0 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2026-64620CRITICAL9.3PL ✓ten sam produkt

FreeRDP: heap-based buffer overflow w crypto_rsa_common() przed uwierzytelnieniem

CVE-2026-31806CRITICAL9.3PL ✓ten sam produkt

FreeRDP: heap buffer overflow w obsłudze NSCodec (gdi_surface_bits)

CVE-2024-32658CRITICAL9.8PL ✓ten sam produkt

FreeRDP: out-of-bounds read w klientach przed wersją 3.5.1

CVE-2024-32659CRITICAL9.8PL ✓ten sam produkt

FreeRDP: out-of-bounds read przy zerowych wymiarach obrazu (RDP)

CVE-2024-32039CRITICAL9.8PL ✓ten sam produkt

FreeRDP: integer overflow i out-of-bounds write w obsłudze GFX