CVE-2025-22036
NoneCVSS
—
EPSS
0.2%
Published
Apr 16, 2025
CISA due date
—
Cloudanix analysis
A bug in how the operating system reads certain USB drives or external disks can let a local attacker damage memory and potentially gain full control of the computer.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free on a stack-allocated buffer_head in exfat_get_block during bh_read, allowing concurrent put_bh to corrupt stack memory after the original buffer_head goes out of scope.
Why it matters to the business
Systems running affected kernels with exFAT volumes may experience crashes, memory corruption, or local privilege escalation; widespread container tooling deployments increase exposure across many hosts.
How an attack unfolds
An attacker triggers a race during mpage_read_folio where one CPU holds a stack buffer_head while another performs end_buffer_read_sync and later put_bh, causing UAF write into stack variables of a subsequent function and enabling privilege escalation.
How to fix it
Upgrade the Linux kernel to commit 49b0a6ab8e528a0c1c50e37cef9b9c7c121365f2 or later; for Red Hat Enterprise Linux 9.2 systems also update podman packages to 2:4.4.1-21.el9_2 or newer.
How to confirm the fix worked
Verify the running kernel contains commit 49b0a6ab8e528a0c1c50e37cef9b9c7c121365f2; confirm podman packages report version 4.4.1-21.el9_2 or higher; test exFAT read workloads under concurrent I/O.
Typical attack path
- Mount an exFAT filesystem and trigger do_mpage_readpage on a folio without pre-existing buffers.
- Force concurrent bh_read and buffer completion paths across CPUs.
- Reuse the freed stack slot with attacker-controlled data via put_bh.
- Execute code or crash the kernel from the corrupted stack frame.
How to detect it
Search kernel logs for oops or stack traces mentioning exfat_get_block, bh_read, put_bh, or buffer_head UAF; inspect crash dumps for corrupted stack frames after exFAT I/O activity.
What your security team should do
- Apply kernel and podman updates within the next maintenance window.
- Restrict exFAT mounts to trusted media until patches are deployed.
- Monitor for kernel oops and stack trace patterns involving exfat_get_block and buffer_head.
The record
In the Linux kernel, the following vulnerability has been resolved: exfat: fix random stack corruption after get_block When get_block is called with a buffer_head allocated on the stack, such as do_mpage_readpage, stack corruption due to buffer_head UAF may occur in the following race condition situation. <CPU 0> <CPU 1> mpage_read_folio <<bh on stack>> do_mpage_readpage exfat_get_block bh_read __bh_read get_bh(bh) submit_bh wait_on_buffer ... end_buffer_read_sync __end_buffer_read_notouch unlock_buffer <<keep going>> ... ... ... ... <<bh is not valid out of mpage_read_folio>> . . another_function <<variable A on stack>> put_bh(bh) atomic_dec(bh->b_count) * stack corruption here * This patch returns -EAGAIN if a folio does not have buffers when bh_read needs to be called. By doing this, the caller can fallback to functions like block_read_full_folio(), create a buffer_head in the folio, and then call get_block again. Let's do not call bh_read() with on-stack buffer_head.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:10 | kernel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-devel-matched | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-devel-matched | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-64k-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-abi-stablelists | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-cross-headers | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-devel-matched | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-debug-uki-virt | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-devel-matched | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-doc | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-headers | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-kvm | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-kvm | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-rt-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-tools | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-tools-libs | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-tools-libs-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-uki-virt | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-uki-virt-addons | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-devel | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-devel-matched | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-modules | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-modules-core | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-modules-extra | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | libperf | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | perf | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | python3-perf | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | rtla | 0 | 6.12.0-55.21.1.el10_0 |
| AlmaLinux:10 | rv | 0 | 6.12.0-55.21.1.el10_0 |
| Debian:13 | linux | 0 | No fix |
| Debian:13 | linux | 0 | 6.12.25-1 |
| Linux | Kernel | 6.8.0 | 6.12.23 |
| SUSE:Linux Enterprise High Availability Extension 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise High Availability Extension 15 SP7 | kernel-default | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6-RT_Update_11 | 0 | 1-150600.1.3.2 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6_Update_11 | 0 | 1-150600.13.3.1 |
| SUSE:Linux Enterprise Live Patching 15 SP7 | kernel-default | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Live Patching 15 SP7 | kernel-livepatch-SLE15-SP7_Update_1 | 0 | 1-150700.15.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-64kb | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-default-base | 0 | 6.4.0-150600.23.50.1.150600.12.22.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-source | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-zfcpdump | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | kernel-64kb | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | kernel-default | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | kernel-default-base | 0 | 6.4.0-150700.53.3.1.150700.17.2.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | kernel-source | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | kernel-zfcpdump | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-coco | 0 | 6.4.0-15061.21.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-coco_debug | 0 | 6.4.0-15061.21.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-source-coco | 0 | 6.4.0-15061.21.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-syms-coco | 0 | 6.4.0-15061.21.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-docs | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-obs-build | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-source | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-syms | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP7 | kernel-docs | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP7 | kernel-obs-build | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP7 | kernel-source | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP7 | kernel-syms | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Legacy 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Module for Legacy 15 SP7 | kernel-default | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-azure | 0 | 6.4.0-150600.8.37.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-source-azure | 0 | 6.4.0-150600.8.37.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-syms-azure | 0 | 6.4.0-150600.8.37.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP7 | kernel-azure | 0 | 6.4.0-150700.20.3.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP7 | kernel-source-azure | 0 | 6.4.0-150700.20.3.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP7 | kernel-syms-azure | 0 | 6.4.0-150700.20.3.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.50.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP7 | kernel-default | 0 | 6.4.0-150700.53.3.1 |
| SUSE:Real Time Module 15 SP6 | kernel-rt | 0 | 6.4.0-150600.10.39.1 |
| SUSE:Real Time Module 15 SP6 | kernel-rt_debug | 0 | 6.4.0-150600.10.39.1 |
| SUSE:Real Time Module 15 SP6 | kernel-source-rt | 0 | 6.4.0-150600.10.39.1 |
| SUSE:Real Time Module 15 SP6 | kernel-syms-rt | 0 | 6.4.0-150600.10.39.1 |
| openSUSE:Leap 15.6 | dtb-aarch64 | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-64kb | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-azure | 0 | 6.4.0-150600.8.37.1 |
| openSUSE:Leap 15.6 | kernel-debug | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-default | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-default-base | 0 | 6.4.0-150600.23.50.1.150600.12.22.1 |
| openSUSE:Leap 15.6 | kernel-docs | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-kvmsmall | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-obs-build | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-obs-qa | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-rt | 0 | 6.4.0-150600.10.39.1 |
| openSUSE:Leap 15.6 | kernel-rt_debug | 0 | 6.4.0-150600.10.39.1 |
| openSUSE:Leap 15.6 | kernel-source | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-source-azure | 0 | 6.4.0-150600.8.37.1 |
| openSUSE:Leap 15.6 | kernel-source-rt | 0 | 6.4.0-150600.10.39.1 |
| openSUSE:Leap 15.6 | kernel-syms | 0 | 6.4.0-150600.23.50.1 |
| openSUSE:Leap 15.6 | kernel-syms-azure | 0 | 6.4.0-150600.8.37.1 |
| openSUSE:Leap 15.6 | kernel-syms-rt | 0 | 6.4.0-150600.10.39.1 |
| openSUSE:Leap 15.6 | kernel-zfcpdump | 0 | 6.4.0-150600.23.50.1 |
Related vulnerabilities
- CVE-2025-68285 In the Linux kernel, the following vulnerability has been resolved: libceph: fix… Also affects kernel
- CVE-2025-68287 In the Linux kernel, the following vulnerability has been resolved: usb: dwc3: Fix race… Also affects kernel
- CVE-2025-40277 In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: Validate… Also affects kernel
- CVE-2025-40240 In the Linux kernel, the following vulnerability has been resolved: sctp: avoid NULL… Also affects kernel
- CVE-2025-40185 In the Linux kernel, the following vulnerability has been resolved: ice: ice_adapter… Also affects kernel
- CVE-2025-40176 In the Linux kernel, the following vulnerability has been resolved: tls: wait for pending… Also affects kernel
- CVE-2025-40058 In the Linux kernel, the following vulnerability has been resolved: iommu/vt-d: Disallow… Also affects kernel
- CVE-2025-40047 In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid… Also affects kernel