CVE-2025-38081
High · 7.1CVSS
7.1
EPSS
0.2%
Published
Jun 18, 2025
CISA due date
—
Cloudanix analysis
A driver bug in certain Linux systems could let an attacker corrupt memory by using the wrong kind of chip select on SPI hardware, potentially crashing machines or allowing deeper access.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The spi-rockchip driver performed register writes using native chip-select indices even when GPIO chip selects were configured, allowing out-of-bounds access because GPIO numbers can exceed the native CS range.
Why it matters to the business
Systems running affected Linux kernels on Rockchip platforms using SPI with GPIO chip selects risk crashes, memory corruption, or denial of service; the large number of downstream kernel dependents increases exposure across embedded and server deployments.
How an attack unfolds
An attacker with the ability to load or trigger the spi-rockchip driver configures a GPIO-based chip select, then issues SPI transactions that cause the driver to index and write beyond valid register bounds, resulting in memory corruption; listed threat actors and related privilege-escalation CVEs indicate potential chaining in Linux kernel environments.
How to fix it
Update to a kernel containing commit 4a120221661fcecb253448d7b041a52d47f1d91f or later; for Mageia 5 packages upgrade cgit to 0.12-1.mga5 or newer; disable affected SPI controllers if immediate patching is impossible.
How to confirm the fix worked
Verify the presence of commit 4a120221661fcecb253448d7b041a52d47f1d91f in the kernel source or running kernel version; inspect spi-rockchip.c to confirm the added guard that skips native CS writes for GPIO selects.
Typical attack path
- Identify or control a system using the spi-rockchip driver with GPIO chip selects
- Trigger SPI device initialization or transfer operations that invoke native CS handling
- Cause the driver to compute an out-of-bounds register address and perform a write
- Exploit resulting memory corruption for crash, information leak, or escalation
How to detect it
Review kernel logs for spi-rockchip register access warnings or oopses involving out-of-range CS indices; examine SPI device tree entries and driver initialization traces for GPIO chip-select configurations; correlate with any listed threat-actor tooling that targets similar kernel drivers.
What your security team should do
- Apply the referenced kernel commit or distribution update immediately given the 496 days since publication
- Audit Rockchip-based devices for SPI-GPIO chip-select usage and prioritize patching those systems
- Monitor for related Linux kernel privilege-escalation activity listed under the threat actors
- Test SPI functionality post-update to ensure GPIO chip-select behavior remains correct
The record
In the Linux kernel, the following vulnerability has been resolved: spi-rockchip: Fix register out of bounds access Do not write native chip select stuff for GPIO chip selects. GPIOs can be numbered much higher than native CS. Also, it makes no sense.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | linux | 0 | No fix |
| Debian:12 | linux | 0 | No fix |
| Debian:13 | linux | 0 | 6.12.32-1 |
| Linux | Kernel | 5.14.0 | 6.6.93 |
| SUSE:Linux Enterprise High Availability Extension 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.60.5 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.60.5 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6-RT_Update_13 | 0 | 1-150600.1.5.1 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6_Update_13 | 0 | 1-150600.13.6.4 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-64kb | 0 | 6.4.0-150600.23.60.4 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.60.5 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-default-base | 0 | 6.4.0-150600.23.60.5.150600.12.26.4 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-source | 0 | 6.4.0-150600.23.60.4 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-zfcpdump | 0 | 6.4.0-150600.23.60.4 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-coco | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-coco_debug | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-source-coco | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-syms-coco | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-docs | 0 | 6.4.0-150600.23.60.3 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-obs-build | 0 | 6.4.0-150600.23.60.3 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-source | 0 | 6.4.0-150600.23.60.4 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-syms | 0 | 6.4.0-150600.23.60.4 |
| SUSE:Linux Enterprise Module for Legacy 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.60.5 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-azure | 0 | 6.4.0-150600.8.43.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-source-azure | 0 | 6.4.0-150600.8.43.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-syms-azure | 0 | 6.4.0-150600.8.43.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.60.5 |
| SUSE:Real Time Module 15 SP6 | kernel-rt | 0 | 6.4.0-150600.10.44.1 |
| SUSE:Real Time Module 15 SP6 | kernel-rt_debug | 0 | 6.4.0-150600.10.44.1 |
| SUSE:Real Time Module 15 SP6 | kernel-source-rt | 0 | 6.4.0-150600.10.44.1 |
| SUSE:Real Time Module 15 SP6 | kernel-syms-rt | 0 | 6.4.0-150600.10.44.1 |
| openSUSE:Leap 15.6 | dtb-aarch64 | 0 | 6.4.0-150600.23.60.3 |
| openSUSE:Leap 15.6 | kernel-64kb | 0 | 6.4.0-150600.23.60.4 |
| openSUSE:Leap 15.6 | kernel-azure | 0 | 6.4.0-150600.8.43.1 |
| openSUSE:Leap 15.6 | kernel-debug | 0 | 6.4.0-150600.23.60.4 |
| openSUSE:Leap 15.6 | kernel-default | 0 | 6.4.0-150600.23.60.5 |
| openSUSE:Leap 15.6 | kernel-default-base | 0 | 6.4.0-150600.23.60.5.150600.12.26.4 |
| openSUSE:Leap 15.6 | kernel-docs | 0 | 6.4.0-150600.23.60.3 |
| openSUSE:Leap 15.6 | kernel-kvmsmall | 0 | 6.4.0-150600.23.60.4 |
| openSUSE:Leap 15.6 | kernel-obs-build | 0 | 6.4.0-150600.23.60.3 |
| openSUSE:Leap 15.6 | kernel-obs-qa | 0 | 6.4.0-150600.23.60.2 |
| openSUSE:Leap 15.6 | kernel-rt | 0 | 6.4.0-150600.10.44.1 |
| openSUSE:Leap 15.6 | kernel-rt_debug | 0 | 6.4.0-150600.10.44.1 |
| openSUSE:Leap 15.6 | kernel-source | 0 | 6.4.0-150600.23.60.4 |
| openSUSE:Leap 15.6 | kernel-source-azure | 0 | 6.4.0-150600.8.43.1 |
| openSUSE:Leap 15.6 | kernel-source-rt | 0 | 6.4.0-150600.10.44.1 |
| openSUSE:Leap 15.6 | kernel-syms | 0 | 6.4.0-150600.23.60.4 |
| openSUSE:Leap 15.6 | kernel-syms-azure | 0 | 6.4.0-150600.8.43.1 |
| openSUSE:Leap 15.6 | kernel-syms-rt | 0 | 6.4.0-150600.10.44.1 |
| openSUSE:Leap 15.6 | kernel-zfcpdump | 0 | 6.4.0-150600.23.60.4 |
Related vulnerabilities
- CVE-2025-39885 In the Linux kernel, the following vulnerability has been resolved: ocfs2: fix recursive… Also affects linux
- CVE-2025-39883 In the Linux kernel, the following vulnerability has been resolved: mm/memory-failure… Also affects linux
- CVE-2025-39876 In the Linux kernel, the following vulnerability has been resolved: net: fec: Fix… Also affects linux
- CVE-2025-39869 In the Linux kernel, the following vulnerability has been resolved: dmaengine: ti: edma… Also affects linux
- CVE-2025-39873 In the Linux kernel, the following vulnerability has been resolved: can: xilinx_can… Also affects linux
- CVE-2025-39863 In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: fix… Also affects linux
- CVE-2025-39865 In the Linux kernel, the following vulnerability has been resolved: tee: fix NULL pointer… Also affects linux
- CVE-2025-39866 In the Linux kernel, the following vulnerability has been resolved: fs: writeback: fix… Also affects linux