В ядре Linux устранена следующая уязвимость:
netfilter: nf_conntrack_sip: исправлено усечение Content-Length u32 в sip_help_tcp()
sip_help_tcp() анализирует заголовок SIP Content-Length с помощью
simple_strtoul(), который возвращает unsigned long, но сохраняет результат в
беззнаковый int clen. В 64-битных системах значения, превышающие UINT_MAX, являются
молча усекается перед вычислением границы сообщения SIP. Например, Content-Length 4294967328 (2^32 + 32) усекается до 32,
заставляя синтаксический анализатор неправильно рассчитать, где заканчивается текущее сообщение.
затем цикл обрабатывает конечные данные в сегменте TCP как второй SIP.
сообщение и обрабатывает его через анализатор SDP.
Исправьте это, изменив clen на unsigned long, чтобы он соответствовал типу возвращаемого значения
simple_strtoul() и отклонять значения Content-Length, превышающие
оставшаяся длина полезной нагрузки TCP.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_sip: fix Content-Length u32 truncation in sip_help_tcp() sip_help_tcp() parses the SIP Content-Length header with simple_strtoul(), which returns unsigned long, but stores the result in unsigned int clen. On 64-bit systems, values exceeding UINT_MAX are silently truncated before computing the SIP message boundary. For example, Content-Length 4294967328 (2^32 + 32) is truncated to 32, causing the parser to miscalculate where the current message ends. The loop then treats trailing data in the TCP segment as a second SIP message and processes it through the SDP parser. Fix this by changing clen to unsigned long to match the return type of simple_strtoul(), and reject Content-Length values that exceed the remaining TCP payload length.