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

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

CVE-2026-81003

net/iucv: filter frames in afiucv_hs_rcv() by ingress device

8.1 EPSS 0.3% AV:A

Published 2026-09-11 (37 days ago) by the Linux kernel CNA. Subsystem net/iucv. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-81003 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-4841-1 · 2026-10-17 · text6.1.190-1Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

afiucv_hs_rcv() selects a socket from iucv_sk_list by matching four 8-byte name fields in the transport header alone. No check is made against the net_device the frame arrived on. This can cause a frame arriving on any netdev to be delivered to an AF_IUCV socket. Three problems follow. First, a frame arriving over HiperSockets can be delivered to a socket bound to the classic z/VM IUCV transport, which has iucv->hs_dev == NULL. iucv_sock_bind() takes the classic path whenever the requested userid matches iucv_userid, even on a guest that also has a HiperSockets device carrying the same identifier. The child socket created by afiucv_hs_callback_syn() for such a match inherits hs_dev = NULL and transport = AF_IUCV_TRANS_HIPER, so the first send() on it returns -ENODEV. The socket delivered to accept() is unusable. Second, a frame arriving on one netdev can be delivered to a socket bound to a different IQD device. Which can lead to - Accept-queue exhaustion (DoS) - Attacker-controlled peer identity in the child socket - Data injection into existing sockets - Fabric noise on the IQD fabric, where bogus replies are sent - killing established connections Third, all AF_IUCV sockets live in init_net, as iucv_sock_alloc() calls sk_alloc(&init_net, ...). But even frames arriving on netdev devices in a namespace can be delivered to an IUCV socket. So a process in an unprivileged user and network namespace holding only the CAP_NET_RAW capability valid within that namespace can send a raw ETH_P_AF_IUCV frame on its own lo device and have it matched against init_net sockets. Fix all three by skipping any socket whose hs_dev does not match the ingress device. A classic z/VM IUCV socket has hs_dev == NULL; the ingress dev is never NULL, so classic sockets are skipped automatically. An unbound HIPER socket also has hs_dev == NULL and is skipped. A bound HIPER socket is only reachable from the exact IQD device it was bound to. Because hs_dev is always a device in init_net (iucv_sock_bind() scans for_each_netdev_rcu(&init_net, ...) exclusively), a frame whose ingress device belongs to another namespace never matches any socket. Note that AF_IUCV over HiperSockets provides no per-connection authentication: no sequence numbers, no TLS, no nonce. The four name fields identifying a connection are exchanged in plaintext on the shared HiperSockets segment (VCHID). Any host on the same HiperSockets segment could spoof any frame type against an existing connection. That is a protocol-level property unchanged by this patch. The fix reduces the attack surface to peers present on the same HiperSockets segment.

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.

net/iucv/af_iucv.c

What this is
S390 IUCV NETWORK LAYERMAINTAINERS section matched on net/iucv/ · linux-s390@vger.kernel.org · Supported
Kernel module
af_iucv

Check it on the machine

grep -wE 'CONFIG_AFIUCV|CONFIG_IUCV' /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 af_iucv

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_AFIUCV, CONFIG_IUCV
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-09-11 (37 days ago)source
CVSS
8.1 high
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:Hsource recompute it
Attack vector
adjacent network (AV:A)source
EPSS
0.31%, higher than 22.2% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
net/iucv

Upstream fixes

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

IntroducedFixed inCommit
3.25.10.270639828ad4d37
3.25.15.22192e5c281f1ca
3.26.1.188712330f8a429
3.26.6.1570a5af67e7184
3.26.12.109dfac2936b83b
3.26.18.508e3763f1ccac
3.27.2.4a7f0130a0917
3.27.380230a18c164

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-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:AAttack vector, adjacent network
afiucv_hs_rcv() is registered via dev_add_pack() for ethertype ETH_P_AF_IUCV (0xFBFB) on every netdevice and matches sockets by name fields only, so crafted L2 frames from a peer LPAR/guest on the HiperSockets VCHID or a host on an attached Ethernet segment reach AF_IUCV sockets; these frames are not IP-routable.
AC:LAttack complexity, low
The attacker fully controls the ETH_P_AF_IUCV frames and can set the plaintext dest/src name fields to match a listening or connected socket (names are exchanged in the clear on the fabric and IBM apps use well-known 8-byte names), so matching and delivery are reliable with no race.
PR:NPrivileges required, none
afiucv_hs_rcv() runs from netif RX softirq with no authentication, capability, or credential check on the path, so an adjacent HiperSockets or Ethernet peer needs no account or privilege on the victim s390 system.
UI:NUser interaction, none
Exploitation requires only sending crafted frames; the packet handler runs unconditionally in softirq and needs no victim action such as opening a file or mounting a filesystem.
S:UScope, unchanged
Impact is unauthorized delivery into the victim kernel's AF_IUCV sockets within the same OS security authority; this is not a KVM/Xen guest-to-host escape or IOMMU/DMA boundary bypass.
C:NConfidentiality impact, none
The flaw injects attacker-supplied frames into socket receive and control paths and does not provide a kernel memory read, out-of-bounds read, or use-after-free disclosure primitive.
I:HIntegrity impact, high
Because lookup ignores the ingress device, an attacker can inject arbitrary payload into connected AF_IUCV sockets, spoof the accepted peer identity on SYN, and forge FIN/WIN control frames, fully compromising the integrity of AF_IUCV communications.
A:HAvailability impact, high
SYN floods exhaust the listen accept queue and forged FIN/SYN|FIN frames tear down established connections, including classic z/VM IUCV sockets wrongly matched from any netdev, causing complete denial of AF_IUCV services.