FreeRDP — это бесплатная реализация протокола удаленного рабочего стола. До версии 3.24.0 деление на ноль в декодерах MS-ADPCM и IMA-ADPCM, когда nBlockAlign равно 0, приводило к сбою. В libfreerdp/codec/dsp.c оба декодера ADPCM используют размер %block_size, где размер_блока = context->common.format.nBlockAlign.
Значение nBlockAlign поступает из PDU аудиоформатов сервера на канале RDPSND. Значение 0 нигде не проверяется до достижения декодера. Когда nBlockAlign = 0, операция по модулю вызывает сбой SIGFPE (исключение с плавающей запятой).
Эта уязвимость исправлена в версии 3.24.0.
Показать оригинальное описание (EN)
FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.24.0, division by zero in MS-ADPCM and IMA-ADPCM decoders when nBlockAlign is 0, leading to a crash. In libfreerdp/codec/dsp.c, both ADPCM decoders use size % block_size where block_size = context->common.format.nBlockAlign. The nBlockAlign value comes from the Server Audio Formats PDU on the RDPSND channel. The value 0 is not validated anywhere before reaching the decoder. When nBlockAlign = 0, the modulo operation causes a SIGFPE (floating point exception) crash. This vulnerability is fixed in 3.24.0.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Freerdp Freerdp
cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*
|
— |
3.24.0
|