CVE-2021-46989

EUVD-2021-33637
In the Linux kernel, the following vulnerability has been resolved:

hfsplus: prevent corruption in shrinking truncate

I believe there are some issues introduced by commit 31651c607151
("hfsplus: avoid deadlock on file truncation")

HFS+ has extent records which always contains 8 extents.  In case the
first extent record in catalog file gets full, new ones are allocated from
extents overflow file.

In case shrinking truncate happens to middle of an extent record which
locates in extents overflow file, the logic in hfsplus_file_truncate() was
changed so that call to hfs_brec_remove() is not guarded any more.

Right action would be just freeing the extents that exceed the new size
inside extent record by calling hfsplus_free_extents(), and then check if
the whole extent record should be removed.  However since the guard
(blk_cnt > start) is now after the call to hfs_brec_remove(), this has
unfortunate effect that the last matching extent record is removed
unconditionally.

To reproduce this issue, create a file which has at least 10 extents, and
then perform shrinking truncate into middle of the last extent record, so
that the number of remaining extents is not under or divisible by 8.  This
causes the last extent record (8 extents) to be removed totally instead of
truncating into middle of it.  Thus this causes corruption, and lost data.

Fix for this is simply checking if the new truncated end is below the
start of this extent record, making it safe to remove the full extent
record.  However call to hfs_brec_remove() can't be moved to it's previous
place since we're dropping ->tree_lock and it can cause a race condition
and the cached info being invalidated possibly corrupting the node data.

