Skip to content
OpenAdvisories
High USN-8105-1 32 CVEs

freerdp3 vulnerabilities

Published Mar 18, 2026 · Updated Oct 27, 2026

Summary

It was discovered that FreeRDP incorrectly handled certain RDP packets. A
remote attacker could use this issue to cause FreeRDP to crash, resulting
in a denial of service, or possibly execute arbitrary code.

Fixed packages 2

ReleasePackageFixed in
Ubuntu · 24.04 LTS 24.04:LTS freerdp3 3.5.1+dfsg1-0ubuntu1.4
Ubuntu · 25.10 freerdp3 3.16.0+dfsg-2ubuntu0.3

Vulnerabilities 32

  • High 8.8

    FreeRDP has Out-of-bounds Write

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, a malicious RDP server can trigger a heap buffer overflow in FreeRDP clients using the GDI surface pipeline (e.g., `xfreerdp`) by sending an RDPGFX ClearCodec surface co…

  • High 8.8

    FreeRDP has Out-of-bounds Write

    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+n…

  • High 7.7

    FreeRDP has heap-buffer-overflow in planar_decompress_plane_rle

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0,`freerdp_bitmap_decompress_planar` does not validate `nSrcWidth`/`nSrcHeight` against `planar->maxWidth`/`maxHeight` before RLE decode. A malicious server can trigger a c…

  • High 7.7

    FreeRDP has heap-buffer-overflow in clear_decompress

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, in ClearCodec, when `glyphData` is present, `clear_decompress` calls `freerdp_image_copy_no_overlap` without validating the destination rectangle, allowing an out-of-bou…

  • High 7.7

    FreeRDP has heap-buffer-overflow in gdi_SurfaceToSurface

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, a client-side heap buffer overflow occurs in the FreeRDP client’s `gdi_SurfaceToSurface` path due to a mismatch between destination rectangle clamping and the actual cop…

  • High 7.7

    FreeRDP has heap-buffer-overflow in clear_decompress_residual_data

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, a client-side heap buffer overflow occurs in the RDPGFX ClearCodec decode path when maliciously crafted residual data causes out-of-bounds writes during color output. A …

  • High 7.7

    FreeRDP has heap-buffer-overflow in clear_decompress_bands_data

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, a client-side heap buffer overflow occurs in the ClearCodec bands decode path when crafted band coordinates allow writes past the end of the destination surface buffer. …

  • High 7.7

    Heap-use-after-free in update_pointer_new

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, `xf_Pointer_New` frees `cursorPixels` on failure, then `pointer_free` calls `xf_Pointer_Free` and frees it again, triggering ASan UAF. A malicious server can trigger a c…

  • High 7.7

    Heap-use-after-free in gdi_set_bounds

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, offscreen bitmap deletion leaves `gdi->drawing` pointing to freed memory, causing UAF when related update packets arrive. A malicious server can trigger a client‑side us…

  • Medium 6.9

    FreeRDP RDPGFX ResetGraphics race leads to use-after-free in SDL client (sdl->primary)

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, a race condition between the RDPGFX dynamic virtual channel thread and the SDL render thread leads to a heap use-after-free. Specifically, an escaped pointer to sdl->primary (SD…

  • Medium 6.8

    FreeRDP has a heap-buffer-overflow in audin_process_formats

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, a malicious RDP server can trigger a heap-buffer-overflow write in the FreeRDP client when processing Audio Input (AUDIN) format lists. audin_process_formats reuses callback->fo…

  • Medium 6.8

    FreeRDP has a heap-buffer-overflow in ndr_read_uint8Array

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, RDPEAR’s NDR array reader does not perform bounds checking on the on‑wire element count and can write past the heap buffer allocated from hints, causing a heap buffer overflow i…

  • Medium 6.8

    FreeRDP has a heap-buffer-overflow in drive_process_irp_read

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, a heap-buffer-overflow occurs in drive read when a server-controlled read length is used to read file data into an IRP output stream buffer without a hard upper bound, allowing …

  • Medium 6.8

    FreeRDP has a heap-use-after-free in create_irp_thread

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, a race in the serial channel IRP thread tracking allows a heap use‑after‑free when one thread removes an entry from serial->IrpThreads while another reads it. This vulnerability…

  • Medium 6.8

    FreeRDP has a heap-use-after-free in irp_thread_func

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, a heap use-after-free occurs in irp_thread_func because the IRP is freed by irp->Complete() and then accessed again on the error path. This vulnerability is fixed in 3.20.1.

  • Medium 5.6

    FreeRDP has a heap-buffer-overflow in smartcard_unpack_set_attrib_call

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, a heap out-of-bounds read occurs in the smartcard SetAttrib path when cbAttrLen does not match the actual NDR buffer length. This vulnerability is fixed in 3.20.1.

  • Medium 5.6

    FreeRDP has a global-buffer-overflow in crypto_base64_decode

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, global-buffer-overflow was observed in FreeRDP's Base64 decoding path. The root cause appears to be implementation-defined char signedness: on Arm/AArch64 builds, plain char is …

  • Medium 5.6

    FreeRDP has a heap-buffer-overflow in urb_select_configuration

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.20.1, the URBDRC client does not perform bounds checking on server‑supplied MSUSB_INTERFACE_DESCRIPTOR values and uses them as indices in libusb_udev_complete_msconfig_setup, causing …

  • Medium 5.5

    FreeRDP has heap-buffer-overflow in Glyph_Alloc

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, FastGlyph parsing trusts `cbData`/remaining length and never validates against the minimum size implied by `cx/cy`. A malicious server can trigger a client‑side global b…

  • Medium 5.5

    FreeRDP has global-buffer-overflow in xf_rail_server_execute_result

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_rail_server_execute_result` indexes the global `error_code_names[]` array (7 elements, indices 0–6) with an unchecked `execResult->execResult` value received from th…

  • Medium 5.5

    FreeRDP has heap-use-after-free in xf_SetWindowMinMaxInfo

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_SetWindowMinMaxInfo` dereferences a freed `xfAppWindow` pointer because `xf_rail_get_window` in `xf_rail_server_min_max_info` returns an unprotected pointer from the…

  • Medium 5.5

    FreeRDP has heap-use-after-free in xf_AppUpdateWindowFromSurface (freed appWindow)

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_AppUpdateWindowFromSurface` reads from a freed `xfAppWindow` because the RDPGFX DVC thread obtains a bare pointer via `xf_rail_get_window` without any lifetime prote…

  • Medium 5.5

    FreeRDP has heap-use-after-free in xf_rail_server_local_move_size

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_rail_server_local_move_size` dereferences a freed `xfAppWindow` pointer because `xf_rail_get_window` returns an unprotected pointer from the `railWindows` hash table…

  • Medium 5.5

    FreeRDP has heap-use-after-free in xf_AppUpdateWindowFromSurface (stale XImage)

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_AppUpdateWindowFromSurface` reuses a cached `XImage` whose `data` pointer references a freed RDPGFX surface buffer, because `gdi_DeleteSurface` frees `surface->data`…

  • Medium 5.5

    FreeRDP has heap-use-after-free in xf_cliprdr_provide_data_

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_cliprdr_provide_data_` passes freed `pDstData` to `XChangeProperty` because the cliprdr channel thread calls `xf_cliprdr_server_format_data_response` which converts …

  • Medium 5.5

    FreeRDP has heap-use-after-free in xf_clipboard_format_equal

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `xf_clipboard_format_equal` reads freed `lastSentFormats` memory because `xf_clipboard_formats_free` (called from the cliprdr channel thread during auto-reconnect) frees…

  • Medium 5.5

    Buffer Overread in FreeRDP Icon Processing

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, a buffer overread in `freerdp_image_copy_from_icon_data()` (libfreerdp/codec/color.c) can be triggered by crafted RDP Window Icon (TS_ICON_INFO) data. The bug is reachab…

  • Medium 5.5

    FreeRDP has heap-use-after-free in rail_window_free

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, `rail_window_free` dereferences a freed `xfAppWindow` pointer during `HashTable_Free` cleanup because `xf_rail_window_common` calls `free(appWindow)` on title allocation…

  • Medium 5.5

    FreeRDP heap-use-after-free in update_pointer_new(SDL): Fix Applied in the Wrong File

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, the fix for the heap-use-after-free described in CVE-2026-24680 is incomplete. While the vulnerable execution flow referenced in the advisory exists in the SDL2 implemen…

  • Medium 5.3

    FreeRDP has possible Integer overflow in Stream_EnsureCapacity

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, the function `Stream_EnsureCapacity` can create an endless blocking loop. This may affect all client and server implementations using `FreeRDP`. For practical exploitati…

  • Medium 5.0

    FreeRDP: Smartcard NDR Alignment Padding Triggers Reachable WINPR_ASSERT Abort (Client DoS)

    FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.23.0, a missing bounds check in `smartcard_unpack_read_size_align()` (`libfreerdp/utils/smartcard_pack.c:1703`) allows a malicious RDP server to crash the FreeRDP client via a…

  • Medium 4.3

    FreeRDP: vuln_1_15_1 RDPGFX WIRE_TO_SURFACE_2 Out-of-Bounds Read

    FreeRDP is a free implementation of the Remote Desktop Protocol. Versions on the 2.x branch prior to to 2.11.8 and on the 3.x branch prior to 3.23.0 have an out-of-bounds read vulnerability in the FreeRDP client's RDPGFX channel that allows a malicious RDP se…

References

  • report
    https://ubuntu.com/security/CVE-2026-22851
  • report
    https://ubuntu.com/security/CVE-2026-22852
  • report
    https://ubuntu.com/security/CVE-2026-22853
  • report
    https://ubuntu.com/security/CVE-2026-22854
  • report
    https://ubuntu.com/security/CVE-2026-22855
  • report
    https://ubuntu.com/security/CVE-2026-22856
  • report
    https://ubuntu.com/security/CVE-2026-22857
  • report
    https://ubuntu.com/security/CVE-2026-22858
  • report
    https://ubuntu.com/security/CVE-2026-22859
  • report
    https://ubuntu.com/security/CVE-2026-23530
  • report
    https://ubuntu.com/security/CVE-2026-23531
  • report
    https://ubuntu.com/security/CVE-2026-23532
  • report
    https://ubuntu.com/security/CVE-2026-23533
  • report
    https://ubuntu.com/security/CVE-2026-23534
  • report
    https://ubuntu.com/security/CVE-2026-23732
  • report
    https://ubuntu.com/security/CVE-2026-23883
  • report
    https://ubuntu.com/security/CVE-2026-23884
  • report
    https://ubuntu.com/security/CVE-2026-25941
  • report
    https://ubuntu.com/security/CVE-2026-25942
  • report
    https://ubuntu.com/security/CVE-2026-25952
  • report
    https://ubuntu.com/security/CVE-2026-25953
  • report
    https://ubuntu.com/security/CVE-2026-25954
  • report
    https://ubuntu.com/security/CVE-2026-25955
  • report
    https://ubuntu.com/security/CVE-2026-25959
  • report
    https://ubuntu.com/security/CVE-2026-25997
  • report
    https://ubuntu.com/security/CVE-2026-26271
  • report
    https://ubuntu.com/security/CVE-2026-26955
  • report
    https://ubuntu.com/security/CVE-2026-26965
  • report
    https://ubuntu.com/security/CVE-2026-26986
  • report
    https://ubuntu.com/security/CVE-2026-27015
  • report
    https://ubuntu.com/security/CVE-2026-27950
  • report
    https://ubuntu.com/security/CVE-2026-27951