{"id":7103,"date":"2026-09-04T18:49:25","date_gmt":"2026-09-04T10:49:25","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72444"},"modified":"2026-09-04T18:49:25","modified_gmt":"2026-09-04T10:49:25","slug":"cve-2026-72444","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72444","title":{"rendered":"CVE-2026-72444 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nflow_dissector: check"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>flow_dissector: check device type before reading ETH_ADDRS<\/p>\n<p>__skb_flow_dissect() unconditionally reads 12 bytes from eth_hdr(skb)<br \/>\nwhen FLOW_DISSECTOR_KEY_ETH_ADDRS is requested. This assumes the skb<br \/>\nhas a valid Ethernet header at mac_header, which is not always the case.<\/p>\n<p>The problem can be triggered by:<br \/>\n 1. Creating a TUN device in L3 mode (IFF_TUN, hard_header_len=0)<br \/>\n 2. Attaching a multiq qdisc with a flower filter matching on eth_src<br \/>\n 3. Sending a packet through AF_PACKET<\/p>\n<p>Since TUN in L3 mode has no link-layer header, mac_header points to<br \/>\nthe L3 data area. The flow dissector reads 12 bytes of uninitialized<br \/>\nskb memory, which then propagates through fl_set_masked_key() and is<br \/>\nused as a rhashtable lookup key in __fl_lookup(), as reported by KMSAN.<\/p>\n<p>Rejecting the filter in the control path (at tc filter add time) is<br \/>\nnot feasible because TC filter blocks can be shared between arbitrary<br \/>\ndevices &#8212; a filter installed on an Ethernet device may later classify<br \/>\npackets on a headerless device through a shared block. The device<br \/>\nassociation is not fixed at filter creation time.<\/p>\n<p>Fix this by gating the memcpy on dev-&gt;type == ARPHRD_ETHER, which<br \/>\nensures only true Ethernet-framed packets have their addresses read.<br \/>\nThis is more precise than the previous hard_header_len &gt;= 12 check,<br \/>\nwhich would incorrectly pass for non-Ethernet link types like IPoIB<br \/>\n(ARPHRD_INFINIBAND, hard_header_len=24) and FDDI (hard_header_len=21)<br \/>\nwhose L2 headers are not in Ethernet format. Additionally check<br \/>\nskb_mac_header_was_set() to guard against the pathological case where<br \/>\nmac_header is the unset sentinel (~0U), which would cause eth_hdr() to<br \/>\nreturn a wild pointer.<\/p>\n<p>For the act_mirred redirect case (Ethernet packet redirected to a<br \/>\nnon-Ethernet device sharing a TC block), zeroing the key is the correct<br \/>\nbehavior: the packet is now being classified on the target device, where<br \/>\nEthernet address matching is not semantically meaningful.<\/p>\n<p>Note: on non-Ethernet devices, the zeroed key will match a filter<br \/>\nconfigured with all-zero MAC addresses. This is an improvement over the<br \/>\nprevious behavior where uninitialized memory could randomly match any<br \/>\nfilter.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>flow_dissector: check device type before reading ETH_ADDRS<\/p>\n<p>__skb_flow_dissect() unconditionally reads 12 bytes from eth_hdr(skb)<br \/>\nw<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-7103","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/7103","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=7103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}