OpenSIPS — это реализация сервера протокола инициации сеанса (SIP). Версии с 3.4.0 по 3.6.5 содержат уязвимость отказа в обслуживании в модуле присутствия. Когда функция handle_publish() модуля присутствия обрабатывает запрос SIP PUBLISH с заголовком Event: Presence и телом сообщения, когда установлен параметр конфигурации Enable_sphere_check=1, она вызывает макрос get_content_type() без предварительного вызова parse_content_type_hdr(), что приводит к разыменованию неинициализированного или NULL состояния синтаксического анализа Content-Type и сбоя.
Если заголовок Content-Type присутствует, но не анализируется, msg->content_type->parsed имеет значение NULL и разыменовывается как указатель content_t; если в запросе полностью отсутствует заголовок Content-Type, сам msg->content_type имеет значение NULL, и оба случая приводят к сбою. Таким образом, удаленный злоумышленник может вызвать отказ в обслуживании затронутого экземпляра с помощью одного запроса PUBLISH через UDP или TCP, используя либо действительный запрос Content-Type: application/pidf+xml, либо запрос с удаленным заголовком, а путь уязвимого кода сам по себе не обеспечивает аутентификацию (хотя конфигурация маршрутизации развертывания может потребовать этого до достижения этого маршрута). Проблема исправлена в версиях 3.6.6 и 4.0.0-rc1.
Показать оригинальное описание (EN)
OpenSIPS is a Session Initiation Protocol (SIP) server implementation. Versions 3.4.0 through 3.6.5 contain a denial of service vulnerability in the presence module. When the presence module's handle_publish() function processes a SIP PUBLISH request with an Event: presence header and a message body while the configuration option enable_sphere_check=1 is set, it invokes the get_content_type() macro without first calling parse_content_type_hdr(), causing it to dereference uninitialized or NULL Content-Type parsing state and crash. If a Content-Type header is present but unparsed, msg->content_type->parsed is NULL and is dereferenced as a content_t pointer; if the request lacks a Content-Type header entirely, msg->content_type itself is NULL, and both cases lead to a crash. A remote attacker can therefore cause a denial of service against an affected instance with a single PUBLISH request over UDP or TCP, using either a valid Content-Type: application/pidf+xml request or one with the header removed, and the vulnerable code path itself does not enforce authentication (though a deployment's routing configuration may require it before this route is reached). The issue has been fixed in version 3.6.6 and 4.0.0-rc1.
Характеристики атаки
Последствия
Строка CVSS v4.0