data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-80584 in the interactive tracker

CVE-2026-80584

s390/qeth: validate user buffer length in SNMP and ARP query ioctls

8.4 EPSS 0.2% AV:L

Published 2026-08-26 (2 months ago) by the Linux kernel CNA. Subsystem drivers/s390. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-80584 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4777-1 · 2026-09-08 · text6.1.187-1Update the kernel and reboot. DLA-4777-1 shipped the fix on 2026-09-08, in 6.1.187-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixed6.12.105-1Update the kernel and reboot. Fixed in 6.12.105-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.10-1Update the kernel and reboot. Fixed in 7.1.10-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.10-1Update the kernel and reboot. Fixed in 7.1.10-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4788-1 · 2026-09-19 · text6.12.107-1~deb12u1Update the kernel and reboot. DLA-4788-1 shipped the fix on 2026-09-19, in 6.12.107-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

qeth_snmp_command() and qeth_l3_arp_query() allocate a buffer sized by a user-supplied length (udata_len) without checking a lower bound, then set udata_offset to a fixed non-zero value and pass both to a reply callback. The callback bounds-checks the copy with if ((udata_len - udata_offset) < len) Both fields are u32, so a udata_len smaller than udata_offset makes the subtraction wrap and the check pass, and the following memcpy() writes past the allocation. A udata_len of 0 also yields ZERO_SIZE_PTR from kzalloc(), which the existing NULL check does not catch. Reject buffers smaller than udata_offset before allocating, so the callback subtraction can no longer underflow.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

drivers/s390/net/qeth_core_main.c
drivers/s390/net/qeth_l3_main.c

What this is
NETWORKING DRIVERSMAINTAINERS section matched on drivers/s390/net/ · netdev@vger.kernel.org · Maintained
Kernel module
qeth

Check it on the machine

grep -wE 'CONFIG_QETH|CONFIG_S390' /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w qeth

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian does not build this code in 2 releases. It does build it in 3 releases, so the answer depends on which release the machine runs.

  • bookwormn
  • trixieMnot built on amd64/amd64, amd64/cloud-amd64, amd64/rt/amd64, arm64/arm64, arm64/arm64-16k, arm64/cloud-arm64, arm64/rt/arm64, armel/rpi, armhf/armmp, armhf/armmp-lpae, armhf/rt/armmp, ppc64el/powerpc64le, ppc64el/powerpc64le-64k, riscv64/riscv64
  • forky, sidMnot built on amd64/amd64, amd64/cloud-amd64, amd64/rt-amd64, arm64/arm64, arm64/arm64-16k, arm64/cloud-arm64, arm64/rt-arm64, armhf/armmp, armhf/armmp-lpae, loong64/loong64, ppc64el/powerpc64le, ppc64el/powerpc64le-64k, riscv64/riscv64
  • bookworm · linux-6.12n
n
not enabled on any flavour - this release does not build the code
M
a module where it is built at all; some flavours do not build it
Build switches
CONFIG_QETH, CONFIG_S390
Reads as
all on means the file is compiled; any one off means it is not.

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-08-26 (2 months ago)source
CVSS
8.4 high
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.20%, higher than 8.6% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
drivers/s390

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
2.6.265.10.2669d00eeb2d27f
2.6.265.15.21746443eaddebd
2.6.266.1.18491935843f939
2.6.266.6.153cc423f4105fe
2.6.266.12.1053083818e67bc
2.6.266.18.46a30836477479
2.6.267.1.1075fb3151513d
2.6.267.2d141f087b1af

Debian advisories

AdvisoryDateShipped toDebian
DLA-4788-12026-09-19bookworm 6.12.107-1~deb12u1tracker
DLA-4777-12026-09-08bookworm 6.1.187-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:LAttack vector, local
Exploitation requires a local ioctl(2) on a qeth netdev (SIOC_QETH_ADP_SET_SNMP_CONTROL or SIOC_QETH_ARP_QUERY_INFO) via socket()->dev_ioctl()->dev_siocdevprivate(); no remote packet or network protocol handler reaches these code paths.
AC:LAttack complexity, low
The attacker fully controls udata_len in the ioctl argument; values below the fixed udata_offset (16 for SNMP, 6 for ARP) deterministically underflow the u32 bounds check and cause memcpy() past the kmalloc allocation without races or uncontrollable memory layout.
PR:NPrivileges required, none
On affected kernels before CVE-2026-74467, SIOC_QETH_ADP_SET_SNMP_CONTROL had no CAP_NET_ADMIN gate and dev_ioctl() performs no capability check for SIOCDEVPRIVATE, so any unprivileged local user on an IBM Z/LinuxONE LPAR with a qeth interface can reach the overflow.
UI:NUser interaction, none
Exploitation requires only the attacker opening a socket and issuing the crafted ioctl against a qeth interface; no victim login, mount, or other interactive action is needed on a shared mainframe guest.
S:UScope, unchanged
Impact is kernel heap corruption and crash within the local LPAR/kernel security boundary on IBM Z; this does not cross a VM guest-to-host, container, or IOMMU security boundary.
C:HConfidentiality impact, high
The unchecked memcpy() performs a kernel heap out-of-bounds write past a user-sized kmalloc buffer, corrupting adjacent slab objects; per CNA guidance, memory corruption exploitable for information disclosure warrants High confidentiality impact.
I:HIntegrity impact, high
Integer underflow bypasses the bounds check and memcpy() writes OSA SNMP/ARP response data past the kmalloc allocation end, providing a kernel heap overflow primitive suitable for adjacent-object corruption and privilege escalation.
A:HAvailability impact, high
udata_len=0 yields ZERO_SIZE_PTR from kzalloc() (not caught by the NULL check) and memcpy() writes to a fixed low kernel address causing a CPU fault; undersized non-zero lengths corrupt the heap and can trigger kernel oops or panic.