OpenSIPS — это реализация сервера протокола инициации сеанса (SIP). В версиях до 3.6.6 и 4.0.0-rc1 функция find_line_delimiter() в анализаторе составного тела выполняет чтение за пределами границ с помощью strncmp() при поиске разделителей границ MIME. Найдя шаблон -- в конце тела, функция сравнивает байты delimiter.len (обычно 20–70), начиная с позиции в логическом конце буфера тела или за ним, считывая за границу тела.
Ошибка возникает, когда SIP-сообщение имеет Content-Type: multipart/mixed с параметром границы, а его тело содержит -- в пределах двух-трех байтов от конца тела без фактического разделителя границы. Эта проблема исправлена в версиях 3.6.6 и 4.0.0-rc1.
Показать оригинальное описание (EN)
OpenSIPS is a Session Initiation Protocol (SIP) server implementation. In versions prior to 3.6.6 and 4.0.0-rc1, the find_line_delimiter() function in the multipart body parser performs an out-of-bounds read via strncmp() when searching for MIME boundary delimiters. After finding a -- pattern near the end of the body, the function compares delimiter.len bytes (typically 20-70) starting from a position at or past the logical end of the body buffer, reading past the body boundary. The bug triggers when a SIP message has Content-Type: multipart/mixed with a boundary parameter and its body contains -- within two to three bytes of the body's end without being followed by the actual boundary delimiter. This issue has been fixed in versions 3.6.6 and 4.0.0-rc1.
Характеристики атаки
Последствия
Строка CVSS v3.1