Ad

CVE-2026-72247

HIGH CVSS 3.1: 7,5 EPSS 0.70%
Обновлено 17 августа 2026
Linux
Параметр Значение
CVSS 7,5 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: netfilter: nf_conncount: исправлено сравнение зон при дедупликации кортежей. Логика дедупликации «уже существует» в __nf_conncount_add() решает было ли уже засчитано соединение и его можно пропустить увеличения счетчика connlimit. Он сравнивает зону conntrack запись списка с зоной подключения, добавляемой с помощью nf_ct_zone_id() и nf_ct_zone_equal(), передавая conn->zone.dir или Zone->dir в качестве аргумента направления.

Эти помощники принимают значения enum ip_conntrack_dir: IP_CT_DIR_ORIGINAL равен 0. а IP_CT_DIR_REPLY равен 1. Однако Zone->dir представляет собой битовую маску u8: NF_CT_ZONE_DIR_ORIG — 1, NF_CT_ZONE_DIR_REPL — 2 и NF_CT_DEFAULT_ZONE_DIR равен 3. Передача этой битовой маски в качестве направления перечисления. меняет смысл каждого ненулевого значения.

Зона только ORIG проходит 1 и тестируется как REPLY, тогда как зоны только REPL и зоны по умолчанию проходят 2 или 3 и тестовые биты выходят за пределы допустимого диапазона направлений. В этих случаях nf_ct_zone_id() может вернуться к NF_CT_DEFAULT_ZONE_ID вместо использования реальный идентификатор зоны, поэтому разные зоны можно рассматривать как равные и с дедупликацией сводится только к кортежному равенству. nf_conncount сохраняет и сравнивает кортеж исходного направления для соединение. Если к skb уже прикреплена запись conntrack, get_ct_or_tuple_from_skb() явно копирует ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, независимо от пакета ctinfo.

Поэтому при сравнении зон в пути дедупликации кортежа необходимо использовать IP_CT_DIR_ORIGINAL также; битовая маска направления зоны описывает, где применяется идентификатор зоны, а не то, какое направление представляет этот кортеж conncount. Исправьте два сравнения дедупликации, передав IP_CT_DIR_ORIGINAL напрямую. Не используйте специальный регистр NF_CT_DEFAULT_ZONE_DIR и не сравнивайте необработанную зону. идентификаторы: использование существующих помощников с IP_CT_DIR_ORIGINAL сохраняет Резервный вариант NF_CT_DEFAULT_ZONE_ID с учетом направления.

Двунаправленный по умолчанию зона содержит бит ORIG, поэтому она естественным образом возвращает реальный идентификатор зоны; зоны только для ответа продолжают использовать кортеж исходного направления сравнения.

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

In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conncount: fix zone comparison in tuple dedup The "already exists" dedup logic in __nf_conncount_add() decides whether a connection has already been counted and can be skipped instead of incrementing the connlimit count. It compares the conntrack zone of a list entry with the zone of the connection being added using nf_ct_zone_id() and nf_ct_zone_equal(), passing conn->zone.dir or zone->dir as the direction argument. Those helpers take enum ip_conntrack_dir values: IP_CT_DIR_ORIGINAL is 0 and IP_CT_DIR_REPLY is 1. However, zone->dir is a u8 bitmask: NF_CT_ZONE_DIR_ORIG is 1, NF_CT_ZONE_DIR_REPL is 2 and NF_CT_DEFAULT_ZONE_DIR is 3. Passing that bitmask as the enum direction shifts the meaning of every non-zero value. An ORIG-only zone passes 1 and is tested as REPLY, while REPL-only and default zones pass 2 or 3 and test bits beyond the valid direction range. In those cases nf_ct_zone_id() can fall back to NF_CT_DEFAULT_ZONE_ID instead of using the real zone id, so different zones can be treated as equal and dedup collapses to tuple equality alone. nf_conncount stores and compares the original-direction tuple for a connection. If an skb already has an attached conntrack entry, get_ct_or_tuple_from_skb() explicitly copies ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, regardless of the packet's ctinfo. Therefore the zone comparison in the tuple dedup path must use IP_CT_DIR_ORIGINAL as well; the zone direction bitmask describes where a zone id applies, not which direction this conncount tuple represents. Fix the two dedup comparisons by passing IP_CT_DIR_ORIGINAL directly. Do not special-case NF_CT_DEFAULT_ZONE_DIR and do not compare raw zone ids: using the existing helpers with IP_CT_DIR_ORIGINAL preserves the direction-aware NF_CT_DEFAULT_ZONE_ID fallback. A default bidirectional zone contains the ORIG bit, so it naturally returns the real zone id; reply-only zones continue to fall back for original-direction tuple comparisons.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1