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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-23077— mm/vma: fix anon_vma UAF on mremap() faulted, unfaulted merge

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存在安全漏洞,该漏洞源于合并处理不当,可能导致释放后重用。

CVSS 7.8 · High EPSS 0.16% · P4

Affected Version Matrix 6

VendorProduct Version RangeStatus
Linux Linux 879bca0a2c4f40b08d09a95a2a0c3c6513060b5c< a4d9dbfc1bab16e25fefd34b5e537a46bed8fc96 affected
879bca0a2c4f40b08d09a95a2a0c3c6513060b5c< 61f67c230a5e7c741c352349ea80147fbe65bfae affected
6.16 affected
< 6.16 unaffected
6.18.8≤ 6.18.* unaffected
6.19≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-23077

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/vma: fix anon_vma UAF on mremap() faulted, unfaulted merge
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: mm/vma: fix anon_vma UAF on mremap() faulted, unfaulted merge Patch series "mm/vma: fix anon_vma UAF on mremap() faulted, unfaulted merge", v2. Commit 879bca0a2c4f ("mm/vma: fix incorrectly disallowed anonymous VMA merges") introduced the ability to merge previously unavailable VMA merge scenarios. However, it is handling merges incorrectly when it comes to mremap() of a faulted VMA adjacent to an unfaulted VMA. The issues arise in three cases: 1. Previous VMA unfaulted: copied -----| v |-----------|.............| | unfaulted |(faulted VMA)| |-----------|.............| prev 2. Next VMA unfaulted: copied -----| v |.............|-----------| |(faulted VMA)| unfaulted | |.............|-----------| next 3. Both adjacent VMAs unfaulted: copied -----| v |-----------|.............|-----------| | unfaulted |(faulted VMA)| unfaulted | |-----------|.............|-----------| prev next This series fixes each of these cases, and introduces self tests to assert that the issues are corrected. I also test a further case which was already handled, to assert that my changes continues to correctly handle it: 4. prev unfaulted, next faulted: copied -----| v |-----------|.............|-----------| | unfaulted |(faulted VMA)| faulted | |-----------|.............|-----------| prev next This bug was discovered via a syzbot report, linked to in the first patch in the series, I confirmed that this series fixes the bug. I also discovered that we are failing to check that the faulted VMA was not forked when merging a copied VMA in cases 1-3 above, an issue this series also addresses. I also added self tests to assert that this is resolved (and confirmed that the tests failed prior to this). I also cleaned up vma_expand() as part of this work, renamed vma_had_uncowed_parents() to vma_is_fork_child() as the previous name was unduly confusing, and simplified the comments around this function. This patch (of 4): Commit 879bca0a2c4f ("mm/vma: fix incorrectly disallowed anonymous VMA merges") introduced the ability to merge previously unavailable VMA merge scenarios. The key piece of logic introduced was the ability to merge a faulted VMA immediately next to an unfaulted VMA, which relies upon dup_anon_vma() to correctly handle anon_vma state. In the case of the merge of an existing VMA (that is changing properties of a VMA and then merging if those properties are shared by adjacent VMAs), dup_anon_vma() is invoked correctly. However in the case of the merge of a new VMA, a corner case peculiar to mremap() was missed. The issue is that vma_expand() only performs dup_anon_vma() if the target (the VMA that will ultimately become the merged VMA): is not the next VMA, i.e. the one that appears after the range in which the new VMA is to be established. A key insight here is that in all other cases other than mremap(), a new VMA merge either expands an existing VMA, meaning that the target VMA will be that VMA, or would have anon_vma be NULL. Specifically: * __mmap_region() - no anon_vma in place, initial mapping. * do_brk_flags() - expanding an existing VMA. * vma_merge_extend() - expanding an existing VMA. * relocate_vma_down() - no anon_vma in place, initial mapping. In addition, we are in the unique situation of needing to duplicate anon_vma state from a VMA that is neither the previous or next VMA being merged with. dup_anon_vma() deals exclusively with the target=unfaulted, src=faulted case. This leaves four possibilities, in each case where the copied VMA is faulted: 1. Previous VMA unfaulted: copied -----| ---truncated---
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/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存在安全漏洞,该漏洞源于合并处理不当,可能导致释放后重用。
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 879bca0a2c4f40b08d09a95a2a0c3c6513060b5c ~ a4d9dbfc1bab16e25fefd34b5e537a46bed8fc96 -
Linux Linux 6.16 -

II. Public POCs for CVE-2026-23077

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

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-23077

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

Same Patch Batch · Linux · 2026-02-04 · 79 CVEs total

CVE-2026-23098 8.8 HIGH netrom: fix double-free in nr_route_frame()
CVE-2026-23066 7.8 HIGH rxrpc: Fix recvmsg() unconditional requeue
CVE-2026-23074 7.8 HIGH net/sched: Enforce that teql can only be used as root qdisc
CVE-2026-23105 7.8 HIGH net/sched: qfq: Use cl_is_active to determine whether class is active in qfq_rm_from_ag
CVE-2026-23103 7.8 HIGH ipvlan: Make the addrs_lock be per port
CVE-2026-23095 7.5 HIGH gue: Fix skb memleak with inner IP protocol 0.
CVE-2025-71192 7.0 HIGH ALSA: ac97: fix a double free in snd_ac97_controller_register()
CVE-2026-23063 uacce: ensure safe queue release with state management
CVE-2026-23065 platform/x86/amd: Fix memory leak in wbrf_record()
CVE-2026-23064 net/sched: act_ife: avoid possible NULL deref
CVE-2026-23067 iommu/io-pgtable-arm: fix size_t signedness bug in unmap path
CVE-2026-23059 scsi: qla2xxx: Sanitize payload size to prevent member overflow
CVE-2026-23058 can: ems_usb: ems_usb_read_bulk_callback(): fix URB memory leak
CVE-2026-23057 vsock/virtio: Coalesce only linear skb
CVE-2026-23056 uacce: implement mremap in uacce_vm_ops to return -EPERM
CVE-2025-71199 iio: adc: at91-sama5d2_adc: Fix potential use-after-free in sama5d2_adc driver
CVE-2025-71198 iio: imu: st_lsm6dsx: fix iio_chan_spec for sensors without event detection
CVE-2025-71197 w1: therm: Fix off-by-one buffer overflow in alarms_store
CVE-2026-23055 i2c: riic: Move suspend handling to NOIRQ phase
CVE-2026-23060 crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec

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

IV. Related Vulnerabilities

V. Comments for CVE-2026-23077

No comments yet


Leave a comment