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.
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:XFreerdp
APPFreerdp3.0.0 – 3.28.0 (excl.)
Related vulnerabilities
FreeRDP: heap-based buffer overflow w crypto_rsa_common() przed uwierzytelnieniem
FreeRDP: heap buffer overflow w obsłudze NSCodec (gdi_surface_bits)
FreeRDP: out-of-bounds read w klientach przed wersją 3.5.1
FreeRDP: out-of-bounds read przy zerowych wymiarach obrazu (RDP)
FreeRDP: integer overflow i out-of-bounds write w obsłudze GFX