CVE-2026-46289
Critical · 9.8CVSS
9.8
EPSS
0.5%
Published
Jun 8, 2026
CISA due date
—
Cloudanix analysis
A flaw in the Linux operating system core could let an attacker crash or potentially take over vulnerable machines if they can reach the affected data-handling path.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This flaw is a Linux kernel memory-corruption issue in scatterlist handling, specifically in extract_kvec_to_sg()/extract_iter_to_sg(). Under certain I/O iterator extraction paths, the kernel can calculate a scatterlist entry length that crosses a page boundary or mishandle scratch space when scatterlist entries already exist. If reachable through a kernel subsystem exposed to an attacker, this can corrupt memory, cause a kernel crash, or potentially enable arbitrary kernel memory manipulation leading to privilege escalation or remote code execution, depending on the calling path and system configuration.
Why it matters to the business
Successful exploitation could result in full compromise or outage of affected Linux systems. Because the vulnerability is in core kernel memory-handling code, impact may include service disruption, data exposure, tampering, and complete host takeover. Although the EPSS score is currently low, the CVSS severity is critical and the flaw has been public for over 60 days, so organizations running affected kernel versions should prioritize patching, especially on internet-facing, multi-tenant, container-hosting, storage, file-serving, or network-exposed Linux systems.
How an attack unfolds
An attacker would first need to reach a kernel code path that uses the affected I/O iterator-to-scatterlist conversion logic. They would then supply crafted input that causes extraction from a kvec or user buffer into a scatterlist with boundary conditions that trigger the incorrect length calculation or overlapping scratch-buffer behavior. If the vulnerable path is reachable without authentication, exploitation could be remote; in other deployments, exploitation may require local access, a specific protocol, or access to a service that exercises the vulnerable kernel functionality. A failed attempt may crash the kernel, while a successful attempt could corrupt kernel memory in a controlled way and potentially execute code with kernel privileges.
How to fix it
Upgrade to a Linux kernel build that contains the upstream fix for the scatterlist length-calculation and iterator extraction bugs. Because the fix was marked for backport to v6.5 and later stable trees, use vendor-supported patched kernels rather than relying only on upstream version numbers. If immediate patching is not possible, reduce exposure by limiting untrusted access to services and workloads that exercise kernel I/O paths, disabling or isolating high-risk network-facing services where feasible, avoiding untrusted local users or containers on affected hosts, and applying kernel hardening controls such as lockdown, module restrictions, SELinux/AppArmor confinement, and rapid reboot-on-panic handling. Mitigations should be treated as temporary because the vulnerable code is in the kernel.
How to confirm the fix worked
Confirm the running kernel has been updated to a vendor release that includes the fix for CVE-2026-46289 or the corresponding upstream scatterlist/extract_iter_to_sg patch set. Validate both the installed kernel package and the actively running kernel after reboot using standard package inventory and uname checks. For source-built kernels, verify that the extract_kvec_to_sg logic does not allow scatterlist entry lengths to cross page boundaries and that extract_iter_to_sg handles zero scatterlist entries and partial extraction correctly. Where practical, run vendor regression tests or the relevant KUnit iov_iter/scatterlist tests that cover the fixed boundary conditions.
Typical attack path
- Identify a Linux system running a kernel version containing the vulnerable scatterlist extraction logic introduced in the 6.3 kernel series and later moved into lib/scatterlist.c in 6.5.
- Find an exposed local or remote kernel-facing interface that causes data to flow through extract_iter_to_sg()/extract_kvec_to_sg().
- Send crafted input that forces scatterlist extraction near a page boundary or into a partially populated scatterlist.
- Trigger the incorrect length or scratch-buffer handling condition.
- Use the resulting memory corruption to crash the system, leak or alter kernel memory, or attempt kernel-level code execution.
- If code execution is achieved, establish persistence or pivot using full host privileges.
How to detect it
There are no public, reliable, CVE-specific indicators of exploitation from the provided information. Detection should focus on evidence of attempted kernel memory corruption and post-exploitation activity. Review kernel logs, journal entries, crash dumps, netconsole output, hypervisor reset events, and endpoint telemetry for unexplained kernel oopses, panics, general protection faults, page faults, slab corruption, or BUG/WARN reports involving scatterlist, iov_iter, extract_iter_to_sg, extract_kvec_to_sg, netfs, storage, splice/sendfile-like I/O, or network data paths. Correlate crashes with inbound network activity, unusual local workload activity, container escape attempts, or service requests immediately preceding the fault. If a system crashed unexpectedly, preserve vmcore/kdump artifacts and compare loaded modules, kernel version, and recent process/network activity. Also hunt for signs of successful kernel-level compromise, including unexpected root processes, newly loaded kernel modules, disabled security controls, modified startup services, suspicious privileged binaries, or tampering with logs.
- extract_kvec_to_sg
- extract_iter_to_sg
- lib/scatterlist.c
- BUG: kernel NULL pointer dereference
- BUG: unable to handle page fault
- general protection fault
- kernel panic
- Oops:
- WARNING: CPU:
- KASAN: slab-out-of-bounds
- KASAN: use-after-free
- BUG: Bad page state
- list_del corruption
- slab corruption
- scatterlist
- iov_iter
What your security team should do
- Inventory Linux systems and identify kernels derived from affected 6.3+ code, especially 6.5+ stable/vendor kernels before the relevant backport.
- Prioritize patching internet-facing, multi-tenant, container-hosting, virtualization, storage, and file-serving Linux systems.
- Reboot systems after kernel updates and verify the patched kernel is the one currently running.
- Review kernel oops, panic, and crash logs for unusual scatterlist, iov_iter, netfs, storage, or network I/O related faults since publication.
- Temporarily restrict untrusted local users, containers, and exposed services on systems that cannot be patched quickly.
- Monitor vendor advisories for exact fixed package versions and backport status for each Linux distribution in use.
- Ensure crash dump collection and centralized kernel logging are enabled so possible exploitation attempts can be investigated.
The record
In the Linux kernel, the following vulnerability has been resolved: lib/scatterlist: fix length calculations in extract_kvec_to_sg Patch series "Fix bugs in extract_iter_to_sg()", v3. Fix bugs in the kvec and user variants of extract_iter_to_sg. This series is growing due to useful remarks made by sashiko.dev. The main bugs are: - The length for an sglist entry when extracting from a kvec can exceed the number of bytes in the page. This is obviously not intended. - When extracting a user buffer the sglist is temporarily used as a scratch buffer for extracted page pointers. If the sglist already contains some elements this scratch buffer could overlap with existing entries in the sglist. The series adds test cases to the kunit_iov_iter test that demonstrate all of these bugs. Additionally, there is a memory leak fix for the test itself. The bugs were orignally introduced into kernel v6.3 where the function lived in fs/netfs/iterator.c. It was later moved to lib/scatterlist.c in v6.5. Thus the actual fix is only marked for backports to v6.5+. This patch (of 5): When extracting from a kvec to a scatterlist, do not cross page boundaries. The required length was already calculated but not used as intended. Adjust the copied length if the loop runs out of sglist entries without extracting everything. While there, return immediately from extract_iter_to_sg if there are no sglist entries at all. A subsequent commit will add kunit test cases that demonstrate that the patch is necessary.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Tumbleweed | kernel-source | 0 | 7.0.12-1.1 |
Related vulnerabilities
- CVE-2026-53354 In the Linux kernel, the following vulnerability has been resolved: arm64: errata… Also affects kernel-source
- CVE-2026-53325 In the Linux kernel, the following vulnerability has been resolved: agp/amd64: Fix broken… Also affects kernel-source
- CVE-2026-52946 In the Linux kernel, the following vulnerability has been resolved: fs/fcntl: fix… Also affects kernel-source
- CVE-2026-52907 In the Linux kernel, the following vulnerability has been resolved: media: rockchip… Also affects kernel-source
- CVE-2026-52906 In the Linux kernel, the following vulnerability has been resolved: 9p: fix access mode… Also affects kernel-source
- CVE-2026-52905 In the Linux kernel, the following vulnerability has been resolved: mm/damon/core… Also affects kernel-source
- CVE-2026-52904 In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: fix… Also affects kernel-source
- CVE-2026-46332 In the Linux kernel, the following vulnerability has been resolved: greybus… Also affects kernel-source