CVE-2026-26965

HIGH CVSS 3.1: 8,8 EPSS 0.03%
Обновлено 25 февраля 2026
Freerdp
Параметр Значение
CVSS 8,8 (HIGH)
Тип уязвимости CWE-787 (Запись за пределами буфера)
Поставщик Freerdp
Публичный эксплойт Нет

FreeRDP — это бесплатная реализация протокола удаленного рабочего стола. До версии 3.23.0 в пути плоского декодирования RLE `planar_decompress_plane_rle()` записывает в `pDstData` по адресу `((nYDst+y) * nDstStep) + (4*nXDst) + nChannel` без проверки того, что `(nYDst+nSrcHeight)` соответствует высоте назначения или `(nXDst+nSrcWidth)` соответствует шагу назначения. Когда `TempFormat != DstFormat`, `pDstData` становится `planar->pTempData` (размером для рабочего стола), тогда как `nYDst` проверяется на соответствие **поверхности** только с помощью `is_within_surface()`.

Вредоносный RDP-сервер может использовать это для выполнения записи за пределами кучи с контролируемыми злоумышленником смещениями и пиксельными данными на любом подключающемся клиенте FreeRDP. Запись OOB достигает 132 096 байт за концом временного буфера, а в куче brk (рабочий стол ≤ 128×128) указатель функции decode соседней структуры NSC_CONTEXT перезаписывается контролируемыми злоумышленником пиксельными данными — повреждение, связанное с потоком управления (перезапись указателя функции), продемонстрированное при детерминированной компоновке кучи (nsc->decode = 0xFF414141FF414141`). Версия 3.23.0 устраняет уязвимость.

Показать оригинальное описание (EN)

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+nSrcHeight)` fits in the destination height or that `(nXDst+nSrcWidth)` fits in the destination stride. When `TempFormat != DstFormat`, `pDstData` becomes `planar->pTempData` (sized for the desktop), while `nYDst` is only validated against the **surface** by `is_within_surface()`. A malicious RDP server can exploit this to perform a heap out-of-bounds write with attacker-controlled offset and pixel data on any connecting FreeRDP client. The OOB write reaches up to 132,096 bytes past the temp buffer end, and on the brk heap (desktop ≤ 128×128), an adjacent `NSC_CONTEXT` struct's `decode` function pointer is overwritten with attacker-controlled pixel data — control-flow–relevant corruption (function pointer overwritten) demonstrated under deterministic heap layout (`nsc->decode = 0xFF414141FF414141`). Version 3.23.0 fixes the vulnerability.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Требуется
Нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1