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

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

CVE-2026-72105

dm-log: fix a bitset_size overflow on 32bit machines

7.8 EPSS 0.2% AV:L

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

What to do, per Debian release

Debian's own status for CVE-2026-72105 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

Commit c20e36b7631d ("dm log: fix out-of-bounds write due to region_count overflow") made sure that region_count could fit in an unsigned int. But the bitmap memory isn't allocated based on region_count. It uses bitset_size (a size_t variable). The first step of calculating bitset_size is to set it to region_count, rounded up to a multiple of BITS_PER_LONG. If region_size is less than BITS_PER_LONG smaller than UINT_MAX, it will get rounded up to 2^32. On a 32bit architecture, this will make bitset_size wrap around to 0 and fail, despite region_count being valid. Since bitset_size gets divided by 8, it can hold any valid region_count. It just needs a special case to handle the rollover. If it is 0, the value rolled over, and bitset size should be set to the number of bytes needed to hold 2^32 bits.

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/md/dm-log.c

What this is
DEVICE-MAPPER (LVM)MAINTAINERS section matched on drivers/md/dm* · dm-devel@lists.linux.dev · Maintained
Kernel module
dm_log

Check it on the machine

grep -wE 'CONFIG_DM_MIRROR|CONFIG_MD' /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 dm_log

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 switches
CONFIG_DM_MIRROR, CONFIG_MD
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
drivers/md

Upstream fixes

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

IntroducedFixed inCommit
5.10.2585.10.261cdc4ddf9db2c
5.15.2095.15.2124b0de5a3ac1f
6.1.1756.1.178567602fa72d5
6.6.1416.6.145d05e0edfecf5
6.12.916.12.971c3412b584e1
6.18.336.18.40e0b0163a6575
7.17.1.579feb87ab239
7.17.29743132a41f4
7.0.1000

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 flaw is reached only via local Device Mapper ioctls on /dev/mapper/control (dmsetup table load creating a mirror with core/disk log); there is no network, wireless, or physical-bus receive path into create_log_context().
AC:LAttack complexity, low
A CAP_SYS_ADMIN attacker fully controls mirror table length and region_size via dmsetup, deterministically forcing region_count into the UINT_MAX-30..UINT_MAX wrap range on 32-bit kernels without races or victim-specific heap layout.
PR:LPrivileges required, low
DM control ioctls require CAP_SYS_ADMIN, which is obtainable inside an unprivileged user namespace per kernel CNA guidance; mirror/dm-log setup is not limited to init-namespace root on typical container-capable systems.
UI:NUser interaction, none
Exploitation requires only the attacker issuing dmsetup/ioctl to create or resume a mirror with crafted parameters; no separate victim action such as mounting a filesystem or opening a file is needed.
S:UScope, unchanged
Impact is kernel vmalloc heap corruption and privilege escalation within the host kernel; it does not cross a VM, hypervisor, or IOMMU security boundary.
C:HConfidentiality impact, high
Wrapping bitset_size to zero undersizes clean_bits/sync_bits/recovering_bits versus lc->region_count near UINT_MAX; subsequent log_test_bit/__set_bit_le calls during mirror I/O perform out-of-bounds reads of adjacent vmalloc heap memory.
I:HIntegrity impact, high
The same undersized bitmap sizing lets log_set_bit and log_clear_bit write far beyond the allocated bitset via region indices derived from dm mirror bios, corrupting adjacent kernel heap objects exploitable for arbitrary write or code execution.
A:HAvailability impact, high
Identical dm-log bitset paths (e.g., core_in_sync calling log_test_bit) have been shown to kernel-crash with CR2 faults from out-of-bounds heap access; triggering this overflow causes oops, panic, or hang on affected 32-bit storage nodes.