CVE-2026-31505CWE-787

CVE-2026-31505

High · published April 22, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
6.7
In the wild
Unconfirmed
What it is

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

iavf: fix out-of-bounds writes in iavf_get_ethtool_stats()

iavf incorrectly uses real_num_tx_queues for ETH_SS_STATS. Since the

value could change in runtime, we should use num_tx_queues instead.

Moreover iavf_get_ethtool_stats() uses num_active_queues while

iavf_get_sset_count() and iavf_get_stat_strings() use

real_num_tx_queues, which triggers out-of-bounds writes when we do

"ethtool -L" and "ethtool -S" simultaneously [1].

For example when we change channels from 1 to 8, Thread 3 could be

scheduled before Thread 2, and out-of-bounds writes could be triggered

in Thread 3:

Thread 1 (ethtool -L) Thread 2 (work) Thread 3 (ethtool -S)

iavf_set_channels()

...

iavf_alloc_queues()

-> num_active_queues = 8

iavf_schedule_finish_config()

iavf_get_sset_count()

real_num_tx_queues: 1

-> buffer for 1 queue

iavf_get_ethtool_stats()

num_active_queues: 8

-> out-of-bounds!

iavf_finish_config()

-> real_num_tx_queues = 8

Use immutable num_tx_queues in all related functions to avoid the issue.

[1]

BUG: KASAN: vmalloc-out-of-bounds in iavf_add_one_ethtool_stat+0x200/0x270

Write of size 8 at addr ffffc900031c9080 by task ethtool/5800

CPU: 1 UID: 0 PID: 5800 Comm: ethtool Not tainted 6.19.0-enjuk-08403-g8137e3db7f1c #241 PREEMPT(full)

Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014

Call Trace:

<TASK>

dump_stack_lvl+0x6f/0xb0

print_report+0x170/0x4f3

kasan_report+0xe1/0x180

iavf_add_one_ethtool_stat+0x200/0x270

iavf_get_ethtool_stats+0x14c/0x2e0

__dev_ethtool+0x3d0c/0x5830

dev_ethtool+0x12d/0x270

dev_ioctl+0x53c/0xe30

sock_do_ioctl+0x1a9/0x270

sock_ioctl+0x3d4/0x5e0

__x64_sys_ioctl+0x137/0x1c0

do_syscall_64+0xf3/0x690

entry_SYSCALL_64_after_hwframe+0x77/0x7f

RIP: 0033:0x7f7da0e6e36d

...

</TASK>

The buggy address belongs to a 1-page vmalloc region starting at 0xffffc900031c9000 allocated at __dev_ethtool+0x3cc9/0x5830

The buggy address belongs to the physical page: page: refcount:1 mapcount:0 mapping:0000000000000000

index:0xffff88813a013de0 pfn:0x13a013

flags: 0x200000000000000(node=0|zone=2)

raw: 0200000000000000 0000000000000000 dead000000000122 0000000000000000

raw: ffff88813a013de0 0000000000000000 00000001ffffffff 0000000000000000

page dumped because: kasan: bad access detected

Memory state around the buggy address:

ffffc900031c8f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8

ffffc900031c9000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

>ffffc900031c9080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8

^

ffffc900031c9100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8

ffffc900031c9180: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00175 · 6.7th percentile
Weakness
CWE-787 · Out-of-bounds Write
Published
2026-04-22T18:16Z
Affected products (11)
ProductVersionsFixed in
linux/linux_kernel≥ 5.17.1, < 6.12.806.12.80
linux/linux_kernel≥ 6.13, < 6.18.216.18.21
linux/linux_kernel≥ 6.19, < 6.19.116.19.11
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (5)
EPSS history
Timeline
  • 22 APR 13:54Z
    iavf: fix out-of-bounds writes in iavf_get_ethtool_stats()
    cvelistv5