Another issue is related to this one.  When entering into the block
(blk_cnt > start) we are not holding the ->tree_lock.  We break out from
the loop not holding the lock, but hfs_find_exit() does unlock it.  Not
sure if it's possible for someone else to take the lock under our feet,
but it can cause hard to debug errors and premature unlocking.  Even if
there's no real risk of it, the locking should still always be kept in
balance.  Thus taking the lock now just before the check.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
5.5 MEDIUM
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CISA-ADPADP
5.5 MEDIUM
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Base Score
CVSS 3.x
EPSS Score
Percentile: 1%
Affected Products (NVD)
VendorProductVersion
linuxlinux_kernel
4.19 ≤
𝑥
< 4.19.191
linuxlinux_kernel
4.20 ≤
𝑥
< 5.4.120
linuxlinux_kernel
5.5 ≤
𝑥
< 5.10.38
linuxlinux_kernel
5.11 ≤
𝑥
< 5.11.22
linuxlinux_kernel
5.12 ≤
𝑥
< 5.12.5
linuxlinux_kernel
5.13:rc1
𝑥
= Vulnerable software versions
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.106-3
fixed
bookworm (security)
6.1.112-1
fixed
bullseye
5.10.223-1
fixed
bullseye (security)
5.10.226-1
fixed
buster
not-affected
sid
6.11.6-1
fixed
trixie
6.11.5-1
fixed
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux
bionic
not-affected
focal
Fixed 5.4.0-80.90
released
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
not-affected
xenial
not-affected
linux-allwinner-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws
bionic
not-affected
focal
Fixed 5.4.0-1054.57
released
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
not-affected
xenial
not-affected
linux-aws-5.0
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.11
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.3
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.4
bionic
pending
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-5.8
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-fips
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-aws-hwe
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
not-affected
linux-azure
bionic
ignored
focal
Fixed 5.4.0-1055.57
released
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
not-affected
xenial
not-affected
linux-azure-4.15
bionic
not-affected
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.11
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.3
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.4
bionic
pending
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-5.8
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-edge
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-fde
bionic
dne
focal
ignored
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-fde-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-fde-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-fde-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-azure-fips
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-bluefield
bionic
dne
focal
Fixed 5.4.0-1016.19
released
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-dell300x
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-fips
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
ignored
xenial
ignored
linux-gcp
bionic
ignored
focal
Fixed 5.4.0-1049.53
released
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
dne
xenial
not-affected
linux-gcp-4.15
bionic
not-affected
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.11
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.3
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.4
bionic
pending
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-5.8
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gcp-fips
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gke
bionic
dne
focal
ignored
jammy
not-affected
mantic
dne
noble
not-affected
trusty
dne
xenial
ignored
linux-gke-4.15
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gke-5.0
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gke-5.15
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gke-5.3
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gke-5.4
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gkeop
bionic
dne
focal
Fixed 5.4.0-1021.22
released
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gkeop-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-gkeop-5.4
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
not-affected
linux-hwe-5.11
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-5.4
bionic
pending
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-5.8
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-hwe-6.8
bionic
dne
focal
dne
jammy
not-affected
noble
dne
trusty
dne
xenial
dne
linux-hwe-edge
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
ignored
linux-ibm
bionic
dne
focal
not-affected
jammy
not-affected
mantic
ignored
noble
not-affected
trusty
dne
xenial
dne
linux-ibm-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-ibm-5.4
bionic
not-affected
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-intel
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
not-affected
trusty
dne
xenial
dne
linux-intel-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-intel-iot-realtime
bionic
dne
focal
dne
jammy
dne
noble
dne
trusty
dne
xenial
dne
linux-intel-iotg
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-intel-iotg-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-iot
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-kvm
bionic
not-affected
focal
Fixed 5.4.0-1044.46
released
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
not-affected
linux-laptop
bionic
dne
focal
dne
jammy
dne
mantic
not-affected
noble
dne
trusty
dne
xenial
dne
linux-lowlatency
bionic
dne
focal
dne
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
dne
xenial
dne
linux-lowlatency-hwe-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-6.8
bionic
dne
focal
dne
jammy
not-affected
noble
dne
trusty
dne
xenial
dne
linux-lts-xenial
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
not-affected
xenial
dne
linux-nvidia
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
not-affected
trusty
dne
xenial
dne
linux-nvidia-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-nvidia-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-nvidia-6.8
bionic
dne
focal
dne
jammy
not-affected
noble
dne
trusty
dne
xenial
dne
linux-nvidia-lowlatency
bionic
dne
focal
dne
jammy
dne
noble
not-affected
trusty
dne
xenial
dne
linux-oem
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
ignored
linux-oem-5.10
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-5.14
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-5.17
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-5.6
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-6.0
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-6.1
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oem-6.8
bionic
dne
focal
dne
jammy
dne
mantic
dne
noble
not-affected
trusty
dne
xenial
dne
linux-oem-osp1
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle
bionic
not-affected
focal
Fixed 5.4.0-1052.56
released
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
dne
xenial
not-affected
linux-oracle-5.0
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-5.11
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-5.13
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-5.3
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-5.4
bionic
pending
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-5.8
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-oracle-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-raspi
bionic
dne
focal
Fixed 5.4.0-1041.45
released
jammy
not-affected
mantic
not-affected
noble
not-affected
trusty
dne
xenial
dne
linux-raspi-5.4
bionic
pending
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-raspi-realtime
bionic
dne
focal
dne
jammy
dne
noble
dne
trusty
dne
xenial
dne
linux-raspi2
bionic
ignored
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
ignored
linux-raspi2-5.3
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-realtime
bionic
dne
focal
dne
jammy
ignored
noble
dne
trusty
dne
xenial
dne
linux-riscv
bionic
dne
focal
ignored
jammy
ignored
mantic
not-affected
noble
not-affected
trusty
dne
xenial
dne
linux-riscv-5.11
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-riscv-5.15
bionic
dne
focal
not-affected
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-riscv-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-riscv-5.8
bionic
dne
focal
ignored
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-riscv-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-riscv-6.8
bionic
dne
focal
dne
jammy
not-affected
noble
dne
trusty
dne
xenial
dne
linux-snapdragon
bionic
ignored
focal
dne
jammy
dne
mantic
dne
noble
dne
trusty
dne
xenial
ignored
linux-starfive
bionic
dne
focal
dne
jammy
dne
mantic
not-affected
noble
dne
trusty
dne
xenial
dne
linux-starfive-5.19
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-starfive-6.2
bionic
dne
focal
dne
jammy
ignored
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-starfive-6.5
bionic
dne
focal
dne
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne
linux-xilinx-zynqmp
bionic
dne
focal
not-affected
jammy
not-affected
mantic
dne
noble
dne
trusty
dne
xenial
dne