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

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

CVE-2026-92511

RDMA/core: Fix potential use after free in ib_destroy_cq_user()

7.8 EPSS 0.1% AV:L

Published 2026-09-17 (31 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-92511 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

When accessing a CQ via the netlink path the only synchronization mechanism for the said CQ is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of ib_destroy_cq_user(), which is too late, since by that point vendor-specific resources associated with the CQ might already be freed. This can leave a short window where the CQ remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of ib_destroy_cq_user(), ensuring that the CQ is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a CQ that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable.

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/verbs.c

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

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 ib_core

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, sid, bookworm · linux-6.12m
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-09-17 (31 days ago)source
CVSS
7.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.13%, higher than 2.0% 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
4.166.1.18842f7a0c7a940
4.166.6.157253c2ed71a53
4.166.12.110b85a148731ec
4.166.18.52197c262dbf94
4.167.2.68a72a6aad84b
4.167.33481bec4dfc4

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:LAttack vector, local
The UAF is reached by a local IB_USER_VERBS_CMD_DESTROY_CQ/UVERBS_METHOD_CQ_DESTROY on /dev/infiniband/uverbsN (ib_uverbs_destroy_cq → uobj_get_destroy → uverbs_free_cq → ib_destroy_cq_user) racing NETLINK_RDMA RDMA_NLDEV_CMD_RES_CQ_GET (nldev_res_get_cq_doit/dumpit → rdma_restrack_get_byid/rdma_restrack_get → fill_res_cq_entry). No remote RoCE/iWARP message carries the trigger.
AC:LAttack complexity, low
The attacker drives both sides: one thread destroys their CQ via ib_uverbs_destroy_cq/uverbs_free_cq while another issues RDMA_NLDEV_CMD_RES_CQ_GET. Pre-fix, rdma_restrack_del() ran only after cq->device->ops.destroy_cq() returned, so rdma_restrack_get() still succeeds throughout vendor teardown with no victim-controlled timing.
PR:LPrivileges required, low
ib_uverbs_open has no CAP_* check and uverbs_devnode sets /dev/infiniband/uverbsN to 0666. RDMA_NLDEV_CMD_RES_CQ_GET is registered without RDMA_NL_ADMIN_PERM, and NETLINK_RDMA unicast to portid 0 does not require CAP_NET_ADMIN, so an unprivileged user on a system with an RDMA device can create, dump, and destroy their own CQ.
UI:NUser interaction, none
The attacker creates the CQ with IB_USER_VERBS_CMD_CREATE_CQ/UVERBS_METHOD_CQ_CREATE, dumps it with RDMA_NLDEV_CMD_RES_CQ_GET, and destroys it with IB_USER_VERBS_CMD_DESTROY_CQ on their own uverbs fd; no other user must mount, open a file, or otherwise act.
S:UScope, unchanged
fill_res_cq_entry and cq->device->ops.destroy_cq run in the same host kernel that owns the ib_cq; the dangling vendor CQ state is consumed in-kernel (nldev restrack dump versus ib_destroy_cq_user), not across a KVM/Xen, IOMMU, or other authorization boundary.
C:HConfidentiality impact, high
After ib_destroy_cq_user calls destroy_cq, fill_res_cq_entry still holds the CQ via rdma_restrack_get and invokes vendor fill. c4iw_destroy_cq's destroy_cq dma_free_coherent()s cq->queue and kfree()s cq->sw_queue, then c4iw_fill_res_cq_entry copies those CQEs into the netlink skb; hns_roce_fill_res_cq_entry_raw query_cqc()s a CQN after DESTROY_CQC/hns_roce_table_put. That is a UAF read of freed CQ backing store.
I:HIntegrity impact, high
The same window leaves vendor CQ allocations (c4iw cq->queue/sw_queue, hns mtr after hns_roce_mtr_destroy, mlx5 cq->buf.umem after ib_umem_release, bnxt hwq PBLs after bnxt_qplib_free_hwq) freed while the ib_cq remains in the restrack xarray. Reclaiming those objects while fill_res_cq_entry/vendor ops still run is a UAF write/control-flow primitive.
A:HAvailability impact, high
fill_res_cq_entry and vendor fill (c4iw_fill_res_cq_entry dereferencing dma-freed cq->queue, hns/mlx5/bnxt querying a destroyed CQN) run after destroy_cq has released those resources, so the race oopses the kernel, and repeating create_cq/destroy_cq against concurrent RDMA_NLDEV_CMD_RES_CQ_GET panics the host.