Cyber Posture

CVE-2025-71201

High

Published: 14 February 2026

Published
14 February 2026
Modified
17 March 2026
KEV Added
Patch
CVSS Score 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
EPSS Score 0.0002 5.4th percentile
Risk Priority 14 60% EPSS · 20% KEV · 20% CVSS

Summary

CVE-2025-71201 is a high-severity Out-of-bounds Read (CWE-125) vulnerability in Linux Linux Kernel. Its CVSS base score is 7.1 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique Data from Local System (T1005); ranked at the 5.4th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.

Threat & Defense at a Glance

What attackers do: exploitation maps to Data from Local System (T1005).
Threat & Defense Details

MITRE ATT&CK Enterprise TechniquesAI

T1005 Data from Local System Collection
Adversaries may search local system sources, such as file systems, configuration files, local databases, virtual machine files, or process memory, to find files of interest and sensitive data prior to Exfiltration.
Why these techniques?

Local OOB read in netfs enables direct extraction of residual sensitive memory contents from the local system.

Confidence: MEDIUM · MITRE ATT&CK Enterprise v18.1

NVD Description

In the Linux kernel, the following vulnerability has been resolved: netfs: Fix early read unlock of page with EOF in middle The read result collection for buffered reads seems to run ahead of the completion of subrequests under some circumstances,…

more

as can be seen in the following log snippet: 9p_client_res: client 18446612686390831168 response P9_TREAD tag 0 err 0 ... netfs_sreq: R=00001b55[1] DOWN TERM f=192 s=0 5fb2/5fb2 s=5 e=0 ... netfs_collect_folio: R=00001b55 ix=00004 r=4000-5000 t=4000/5fb2 netfs_folio: i=157f3 ix=00004-00004 read-done netfs_folio: i=157f3 ix=00004-00004 read-unlock netfs_collect_folio: R=00001b55 ix=00005 r=5000-5fb2 t=5000/5fb2 netfs_folio: i=157f3 ix=00005-00005 read-done netfs_folio: i=157f3 ix=00005-00005 read-unlock ... netfs_collect_stream: R=00001b55[0:] cto=5fb2 frn=ffffffff netfs_collect_state: R=00001b55 col=5fb2 cln=6000 n=c netfs_collect_stream: R=00001b55[0:] cto=5fb2 frn=ffffffff netfs_collect_state: R=00001b55 col=5fb2 cln=6000 n=8 ... netfs_sreq: R=00001b55[2] ZERO SUBMT f=000 s=5fb2 0/4e s=0 e=0 netfs_sreq: R=00001b55[2] ZERO TERM f=102 s=5fb2 4e/4e s=5 e=0 The 'cto=5fb2' indicates the collected file pos we've collected results to so far - but we still have 0x4e more bytes to go - so we shouldn't have collected folio ix=00005 yet. The 'ZERO' subreq that clears the tail happens after we unlock the folio, allowing the application to see the uncleared tail through mmap. The problem is that netfs_read_unlock_folios() will unlock a folio in which the amount of read results collected hits EOF position - but the ZERO subreq lies beyond that and so happens after. Fix this by changing the end check to always be the end of the folio and never the end of the file. In the future, I should look at clearing to the end of the folio here rather than adding a ZERO subreq to do this. On the other hand, the ZERO subreq can run in parallel with an async READ subreq. Further, the ZERO subreq may still be necessary to, say, handle extents in a ceph file that don't have any backing store and are thus implicitly all zeros. This can be reproduced by creating a file, the size of which doesn't align to a page boundary, e.g. 24998 (0x5fb2) bytes and then doing something like: xfs_io -c "mmap -r 0 0x6000" -c "madvise -d 0 0x6000" \ -c "mread -v 0 0x6000" /xfstest.test/x The last 0x4e bytes should all be 00, but if the tail hasn't been cleared yet, you may see rubbish there. This can be reproduced with kafs by modifying the kernel to disable the call to netfs_read_subreq_progress() and to stop afs_issue_read() from doing the async call for NETFS_READAHEAD. Reproduction can be made easier by inserting an mdelay(100) in netfs_issue_read() for the ZERO-subreq case. AFS and CIFS are normally unlikely to show this as they dispatch READ ops asynchronously, which allows the ZERO-subreq to finish first. 9P's READ op is completely synchronous, so the ZERO-subreq will always happen after. It isn't seen all the time, though, because the collection may be done in a worker thread.

Deeper analysisAI

CVE-2025-71201 is a vulnerability in the Linux kernel's netfs subsystem, which provides helper functions for network filesystems such as 9p, AFS, CIFS, and Ceph. The issue occurs during buffered reads when the end-of-file (EOF) falls in the middle of a page (folio). The read result collection can unlock the folio prematurely before a ZERO subrequest clears the uncleared tail beyond EOF, exposing residual data from previous contents. This is rated CVSS 7.1 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H) and mapped to CWE-125 (Out-of-bounds Read).

A local attacker with low privileges can exploit this by creating a file whose size does not align to a page boundary (e.g., 0x5fb2 bytes) on an affected filesystem, then using tools like xfs_io to mmap the file, madvise it for don't-need, and perform a read operation. Through mmap, the application may observe garbage data in the uncleared tail bytes instead of zeros, leading to unauthorized access to sensitive residual memory contents and potential denial of service.

The provided kernel patches mitigate the issue by modifying netfs_read_unlock_folios() to always check to the end of the folio rather than the EOF position for unlocking. The fixes are available in the following commits: https://git.kernel.org/stable/c/570ad253a3455a520f03c2136af8714bc780186d and https://git.kernel.org/stable/c/5b5482c0e5ee740b35a70759d3582477aea8e8e4. The patches note that future optimizations might clear directly to the folio end, but the ZERO subrequest remains useful for parallel operations and certain filesystem extents.

Details

CWE(s)

Affected Products

linux
linux kernel
6.19 · 6.14 — 6.18.6

CVEs Like This One

CVE-2025-71231Same product: Linux Linux Kernel
CVE-2026-31614Same product: Linux Linux Kernel
CVE-2024-58015Same product: Linux Linux Kernel
CVE-2024-52332Same product: Linux Linux Kernel
CVE-2025-71093Same product: Linux Linux Kernel
CVE-2026-23397Same product: Linux Linux Kernel
CVE-2025-21742Same product: Linux Linux Kernel
CVE-2024-58007Same product: Linux Linux Kernel
CVE-2025-71133Same product: Linux Linux Kernel
CVE-2025-21789Same product: Linux Linux Kernel

References