Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-45025— fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于close_range组件存在位图损坏问题。

AI Predicted 5.5 Difficulty: Moderate EPSS 0.24% · P14

Possible ATT&CK Techniques 1 AI

T1003 · OS Credential Dumping

Affected Version Matrix 14

VendorProduct Version RangeStatus
Linux Linux 278a5fbaed89dacd04e9d052f4594ffd0e0585de< fe5bf14881701119aeeda7cf685f3c226c7380df affected
278a5fbaed89dacd04e9d052f4594ffd0e0585de< 5053581fe5dfb09b58c65dd8462bf5dea71f41ff affected
278a5fbaed89dacd04e9d052f4594ffd0e0585de< 8cad3b2b3ab81ca55f37405ffd1315bcc2948058 affected
278a5fbaed89dacd04e9d052f4594ffd0e0585de< dd72ae8b0fce9c0bbe9582b9b50820f0407f8d8a affected
278a5fbaed89dacd04e9d052f4594ffd0e0585de< c69d18f0ac7060de724511537810f10f29a27958 affected
278a5fbaed89dacd04e9d052f4594ffd0e0585de< 9a2fa1472083580b6c66bdaf291f591e1170123a affected
5.9 affected
< 5.9 unaffected
… +6 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-45025

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE
Source: CVE Program / CVE List V5
Vulnerability Description
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
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于close_range组件存在位图损坏问题。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux 278a5fbaed89dacd04e9d052f4594ffd0e0585de ~ fe5bf14881701119aeeda7cf685f3c226c7380df -
Linux Linux 5.9 -

II. Public POCs for CVE-2024-45025

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-45025

请登录查看更多情报信息。

Patches & Fixes for CVE-2024-45025 (8)

Same Patch Batch · Linux · 2024-09-11 · 23 CVEs total

CVE-2024-45030 9.8 CRITICAL igb: cope with large MAX_SKB_FRAGS
CVE-2024-45013 9.8 CRITICAL nvme: move stopping keep-alive into nvme_uninit_ctrl()
CVE-2024-45009 8.2 HIGH mptcp: pm: only decrement add_addr_accepted for MPJ req
CVE-2024-45019 7.8 HIGH net/mlx5e: Take state lock during tx timeout reporter
CVE-2024-45016 7.8 HIGH netem: fix return value if duplicate enqueue fails
CVE-2024-45017 7.8 HIGH net/mlx5: Fix IPsec RoCE MPV trace call
CVE-2024-45020 7.8 HIGH bpf: Fix a kernel verifier crash in stacksafe()
CVE-2024-45023 7.8 HIGH md/raid1: Fix data corruption for degraded array with slow disk
CVE-2024-45022 7.8 HIGH mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0
CVE-2024-45024 7.8 HIGH mm/hugetlb: fix hugetlb vs. core-mm PT locking
CVE-2024-45021 7.1 HIGH memcg_write_event_control(): fix a user-triggerable oops
CVE-2024-45026 7.0 HIGH s390/dasd: fix error recovery leading to data corruption on ESE devices
CVE-2024-46672 wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion
CVE-2024-45018 netfilter: flowtable: initialise extack before use
CVE-2024-45027 usb: xhci: Check for xhci->interrupters being allocated in xhci_mem_clearup()
CVE-2024-45014 s390/boot: Avoid possible physmem_info segment corruption
CVE-2024-45015 drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable()
CVE-2024-45012 nouveau/firmware: use dma non-coherent allocator
CVE-2024-45029 i2c: tegra: Do not mark ACPI devices as irq safe
CVE-2024-45011 char: xillybus: Check USB endpoints when probing device

Showing top 20 of 23 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2024-45025

No comments yet


Leave a comment