{"id":6865,"date":"2026-09-04T18:49:20","date_gmt":"2026-09-04T10:49:20","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72247"},"modified":"2026-09-04T18:49:20","modified_gmt":"2026-09-04T10:49:20","slug":"cve-2026-72247","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72247","title":{"rendered":"CVE-2026-72247 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nf_conncou"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>netfilter: nf_conncount: fix zone comparison in tuple dedup<\/p>\n<p>The &#8220;already exists&#8221; dedup logic in __nf_conncount_add() decides<br \/>\nwhether a connection has already been counted and can be skipped instead<br \/>\nof incrementing the connlimit count.  It compares the conntrack zone of a<br \/>\nlist entry with the zone of the connection being added using<br \/>\nnf_ct_zone_id() and nf_ct_zone_equal(), passing conn-&gt;zone.dir or<br \/>\nzone-&gt;dir as the direction argument.<\/p>\n<p>Those helpers take enum ip_conntrack_dir values: IP_CT_DIR_ORIGINAL is 0<br \/>\nand IP_CT_DIR_REPLY is 1.  However, zone-&gt;dir is a u8 bitmask:<br \/>\nNF_CT_ZONE_DIR_ORIG is 1, NF_CT_ZONE_DIR_REPL is 2 and<br \/>\nNF_CT_DEFAULT_ZONE_DIR is 3.  Passing that bitmask as the enum direction<br \/>\nshifts the meaning of every non-zero value.  An ORIG-only zone passes 1<br \/>\nand is tested as REPLY, while REPL-only and default zones pass 2 or 3 and<br \/>\ntest bits beyond the valid direction range.  In those cases<br \/>\nnf_ct_zone_id() can fall back to NF_CT_DEFAULT_ZONE_ID instead of using<br \/>\nthe real zone id, so different zones can be treated as equal and dedup<br \/>\ncollapses to tuple equality alone.<\/p>\n<p>nf_conncount stores and compares the original-direction tuple for a<br \/>\nconnection.  If an skb already has an attached conntrack entry,<br \/>\nget_ct_or_tuple_from_skb() explicitly copies<br \/>\nct-&gt;tuplehash[IP_CT_DIR_ORIGINAL].tuple, regardless of the packet&#8217;s<br \/>\nctinfo.  Therefore the zone comparison in the tuple dedup path must use<br \/>\nIP_CT_DIR_ORIGINAL as well; the zone direction bitmask describes where a<br \/>\nzone id applies, not which direction this conncount tuple represents.<\/p>\n<p>Fix the two dedup comparisons by passing IP_CT_DIR_ORIGINAL directly.<br \/>\nDo not special-case NF_CT_DEFAULT_ZONE_DIR and do not compare raw zone<br \/>\nids: using the existing helpers with IP_CT_DIR_ORIGINAL preserves the<br \/>\ndirection-aware NF_CT_DEFAULT_ZONE_ID fallback.  A default bidirectional<br \/>\nzone contains the ORIG bit, so it naturally returns the real zone id;<br \/>\nreply-only zones continue to fall back for original-direction tuple<br \/>\ncomparisons.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>netfilter: nf_conncount: fix zone comparison in tuple dedup<\/p>\n<p>The &#8220;already exists&#8221; dedup logic in __nf_conncount_add() decides<br \/>\nwheth<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6865","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}