CVE-2024-45025 json
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE
published 2024-09-11 2 y ago modified 2026-06-17 4 mo ago also EUVD-2024-41505
- cvss
- 5.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 14%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE
copy_fd_bitmaps(new, old, count) is expected to copy the first count/BITS_PER_LONG bits from old->full_fds_bits[] and fill the rest with zeroes. What it does is copying enough words (BITS_TO_LONGS(count/BITS_PER_LONG)), then memsets the rest. That works fine, *if* all bits past the cutoff point are clear. Otherwise we are risking garbage from the last word we'd copied.
For most of the callers that is true - expand_fdtable() has count equal to old->max_fds, so there's no open descriptors past count, let alone fully occupied words in ->open_fds[], which is what bits in ->full_fds_bits[] correspond to.
The other caller (dup_fd()) passes sane_fdtable_size(old_fdt, max_fds), which is the smallest multiple of BITS_PER_LONG that covers all opened descriptors below max_fds. In the common case (copying on fork()) max_fds is ~0U, so all opened descriptors will be below it and we are fine, by the same reasons why the call in expand_fdtable() is safe.
Unfortunately, there is a case where max_fds is less than that and where we might, indeed, end up with junk in ->full_fds_bits[] - close_range(from, to, CLOSE_RANGE_UNSHARE) with * descriptor table being currently shared * 'to' being above the current capacity of descriptor table * 'from' being just under some chunk of opened descriptors. In that case we end up with observably wrong behaviour - e.g. spawn a child with CLONE_FILES, get all descriptors in range 0..127 open, then close_range(64, ~0U, CLOSE_RANGE_UNSHARE) and watch dup(0) ending up with descriptor #128, despite #64 being observably not open.
The minimally invasive fix would be to deal with that in dup_fd(). If this proves to add measurable overhead, we can go that way, but let's try to fix copy_fd_bitmaps() first.
* new helper: bitmap_copy_and_expand(to, from, bits_to_copy, size). * make copy_fd_bitmaps() take the bitmap size in words, rather than bits; it's 'count' argument is always a multiple of BITS_PER_LONG, so we are not losing any information, and that way we can use the same helper for all three bitmaps - compiler will see that count is a multiple of BITS_PER_LONG for the large ones, so it'll generate plain memcpy()+memset().
Reproducer added to tools/testing/selftests/core/close_range_test.c
Patch / fix
- Linux Linux 5.10.225, 5.15.166, 6.1.107, 6.6.48, 6.10.7, 6.11
- linux Debian 12 6.1.112-1
- linux Debian 14, Debian 13 6.10.7-1
debian advisories DEBIAN-CVE-2024-45025
- linux Ubuntu 22.04 LTS 5.15.0-125.135
- linux Ubuntu 24.04 LTS 6.8.0-50.51
- linux-aws Ubuntu 22.04 LTS 5.15.0-1072.78
- linux-aws Ubuntu 24.04 LTS 6.8.0-1020.22
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1071.79
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1019.21
- linux-gke Ubuntu 22.04 LTS 5.15.0-1069.75
- linux-gke Ubuntu 24.04 LTS 6.8.0-1015.19
ubuntu advisories UBUNTU-CVE-2024-45025
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-source Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
- kernel-default Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
- kernel-kvmsmall Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
- kernel-default-base Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1.21.4
- kernel-livepatch-MICRO-6-0_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.2
- kernel-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
- kernel-source-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
- kernel-livepatch-MICRO-6-0-RT_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.1
suse advisories SUSE-SU-2025:20164-1SUSE-SU-2025:20247-1SUSE-SU-2025:20163-1SUSE-SU-2025:20246-1SUSE-SU-2024:4387-1SUSE-SU-2024:4364-1
- kernel CBL-Mariner 2.0 5.15.167.1-1
- kernel Azure Linux 3.0 6.6.51.1-1
azure linux advisories AZL-49188AZL-49233
Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT
- git.kernel.org/stable/c/fe5bf14881701119aeeda7cf685f3c226c7380df commit
- git.kernel.org/stable/c/5053581fe5dfb09b58c65dd8462bf5dea71f41ff commit
- git.kernel.org/stable/c/8cad3b2b3ab81ca55f37405ffd1315bcc2948058 commit
- git.kernel.org/stable/c/dd72ae8b0fce9c0bbe9582b9b50820f0407f8d8a commit
- git.kernel.org/stable/c/c69d18f0ac7060de724511537810f10f29a27958 commit
- git.kernel.org/stable/c/9a2fa1472083580b6c66bdaf291f591e1170123a commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2024-45025 updated cvss 5.5
kernel: fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +82 moreaffected: workaround, no fix planned “No mitigation is available for this issue other than updating the affected package to the version containing the fix.”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
cisa ICSA-25-226-07 updated cvss 5.5
Siemens Third-Party Components in SINEC OS
-
Siemens RUGGEDCOM RST2428P (6GK6242-6PA00) < 3.2affected: fixed in V3.2 support.industry.siemens.com
-
Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family < 3.2affected: fixed in V3.2
-
Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family < 3.2affected: fixed in V3.2 support.industry.siemens.com
Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf
cisa ICSA-25-226-15 updated cvss 5.5
Siemens SINEC OS
-
Siemens RUGGEDCOM RST2428P (6GK6242-6PA00) < 3.1 Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family < 3.1affected: fixed in V3.1 support.industry.siemens.com
-
Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 familynot affected
Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 14% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-787 Out-of-bounds Write
- Technology feeds
References
-
git.kernel.org
/stable/c/fe5bf14881701119aeeda7cf685f3c226c7380df
patch
-
git.kernel.org
/stable/c/5053581fe5dfb09b58c65dd8462bf5dea71f41ff
patch
-
git.kernel.org
/stable/c/8cad3b2b3ab81ca55f37405ffd1315bcc2948058
patch
-
git.kernel.org
/stable/c/dd72ae8b0fce9c0bbe9582b9b50820f0407f8d8a
patch
-
git.kernel.org
/stable/c/c69d18f0ac7060de724511537810f10f29a27958
patch
-
git.kernel.org
/stable/c/9a2fa1472083580b6c66bdaf291f591e1170123a
patch
- lists.debian.org /debian-lts-announce/2025/01/msg00001.html
- lists.debian.org /debian-lts-announce/2024/10/msg00003.html
Sources
- CVE List CVE-2024-45025
- NVD CVE-2024-45025
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.