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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-53111— mm/mremap: fix address wraparound in move_page_tables()

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存在安全漏洞,该漏洞源于mm/mremap组件中move_page_tables函数在32位平台上地址环绕问题。

CVSS 7.1 · High EPSS 0.21% · P10

Affected Version Matrix 6

VendorProduct Version RangeStatus
Linux Linux af8ca1c149069176e6322a77b532e3ffd99ccffe< 909543dc279a91122fb08e4653a72b82f0ad28f4 affected
af8ca1c149069176e6322a77b532e3ffd99ccffe< a4a282daf1a190f03790bf163458ea3c8d28d217 affected
6.7 affected
< 6.7 unaffected
6.11.10≤ 6.11.* unaffected
6.12≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-53111

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
mm/mremap: fix address wraparound in move_page_tables()
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: mm/mremap: fix address wraparound in move_page_tables() On 32-bit platforms, it is possible for the expression `len + old_addr < old_end` to be false-positive if `len + old_addr` wraps around. `old_addr` is the cursor in the old range up to which page table entries have been moved; so if the operation succeeded, `old_addr` is the *end* of the old region, and adding `len` to it can wrap. The overflow causes mremap() to mistakenly believe that PTEs have been copied; the consequence is that mremap() bails out, but doesn't move the PTEs back before the new VMA is unmapped, causing anonymous pages in the region to be lost. So basically if userspace tries to mremap() a private-anon region and hits this bug, mremap() will return an error and the private-anon region's contents appear to have been zeroed. The idea of this check is that `old_end - len` is the original start address, and writing the check that way also makes it easier to read; so fix the check by rearranging the comparison accordingly. (An alternate fix would be to refactor this function by introducing an "orig_old_start" variable or such.) Tested in a VM with a 32-bit X86 kernel; without the patch: ``` user@horn:~/big_mremap$ cat test.c #define _GNU_SOURCE #include <stdlib.h> #include <stdio.h> #include <err.h> #include <sys/mman.h> #define ADDR1 ((void*)0x60000000) #define ADDR2 ((void*)0x10000000) #define SIZE 0x50000000uL int main(void) { unsigned char *p1 = mmap(ADDR1, SIZE, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED_NOREPLACE, -1, 0); if (p1 == MAP_FAILED) err(1, "mmap 1"); unsigned char *p2 = mmap(ADDR2, SIZE, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED_NOREPLACE, -1, 0); if (p2 == MAP_FAILED) err(1, "mmap 2"); *p1 = 0x41; printf("first char is 0x%02hhx\n", *p1); unsigned char *p3 = mremap(p1, SIZE, SIZE, MREMAP_MAYMOVE|MREMAP_FIXED, p2); if (p3 == MAP_FAILED) { printf("mremap() failed; first char is 0x%02hhx\n", *p1); } else { printf("mremap() succeeded; first char is 0x%02hhx\n", *p3); } } user@horn:~/big_mremap$ gcc -static -o test test.c user@horn:~/big_mremap$ setarch -R ./test first char is 0x41 mremap() failed; first char is 0x00 ``` With the patch: ``` user@horn:~/big_mremap$ setarch -R ./test first char is 0x41 mremap() succeeded; first char is 0x41 ```
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
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存在安全漏洞,该漏洞源于mm/mremap组件中move_page_tables函数在32位平台上地址环绕问题。
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 af8ca1c149069176e6322a77b532e3ffd99ccffe ~ 909543dc279a91122fb08e4653a72b82f0ad28f4 -
Linux Linux 6.7 -

II. Public POCs for CVE-2024-53111

# 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-53111

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

Patches & Fixes for CVE-2024-53111 (2)

Same Patch Batch · Linux · 2024-12-02 · 22 CVEs total

CVE-2024-53103 7.8 HIGH hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer
CVE-2024-53121 7.8 HIGH net/mlx5: fs, lock FTE when checking if active
CVE-2024-53107 7.8 HIGH fs/proc/task_mmu: prevent integer overflow in pagemap_scan_get_args()
CVE-2024-53109 7.8 HIGH nommu: pass NULL argument to vma_iter_prealloc()
CVE-2024-53122 7.5 HIGH mptcp: cope racing subflow creation in mptcp_rcv_space_adjust
CVE-2024-53120 7.5 HIGH net/mlx5e: CT: Fix null-ptr-deref in add rule err flow
CVE-2024-53124 7.5 HIGH net: fix data-races around sk->sk_forward_alloc
CVE-2024-53106 7.3 HIGH ima: fix buffer overrun in ima_eventdigest_init_common
CVE-2024-53108 7.3 HIGH drm/amd/display: Adjust VSDB parser for replay feature
CVE-2024-53110 7.3 HIGH vp_vdpa: fix id_table array not null terminated error
CVE-2024-53114 x86/CPU/AMD: Clear virtualized VMLOAD/VMSAVE on Zen4 client
CVE-2024-53104 media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format
CVE-2024-53105 mm: page_alloc: move mlocked flag clearance into free_pages_prepare()
CVE-2024-53112 ocfs2: uncache inode which has failed entering the group
CVE-2024-53113 mm: fix NULL pointer dereference in alloc_pages_bulk_noprof
CVE-2024-53115 drm/vmwgfx: avoid null_ptr_deref in vmw_framebuffer_surface_create_handle
CVE-2024-53116 drm/panthor: Fix handling of partial GPU mapping of BOs
CVE-2024-53117 virtio/vsock: Improve MSG_ZEROCOPY error handling
CVE-2024-53119 virtio/vsock: Fix accept_queue memory leak
CVE-2024-53118 vsock: Fix sk_error_queue memory leak

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-53111

No comments yet


Leave a comment