Критическая уязвимость в Windows-клиенте FreeRDP (wfreerdp) позволяет вредоносному RDP-серверу переполнить кучу и потенциально выполнить произвольный код на подключающемся клиенте. Проблема затрагивает виртуальный канал перенаправления буфера обмена (CLIPRDR) и исправлена в версии 3.29.0.
Детали уязвимости
Уязвимость, отслеживаемая как GHSA-cj9v-h4hq-29jr, обнаружилась в функции обработки сообщений CLIPRDR_FILECONTENTS_RESPONSE. Когда RDP-сервер отвечает на запрос клиента о содержимом файла, он может указать размер данных, превышающий запрошенный клиентом. Полученное значение длины затем используется в операции CopyMemory без проверки соответствия размеру целевого буфера, что приводит к переполнению буфера в куче.
Технический механизм выглядит следующим образом: клиент запрашивает определённый объём данных из файла на сервере (например, 16 КБ). Вредоносный сервер передаёт ответ с произвольно большим полезным содержимым (например, 64 КБ) и задаёт соответствующее значение cbRequested, полученное из длины сообщения без какой-либо проверки. Функция wf_cliprdr_server_file_contents_response сохраняет это значение непосредственно в clipboard->req_fsize, а затем CliprdrStream_Read копирует данные в буфер, рассчитанный на меньший размер. В результате CopyMemory записывает около 48 КБ за границами выделенной области кучи, повреждая соседние объекты и метаданные управления памятью.
Хотя в базовом сценарии это приводит к аварийному завершению процесса, при определённом расположении объектов в куче возможно обеспечить перехват потока управления и удалённое выполнение кода. Эксплойт требует, чтобы жертва подключилась к подконтрольному злоумышленнику RDP-серверу с включённым перенаправлением буфера обмена (это настройка по умолчанию). Уязвимая функция срабатывает, когда пользователь выполняет операцию вставки, например нажимает Ctrl+V в проводнике Windows во время сеанса RDP.
Разработчики FreeRDP особо подчеркивают, что клиент wfreerdp больше не поддерживается и не должен использоваться. Это означает, что даже после выпуска патча для версии 3.28.0 организациям следует в обязательном порядке мигрировать на поддерживаемые версии FreeRDP или альтернативные RDP-клиенты. В настоящее время актуальной стабильной версией является 3.29.0, в которой уязвимость закрыта.
По данным бюллетеня безопасности, уязвимость обнаружила лаборатория Tencent Yunding Security Lab с использованием автоматизированных средств. CVSS v4 присвоил ей максимальный балл 10.0 (критический уровень угрозы): вектор атаки сетевой, сложность низкая, привилегии не требуются, необходимо лишь пассивное взаимодействие пользователя (подключение к серверу и вставка данных). Конфиденциальность, целостность и доступность как самой уязвимой системы, так и последующих систем оцениваются как высокие.
Злоумышленник может использовать фишинговые письма с предложением подключиться к якобы технической поддержке, подставные запросы на удалённую помощь, а также скомпрометированные RDP-инфраструктуры. При этом достаточно, чтобы жертва просто вставила скопированные данные в проводнике - никакого дополнительного подтверждения не требуется.
Пользователям FreeRDP в Windows следует немедленно обновить развёртывания до версии 3.29.0 или выше. Если обновление невозможно, необходимо временно отключить перенаправление буфера обмена для подключений к ненадёжным хостам (параметр /clipboard:off или отключение соответствующей настройки в конфигурации). Дополнительно рекомендуется ограничить исходящие RDP-соединения до проверенных серверов и инструктировать пользователей проверять подлинность и безопасность удалённых хостов перед подключением.
Специалистам по информационной безопасности следует отслеживать телеметрию конечных точек на предмет неожиданных сбоев процесса wfreerdp.exe, подозрительных RDP-адресов назначения и аномальной активности в виртуальном канале буфера обмена.
Это не первый случай, когда уязвимости в реализации RDP-клиентов приводят к серьёзным последствиям - подобные проблемы ранее находили как в самом протоколе, так и в сторонних реализациях. В данном случае ситуация усугубляется тем, что затронутая версия клиента официально признана устаревшей, что повышает риски для организаций, продолжающих её использовать.
Ссылки