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

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

CVE-2026-72120

can: bcm: add missing rcu list annotations and operations

7.8 EPSS 0.2% AV:L

Published 2026-08-15 (2 months ago) by the Linux kernel CNA. Subsystem net/can. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-72120 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 12bookwormfixed6.1.180-1Update the kernel and reboot. Fixed in 6.1.180-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixed6.12.100-1Update the kernel and reboot. Fixed in 6.12.100-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

sashiko-bot remarked the missing use of list_add_rcu() in bcm_[rx|tx]_setup() to have a proper initialized bcm_op structure when bcm_proc_show() traverses the bcm_op's under rcu_read_lock(). To cover all initial settings of the bcm_op's the list_add_rcu() calls are moved to the end of the setup code. While at it, also fix the mirroring removal side: bcm_release() called bcm_remove_op() - which frees the op via call_rcu() - on ops that were still linked in bo->tx_ops/bo->rx_ops, without list_del_rcu() first. Unlink each op with list_del_rcu() before handing it to bcm_remove_op(), matching the existing pattern in bcm_delete_tx_op()/bcm_delete_rx_op().

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/can/bcm.c

What this is
CAN NETWORK LAYERMAINTAINERS section matched on net/can/ · linux-can@vger.kernel.org · Maintained
Kernel module
can_bcm

Check it on the machine

grep -wE 'CONFIG_CAN|CONFIG_CAN_BCM' /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 can_bcm

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, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.

  • bookworm, trixie, forky, sidMnot built on amd64/cloud-amd64, arm64/cloud-arm64
M
a module where it is built at all; some flavours do not build it
Build switches
CONFIG_CAN, CONFIG_CAN_BCM
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-15 (2 months 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.17%, higher than 5.8% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
net/can

Upstream fixes

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

IntroducedFixed inCommit
5.10.2385.10.2618357255e56dc
5.15.1855.15.2128e1c7257c815
6.1.1416.1.178eb1c26eab4d1
6.6.936.6.145f53bdab85e64
6.12.316.12.974e22e8b505f8
6.156.18.40b06a4a397ac8
6.157.1.530f7bb922cb7
6.157.27b2c3eabc4da
5.4.29400
6.14.900

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 local syscalls (socket/connect/sendmsg/close on PF_CAN/CAN_BCM) and/or reading /proc/net/can-bcm/<inode>; the bug is in RCU list management and procfs traversal, not in remote CAN frame reception.
AC:LAttack complexity, low
The attacker controls both sides of the race—concurrent TX_SETUP/RX_SETUP or socket close while repeatedly reading the world-readable proc entry—so the UAF in bcm_proc_show is reliably triggerable without external timing luck.
PR:LPrivileges required, low
PF_CAN CAN_BCM sockets are created and connected without capability checks; RX_SETUP works with ifindex 0 (no bound CAN device), so any unprivileged local user can create ops and race procfs reads on automotive, industrial, and embedded systems with CONFIG_CAN_BCM.
UI:NUser interaction, none
No victim interaction is required; the attacker drives the full exploit sequence (socket setup, opcode installation, proc reads, and socket teardown) from their own local process threads.
S:UScope, unchanged
The use-after-free corrupts kernel heap memory within the same kernel security domain; impact is local privilege escalation or crash, not crossing a VM, container, or IOMMU security boundary.
C:HConfidentiality impact, high
bcm_proc_show dereferences bcm_op fields (can_id, flags, timers, counters) from list entries that may already be freed via call_rcu in bcm_remove_op, enabling kernel heap memory disclosure and further exploitation primitives.
I:HIntegrity impact, high
Freed bcm_op structures are kmalloc heap objects containing list_head links, sock pointers, and hrtimer state; UAF combined with heap spraying can yield arbitrary kernel writes and control-flow hijack for privilege escalation.
A:HAvailability impact, high
Concurrent procfs traversal of tx_ops/rx_ops lists containing stale pointers to RCU-freed bcm_op objects can cause kernel oops/panic during list walking or field access, and UAF exploitation attempts can also crash the system.