CVE-2026-53199
hv_netvsc: use kmap_local_page in netvsc_copy_to_send_buf
Description
In the Linux kernel, the following vulnerability has been resolved: hv_netvsc: use kmap_local_page in netvsc_copy_to_send_buf netvsc_copy_to_send_buf() copies page buffer entries into the VMBus send buffer using phys_to_virt() on the entry PFN. Entries for the RNDIS header and the skb linear data come from kmalloc'd memory and are always in the kernel direct map, but entries for skb fragments reference page cache or user pages, which on 32-bit x86 with CONFIG_HIGHMEM=y can live above the LOWMEM boundary. For such a page phys_to_virt() returns an address outside the direct map and the subsequent memcpy() faults on the transmit softirq path, which is fatal. Map the pages with kmap_local_page() instead, handling two properties of the page buffer entries: - pb[i].pfn is a Hyper-V PFN at HV_HYP_PAGE_SIZE (4K) granularity, not a native PFN. Reconstruct the physical address first and derive the native page from it, so the mapping stays correct where PAGE_SIZE > HV_HYP_PAGE_SIZE (e.g. arm64 with 64K pages). - Since commit 41a6328b2c55 ("hv_netvsc: Preserve contiguous PFN grouping in the page buffer array"), an entry describes a full physically contiguous fragment and pb[i].len can exceed PAGE_SIZE, while kmap_local_page() maps a single page. Copy page by page, splitting at native page boundaries. The copy path only handles packets smaller than the send section size (6144 bytes by default); larger packets take the cp_partial path where only the RNDIS header is copied. So entries here are bounded by the section size and a copy is split at most once on 4K-page systems. On !CONFIG_HIGHMEM configs kmap_local_page() folds to page_address() and no mapping work is added.
INFO
Published Date :
June 25, 2026, 9:16 a.m.
Last Modified :
July 6, 2026, 12:32 p.m.
Remotely Exploit :
Yes !
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS 3.1 | HIGH | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
Solution
- Apply kernel updates or patches.
- Rebuild and deploy the Linux kernel.
- Ensure proper page mapping is used.
- Test the network driver functionality.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-53199.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-53199 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-53199
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-53199 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-53199 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
Initial Analysis by [email protected]
Jul. 06, 2026
Action Type Old Value New Value Added CWE NVD-CWE-noinfo Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.16 up to (excluding) 6.1.176 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.2 up to (excluding) 6.6.143 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.11 up to (excluding) 5.15.210 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.13 up to (excluding) 6.18.36 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.7 up to (excluding) 6.12.94 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.19 up to (excluding) 7.0.13 *cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.1:rc7:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 3.16 up to (excluding) 5.10.259 Added Reference Type kernel.org: https://git.kernel.org/stable/c/004e9ecfe6c5384f9e0b2f6f6389d42ec22789af Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/09b8a7aa5a341bb345dc492aac139525efa13515 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/0b38870d81ab3a04c1ab0598d9d3285f5d9d0584 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/16514afeb7d3d121072ba9a0b640d6c1c5507db0 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/695c59cf7bf707e6ff8cea01916ee50e86616933 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/918c0c988239aa5ab96b254e504d191af6191061 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/a82d4251918f37d9c5aab7b365157669fb885ec3 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/fe7221b4346418d27ec2daccfc09df6692b76f0b Types: Patch -
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Jun. 28, 2026
Action Type Old Value New Value Added CVSS V3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H -
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Jun. 25, 2026
Action Type Old Value New Value Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': '16514afeb7d3d121072ba9a0b640d6c1c5507db0', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': 'a82d4251918f37d9c5aab7b365157669fb885ec3', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': '695c59cf7bf707e6ff8cea01916ee50e86616933', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': '09b8a7aa5a341bb345dc492aac139525efa13515', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': '918c0c988239aa5ab96b254e504d191af6191061', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': '0b38870d81ab3a04c1ab0598d9d3285f5d9d0584', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': 'fe7221b4346418d27ec2daccfc09df6692b76f0b', 'versionType': 'git'}, {'status': 'affected', 'version': 'c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e', 'lessThan': '004e9ecfe6c5384f9e0b2f6f6389d42ec22789af', 'versionType': 'git'}], 'programFiles': ['drivers/net/hyperv/netvsc.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '3.16'}, {'status': 'unaffected', 'version': '0', 'lessThan': '3.16', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.259', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.210', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.176', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.143', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.94', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.36', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.0.13', 'versionType': 'semver', 'lessThanOrEqual': '7.0.*'}, {'status': 'unaffected', 'version': '7.1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/net/hyperv/netvsc.c'], 'defaultStatus': 'affected'}] Added Description In the Linux kernel, the following vulnerability has been resolved: hv_netvsc: use kmap_local_page in netvsc_copy_to_send_buf netvsc_copy_to_send_buf() copies page buffer entries into the VMBus send buffer using phys_to_virt() on the entry PFN. Entries for the RNDIS header and the skb linear data come from kmalloc'd memory and are always in the kernel direct map, but entries for skb fragments reference page cache or user pages, which on 32-bit x86 with CONFIG_HIGHMEM=y can live above the LOWMEM boundary. For such a page phys_to_virt() returns an address outside the direct map and the subsequent memcpy() faults on the transmit softirq path, which is fatal. Map the pages with kmap_local_page() instead, handling two properties of the page buffer entries: - pb[i].pfn is a Hyper-V PFN at HV_HYP_PAGE_SIZE (4K) granularity, not a native PFN. Reconstruct the physical address first and derive the native page from it, so the mapping stays correct where PAGE_SIZE > HV_HYP_PAGE_SIZE (e.g. arm64 with 64K pages). - Since commit 41a6328b2c55 ("hv_netvsc: Preserve contiguous PFN grouping in the page buffer array"), an entry describes a full physically contiguous fragment and pb[i].len can exceed PAGE_SIZE, while kmap_local_page() maps a single page. Copy page by page, splitting at native page boundaries. The copy path only handles packets smaller than the send section size (6144 bytes by default); larger packets take the cp_partial path where only the RNDIS header is copied. So entries here are bounded by the section size and a copy is split at most once on 4K-page systems. On !CONFIG_HIGHMEM configs kmap_local_page() folds to page_address() and no mapping work is added. Added Reference https://git.kernel.org/stable/c/004e9ecfe6c5384f9e0b2f6f6389d42ec22789af Added Reference https://git.kernel.org/stable/c/09b8a7aa5a341bb345dc492aac139525efa13515 Added Reference https://git.kernel.org/stable/c/0b38870d81ab3a04c1ab0598d9d3285f5d9d0584 Added Reference https://git.kernel.org/stable/c/16514afeb7d3d121072ba9a0b640d6c1c5507db0 Added Reference https://git.kernel.org/stable/c/695c59cf7bf707e6ff8cea01916ee50e86616933 Added Reference https://git.kernel.org/stable/c/918c0c988239aa5ab96b254e504d191af6191061 Added Reference https://git.kernel.org/stable/c/a82d4251918f37d9c5aab7b365157669fb885ec3 Added Reference https://git.kernel.org/stable/c/fe7221b4346418d27ec2daccfc09df6692b76f0b