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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2022-50014— mm/gup: fix FOLL_FORCE COW security issue and remove FOLL_COW

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存在安全漏洞,该漏洞源于FOLL_FORCE COW安全问题。

CVSS 7.8 · High EPSS 0.18% · P7

Affected Version Matrix 6

VendorProduct Version RangeStatus
Linux Linux 9ae0f87d009ca6c4aab2882641ddfc319727e3db< 9def52eb10baab3b700858003d462fcf17d62873 affected
9ae0f87d009ca6c4aab2882641ddfc319727e3db< 5535be3099717646781ce1540cf725965d680e7b affected
5.16 affected
< 5.16 unaffected
5.19.6≤ 5.19.* unaffected
6.0≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2022-50014

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/gup: fix FOLL_FORCE COW security issue and remove FOLL_COW
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: mm/gup: fix FOLL_FORCE COW security issue and remove FOLL_COW Ever since the Dirty COW (CVE-2016-5195) security issue happened, we know that FOLL_FORCE can be possibly dangerous, especially if there are races that can be exploited by user space. Right now, it would be sufficient to have some code that sets a PTE of a R/O-mapped shared page dirty, in order for it to erroneously become writable by FOLL_FORCE. The implications of setting a write-protected PTE dirty might not be immediately obvious to everyone. And in fact ever since commit 9ae0f87d009c ("mm/shmem: unconditionally set pte dirty in mfill_atomic_install_pte"), we can use UFFDIO_CONTINUE to map a shmem page R/O while marking the pte dirty. This can be used by unprivileged user space to modify tmpfs/shmem file content even if the user does not have write permissions to the file, and to bypass memfd write sealing -- Dirty COW restricted to tmpfs/shmem (CVE-2022-2590). To fix such security issues for good, the insight is that we really only need that fancy retry logic (FOLL_COW) for COW mappings that are not writable (!VM_WRITE). And in a COW mapping, we really only broke COW if we have an exclusive anonymous page mapped. If we have something else mapped, or the mapped anonymous page might be shared (!PageAnonExclusive), we have to trigger a write fault to break COW. If we don't find an exclusive anonymous page when we retry, we have to trigger COW breaking once again because something intervened. Let's move away from this mandatory-retry + dirty handling and rely on our PageAnonExclusive() flag for making a similar decision, to use the same COW logic as in other kernel parts here as well. In case we stumble over a PTE in a COW mapping that does not map an exclusive anonymous page, COW was not properly broken and we have to trigger a fake write-fault to break COW. Just like we do in can_change_pte_writable() added via commit 64fe24a3e05e ("mm/mprotect: try avoiding write faults for exclusive anonymous pages when changing protection") and commit 76aefad628aa ("mm/mprotect: fix soft-dirty check in can_change_pte_writable()"), take care of softdirty and uffd-wp manually. For example, a write() via /proc/self/mem to a uffd-wp-protected range has to fail instead of silently granting write access and bypassing the userspace fault handler. Note that FOLL_FORCE is not only used for debug access, but also triggered by applications without debug intentions, for example, when pinning pages via RDMA. This fixes CVE-2022-2590. Note that only x86_64 and aarch64 are affected, because only those support CONFIG_HAVE_ARCH_USERFAULTFD_MINOR. Fortunately, FOLL_COW is no longer required to handle FOLL_FORCE. So let's just get rid of it. Thanks to Nadav Amit for pointing out that the pte_dirty() check in FOLL_FORCE code is problematic and might be exploitable. Note 1: We don't check for the PTE being dirty because it doesn't matter for making a "was COWed" decision anymore, and whoever modifies the page has to set the page dirty either way. Note 2: Kernels before extended uffd-wp support and before PageAnonExclusive (< 5.19) can simply revert the problematic commit instead and be safe regarding UFFDIO_CONTINUE. A backport to v5.19 requires minor adjustments due to lack of vma_soft_dirty_enabled().
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存在安全漏洞,该漏洞源于FOLL_FORCE COW安全问题。
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 9ae0f87d009ca6c4aab2882641ddfc319727e3db ~ 9def52eb10baab3b700858003d462fcf17d62873 -
Linux Linux 5.16 -

II. Public POCs for CVE-2022-50014

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

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2022-50014

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

Same Patch Batch · Linux · 2025-06-18 · 362 CVEs total

CVE-2025-38075 9.8 CRITICAL scsi: target: iscsi: Fix timeout on deleted connection
CVE-2022-50098 8.8 HIGH scsi: qla2xxx: Fix crash due to stale SRB access around I/O timeouts
CVE-2022-49934 8.8 HIGH wifi: mac80211: Fix UAF in ieee80211_scan_rx()
CVE-2022-50164 8.8 HIGH wifi: iwlwifi: mvm: fix double list_add at iwl_mvm_mac_wake_tx_queue
CVE-2025-38074 8.8 HIGH vhost-scsi: protect vq->log_used with vq->mutex
CVE-2022-49974 8.8 HIGH HID: nintendo: fix rumble worker null pointer deref
CVE-2025-38016 8.8 HIGH HID: bpf: abort dispatch if device destroyed
CVE-2025-38052 8.8 HIGH net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done
CVE-2022-49968 8.0 HIGH ieee802154/adf7242: defer destroy_workqueue call
CVE-2022-49939 7.8 HIGH binder: fix UAF of ref->proc caused by race condition
CVE-2022-50101 7.8 HIGH video: fbdev: vt8623fb: Check the size of screen before memset_io()
CVE-2022-49935 7.8 HIGH dma-buf/dma-resv: check if the new fence is really later
CVE-2022-49948 7.8 HIGH vt: Clear selection before changing the font
CVE-2025-38082 7.8 HIGH gpio: virtuser: fix potential out-of-bound write
CVE-2022-50182 7.8 HIGH media: imx-jpeg: Align upwards buffer size
CVE-2025-38080 7.8 HIGH drm/amd/display: Increase block_sequence array size
CVE-2025-38079 7.8 HIGH crypto: algif_hash - fix double free in hash_accept
CVE-2025-38058 7.8 HIGH __legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock
CVE-2025-38065 7.8 HIGH orangefs: Do not truncate file size
CVE-2025-38068 7.8 HIGH crypto: lzo - Fix compression buffer overrun

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

IV. Related Vulnerabilities

V. Comments for CVE-2022-50014

No comments yet


Leave a comment