CVE-2026-31427

NONE EPSS 0.03%
Обновлено 18 апреля 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: netfilter: nf_conntrack_sip: исправлено использование неинициализированного rtp_addr вprocess_sdp. Process_sdp() объявляет объединение nf_inet_addr rtp_addr в стеке и передает его перехватчику nf_nat_sip sdp_session после прохождения SDP описания СМИ. Однако rtp_addr инициализируется только внутри медиа-петля, когда обнаружен распознанный тип носителя с ненулевым портом. Если тело SDP не содержит строк m=, только неактивные разделы мультимедиа. (m=audio 0 ...) или только нераспознанные типы мультимедиа, rtp_addr никогда не назначено.

Несмотря на это, функция по-прежнему вызывает хуки->sdp_session(). с &rtp_addr, заставляя nf_nat_sdp_session() форматировать устаревший стек значение как IP-адрес и перезапишите владельца сеанса SDP и соединение. линии с ним. С CONFIG_INIT_STACK_ALL_ZERO (по умолчанию в большинстве дистрибутивов) это приводит к тому, что адреса o= и c= уровня сеанса перезаписываются на 0.0.0.0 для неактивных сеансов SDP. Без автоматической инициализации стека переписанный адрес — это то, что оказалось в стеке.

Исправьте это, предварительно инициализировав rtp_addr из соединения уровня сеанса. адрес (caddr), если он доступен, и отслеживание с помощью флага have_rtp_addr. был ли установлен какой-либо действительный адрес. Пропустить перехватчик sdp_session полностью, когда действительный адрес не существует.

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

In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_sip: fix use of uninitialized rtp_addr in process_sdp process_sdp() declares union nf_inet_addr rtp_addr on the stack and passes it to the nf_nat_sip sdp_session hook after walking the SDP media descriptions. However rtp_addr is only initialized inside the media loop when a recognized media type with a non-zero port is found. If the SDP body contains no m= lines, only inactive media sections (m=audio 0 ...) or only unrecognized media types, rtp_addr is never assigned. Despite that, the function still calls hooks->sdp_session() with &rtp_addr, causing nf_nat_sdp_session() to format the stale stack value as an IP address and rewrite the SDP session owner and connection lines with it. With CONFIG_INIT_STACK_ALL_ZERO (default on most distributions) this results in the session-level o= and c= addresses being rewritten to 0.0.0.0 for inactive SDP sessions. Without stack auto-init the rewritten address is whatever happened to be on the stack. Fix this by pre-initializing rtp_addr from the session-level connection address (caddr) when available, and tracking via a have_rtp_addr flag whether any valid address was established. Skip the sdp_session hook entirely when no valid address exists.