CVE-2026-64113: ixgbevf: fix use-after-free in VEPA multicast source pruning

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026071922-CVE-2026-64113-87d9@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

ixgbevf: fix use-after-free in VEPA multicast source pruning

ixgbevf_clean_rx_irq() prunes frames whose source MAC matches the VF's
own address (VEPA multicast workaround) by freeing the skb and
continuing to the next descriptor:

    dev_kfree_skb_irq(skb);
    continue;

The skb pointer is declared outside the while loop and persists across
iterations.  Because the continue skips the "skb = NULL" reset at the
bottom of the loop, the next iteration enters the "else if (skb)" path
and calls ixgbevf_add_rx_frag() on the freed skb, dereferencing
skb_shinfo(skb)->nr_frags - a use-after-free in NAPI softirq context.

The sibling driver iavf already handles this correctly by nulling the
pointer before continuing.  Apply the same pattern here.

I do not have ixgbevf hardware; the bug was found by static analysis
(scan_drop_continue_loops.py + semgrep drop_continue_in_loop, multi-tool
corroboration with the highest score in the scan).  The UAF was confirmed
under KASAN by loading a test module that reproduces the exact code
pattern (alloc skb, kfree_skb, then read skb_shinfo(skb)->nr_frags):

  BUG: KASAN: slab-use-after-free in ixgbevf_uaf_test_init+0x100/0x1000
  Read of size 8 at addr 000000006163ae78 by task insmod/30
  freed 208-byte region [000000006163adc0, 000000006163ae90)

QEMU emulates igb (82576) but not ixgbe (82599), and the igbvf VF
driver does not include the VEPA source pruning path, so a full
end-to-end reproduction with emulated hardware was not possible.

The Linux kernel CVE team has assigned CVE-2026-64113 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 5.10.258 with commit 3d931ac62411a7e43b85dba5fe45e1a4a91bd5cb
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 5.15.209 with commit 6ef30384a50a50e4a484cddf341bc27de31aa3de
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 6.1.175 with commit 55b3e91d62b2f7a24109b2d7c9f4c66d2e3b1ec1
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 6.6.142 with commit add70e2682c0ad3be2a5810bcf1bc13963ba4df9
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 6.12.92 with commit a244395d8c563ed1bb26c3ef708db6aeeaa08084
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 6.18.34 with commit dfef79e09ed2f5df975c98547f97f5d7f8982a24
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 7.0.11 with commit e8768bcbe5cd30c4ea36a22022c9ffaa66903693
	Issue introduced in 3.19 with commit bad17234ba702a50aeec50ab04724ee58af89607 and fixed in 7.1 with commit 5d49b568c188dc77199d8d2b959c91da8cc27cf1

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64113
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/3d931ac62411a7e43b85dba5fe45e1a4a91bd5cb
	https://git.kernel.org/stable/c/6ef30384a50a50e4a484cddf341bc27de31aa3de
	https://git.kernel.org/stable/c/55b3e91d62b2f7a24109b2d7c9f4c66d2e3b1ec1
	https://git.kernel.org/stable/c/add70e2682c0ad3be2a5810bcf1bc13963ba4df9
	https://git.kernel.org/stable/c/a244395d8c563ed1bb26c3ef708db6aeeaa08084
	https://git.kernel.org/stable/c/dfef79e09ed2f5df975c98547f97f5d7f8982a24
	https://git.kernel.org/stable/c/e8768bcbe5cd30c4ea36a22022c9ffaa66903693
	https://git.kernel.org/stable/c/5d49b568c188dc77199d8d2b959c91da8cc27cf1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.