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

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

CVE-2026-98252

RDMA/core: fix refcount bug in iwpm_get_nlmsg_request()

7.0 EPSS 0.1% AV:L

Published 2026-10-06 (13 days ago) by the Linux kernel CNA. Subsystem drivers/infiniband. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-98252 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-6568-1 · 2026-10-16 · text6.12.113-1Update the kernel and reboot. DSA-6568-1 shipped the fix on 2026-10-16, in 6.12.113-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.8-1Update the kernel and reboot. Fixed in 7.2.8-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.8-1Update the kernel and reboot. Fixed in 7.2.8-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

iwpm_get_nlmsg_request() initializes refcount _after_ list_add_tail() making it accessible to global list where another CPU can kref_get() on nlmsg_request causing a refcount "addition on 0" bug. Fix this by initializing kref _before_ list_add_tail() so refcount for nlmsg_request can be incremented/decremented normally. In addition, also initialize every field before list_add_tail().

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/infiniband/core/iwpm_util.c

What this is
INFINIBAND SUBSYSTEMMAINTAINERS section matched on drivers/infiniband/ · linux-rdma@vger.kernel.org · Supported
Kernel module
iw_cm

Check it on the machine

grep -w CONFIG_INFINIBAND /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 iw_cm

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 builds this as a loadable module. Every release below compiles it as a module on every flavour, so whether the code is in the running kernel depends on whether that module is loaded.

  • bookworm, trixie, forky, sidm
m
a loadable module on every flavour - check lsmod, can be blacklisted
Build switch
CONFIG_INFINIBAND

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-10-06 (13 days ago)source
CVSS
7.0 high
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.12%, higher than 1.8% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
drivers/infiniband

Upstream fixes

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

IntroducedFixed inCommit
3.165.10.27152c13c63bb36
3.165.15.2228a91609032d4
3.166.1.189ce8a379598bd
3.166.6.1582fbac8a56004
3.166.12.11288e429a4e9ba
3.166.18.54e15eb536be4f
3.167.2.8117871cdb892
3.167.333fb59da49c4

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DSA-6568-12026-10-16trixie 6.12.113-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
The triggering input is a forged IWPM reply (e.g. RDMA_NL_IWPM_REG_PID) sent over a local NETLINK_RDMA socket to iwcm_nl_cb_table callbacks, which call iwpm_find_nlmsg_request(). No remote protocol carries it, and rdma_nl_rcv_msg() rejects RDMA_NL_IWCM messages from outside init_net.
AC:HAttack complexity, high
The forged reply must land in the few-instruction gap between list_add_tail() and kref_init()/sema_init() in iwpm_get_nlmsg_request(). The host also needs an iWARP device so that iw_cm_map() sends port-mapper requests, and the attacker cannot set that up.
PR:LPrivileges required, low
No iwcm_nl_cb_table entry sets RDMA_NL_ADMIN_PERM, and the NETLINK_RDMA socket uses NL_CFG_F_NONROOT_RECV, so an unprivileged user in the initial netns can join RDMA_NL_GROUP_IWPM, read the sequence numbers and send replies. A local login is still needed.
UI:NUser interaction, none
The attacker sends the netlink replies and starts iWARP connection setup without any action from another user.
S:UScope, unchanged
The memory corruption stays inside the kernel's own security authority. No guest/host or IOMMU boundary is crossed.
C:HConfidentiality impact, high
kref_init() erases the reference taken by iwpm_find_nlmsg_request(), so the requester's kref_put() in iwpm_wait_complete_req() can free the kmalloc'd iwpm_nlmsg_request while iwpm_register_pid_cb() still uses it. That is a use-after-free that can be reclaimed by sprayed data.
I:HIntegrity impact, high
After the early free, the callback's up(&nlmsg_request->sem) and the requester's down_timeout() write a semaphore inside a freed and possibly reclaimed slab object. That is a use-after-free write on heap memory.
A:HAvailability impact, high
The race fires a refcount_t 'addition on 0' WARN (a panic under panic_on_warn), and the replies can dereference NULL req_buffer in iwpm_register_pid_cb() or touch freed memory, either of which oopses the kernel.