Cloudanix VulnDB

CVE-2025-38668

None

CVSS

—

EPSS

0.2%

Published

Aug 22, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in the Linux kernel's power-management code can cause the system to crash when certain hardware components are removed or powered down.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Use After Free
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Stale coupling_desc.n_coupled value after regulator unbind leaves dangling pointers in coupled_rdevs; subsequent regulator operations (runtime PM, regulator_get_voltage, etc.) dereference these invalid pointers, resulting in NULL pointer dereference or use-after-free.

Why it matters to the business

Kernel panic or system instability on Linux hosts during device unbind or power-management events; can interrupt containerized workloads, cloud instances, or embedded devices, increasing downtime and operational risk especially on systems with frequent regulator or PM activity.

How an attack unfolds

An attacker with local access triggers unbind of a coupled regulator device (e.g., via rmmod or platform device removal), leaving stale coupling metadata; later regulator operations performed by the kernel or user-space processes dereference the freed/invalid pointers, causing a crash. Threat actors such as VMSCAPE or campaigns targeting container-optimized OS kernels may chain this with other local privilege-escalation primitives to achieve denial-of-service or escalate privileges.

How to fix it

Upgrade to a fixed kernel containing commit 7574892e259bbb16262ebfb4b65a2054a5e03a49 or later; for Chainguard packages update openjdk-21-openj9* to 0.53.0-r0 or newer. Reboot after kernel update; disable unnecessary regulator coupling where feasible as a temporary mitigation.

How to confirm the fix worked

Confirm kernel version contains the fix commit; run regulator unbind/load tests (e.g., bind/unbind reg-dummy on systems with coupling) and verify n_coupled is reset to zero; monitor for absence of NULL dereference oops mentioning regulator_lock_recursive after the update.

Typical attack path

  1. Obtain local code execution or sufficient privileges on the target Linux system
  2. Trigger unbind of a platform regulator device (e.g., reg-dummy or similar) that participates in voltage coupling
  3. Leave the stale n_coupled value and coupled_rdevs pointers in regulator coupling state
  4. Induce subsequent regulator access via runtime PM, sysfs, or driver initialization
  5. Trigger NULL dereference or UAF in regulator_lock_recursive or related paths, causing panic or exploitable corruption

How to detect it

Search kernel logs (dmesg, journalctl, /var/log/kern.log) for oops or panic messages containing regulator_lock_recursive, coupling_desc, or n_coupled after regulator unbind events; correlate with device removal timestamps and check for repeated NULL pointer dereference faults on systems running vulnerable kernels.

  • regulator_lock_recursive
  • coupling_desc
  • n_coupled
  • reg-dummy
  • NULL pointer dereference in regulator

What your security team should do

  • Prioritize patching all affected Linux kernels and Chainguard openjdk-21-openj9 packages within the next maintenance window
  • Inventory systems using regulator coupling or frequent runtime PM to assess exposure breadth
  • Enable kernel panic logging and central collection of oops traces for post-patch validation
  • Restrict unprivileged module loading and device unbind where possible until patches are deployed

The record

In the Linux kernel, the following vulnerability has been resolved: regulator: core: fix NULL dereference on unbind due to stale coupling data Failing to reset coupling_desc.n_coupled after freeing coupled_rdevs can lead to NULL pointer dereference when regulators are accessed post-unbind. This can happen during runtime PM or other regulator operations that rely on coupling metadata. For example, on ridesx4, unbinding the 'reg-dummy' platform device triggers a panic in regulator_lock_recursive() due to stale coupling state. Ensure n_coupled is set to 0 to prevent access to invalid pointers.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:12 linux 0 No fix
Debian:13 linux 0 6.12.41-1
Debian:14 linux 0 No fix
Debian:14 linux 0 6.16.3-1
Linux Kernel 0 5.4.297
Linux Kernel 5.3.0 5.4.297
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_16 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_16 0 1-150600.13.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.73.1.150600.12.32.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.73.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.73.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.55.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.55.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.55.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.55.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.73.1.150600.12.32.1
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.55.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.55.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.55.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.73.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.55.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.73.1
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities