FreeRDP — это бесплатная реализация протокола удаленного рабочего стола. До версии 3.23.0 `xf_cliprdr_provide_data_` передает освобожденные `pDstData` в `XChangeProperty`, поскольку поток канала cliprdr вызывает `xf_cliprdr_server_format_data_response`, который преобразует и использует данные буфера обмена без какой-либо блокировки, в то время как поток событий X11 одновременно вызывает `xf_cliprdr_clear_cached_data` → HashTable_Clear освобождает те же данные через xf_cached_data_free, запуская использование кучи после освобождения. Версия 3.23.0 устраняет проблему.
Показать оригинальное описание (EN)
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 and uses the clipboard data without holding any lock, while the X11 event thread concurrently calls `xf_cliprdr_clear_cached_data` → `HashTable_Clear` which frees the same data via `xf_cached_data_free`, triggering a heap use after free. Version 3.23.0 fixes the issue.
Характеристики атаки
Последствия
Строка CVSS v4.0