CVE-2026-53242
NoneCVSS
—
EPSS
0.1%
Published
Jun 25, 2026
CISA due date
—
Cloudanix analysis
A local user or program with access to Linux audio devices may be able to crash the system, so affected machines should be updated or have audio access restricted.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel denial-of-service flaw in the ALSA PCM subsystem. A race in snd_pcm_drain() for linked PCM streams can leave a wait-queue entry attached to an old substream sleep queue after a concurrent unlink operation. When the same wait entry is later added to another queue, kernel wait-queue list state becomes corrupted. A subsequent wake-up can dereference an invalid or NULL function pointer and trigger a kernel panic. The practical impact is local kernel crash rather than data theft or remote code execution based on the available description.
Why it matters to the business
A user or process with access to local ALSA PCM audio interfaces may be able to crash affected Linux systems, causing service interruption, workload disruption, or node instability. The risk is highest on shared Linux workstations, desktop fleets, multimedia systems, kiosks, VDI hosts, container/VM hosts exposing audio devices, and any environment where untrusted local users can access /dev/snd devices. The issue is not currently listed in CISA KEV, has no known public exploit maturity in the provided data, and has a very low EPSS score, so urgency is mainly driven by local multi-user exposure and availability requirements.
How an attack unfolds
An attacker first needs local execution or the ability to run code in a context that can interact with ALSA PCM devices. They open PCM audio streams, create linked substreams, and repeatedly exercise drain and unlink operations in a concurrent pattern. During the race, snd_pcm_drain() may add a wait entry to one substream queue and then fail to remove it when the checked substream is no longer in the linked group. On a later drain iteration, the stale wait entry is inserted into another queue while still linked to the previous one. This corrupts the kernel wait-queue lists. When the kernel later wakes the affected queue, it can interpret corrupted queue state as a callback pointer and dereference an invalid address, causing an oops or panic and taking the system down.
How to fix it
Upgrade to a Linux kernel build that includes the ALSA PCM fix replacing the unsafe init_waitqueue_entry/add_wait_queue/remove_wait_queue pattern with init_wait_entry/prepare_to_wait/finish_wait in snd_pcm_drain(). Because no exact fixed versions were provided, use the relevant Linux distribution or kernel vendor advisory to identify the patched kernel for each platform and reboot into that kernel after installation. Where immediate patching is not possible, reduce exposure by limiting local shell access, removing untrusted users from audio-related groups, restricting permissions to /dev/snd devices, disabling or blacklisting unused sound devices/modules on servers, and avoiding passthrough of host audio devices into containers or virtual machines unless required.
How to confirm the fix worked
Confirm the running kernel version is the vendor-patched build, not only that the package is installed. Validate with uname -a, package manager kernel inventory, and a reboot check to ensure the active kernel contains the fix. Review the vendor changelog or source patch references for ALSA PCM snd_pcm_drain(), wait-queue handling, prepare_to_wait(), or finish_wait(). Confirm that untrusted users cannot access /dev/snd/* unless needed. On high-assurance systems, test representative audio workloads after patching and monitor dmesg/journal logs for absence of ALSA PCM wait-queue corruption, kernel oops, or panic messages.
Typical attack path
- Obtain local code execution on an affected Linux system.
- Confirm access to ALSA PCM devices, typically through /dev/snd/* or an audio-enabled user session.
- Open ALSA PCM streams and create linked stream relationships.
- Concurrently trigger snd_pcm_drain() and unlink operations to race linked stream state changes.
- Cause stale wait-queue entries to remain attached to an old substream queue.
- Trigger another drain/wake-up path that corrupts wait-queue lists and dereferences an invalid callback pointer.
- Crash the kernel, causing denial of service and requiring reboot or failover.
How to detect it
Evidence of exploitation is most likely visible as kernel instability rather than a clean application-level log entry. Review kernel logs from journalctl -k, dmesg, /var/log/kern.log, /var/log/messages, /var/log/syslog, crash dumps, kdump/vmcore artifacts, and reboot history. Look for kernel oops or panic events referencing ALSA, PCM, snd_pcm_drain(), linked streams, wait queues, list corruption, wake_up, NULL pointer dereference, or invalid function-pointer calls. Correlate crash timing with local user sessions, access to /dev/snd devices, audio applications, containers or VMs with sound-device passthrough, and repeated execution of custom or unusual audio/PCM test programs. Because the issue causes a kernel panic, absence of logs before reboot does not rule out exploitation; crash dump collection and persistent journaling materially improve detection.
- snd_pcm_drain
- ALSA: PCM
- ALSA pcm
- wait queue list corruption
- wait_queue
- add_wait_queue
- remove_wait_queue
- prepare_to_wait
- finish_wait
- wake_up
- NULL pointer dereference
- kernel NULL pointer dereference
- BUG: kernel NULL pointer dereference
- general protection fault
- Kernel panic - not syncing
- Oops:
- Call Trace:
- /dev/snd/
- /proc/asound/
- snd_pcm
- snd_timer
- snd_seq
- list_add corruption
- list_del corruption
What your security team should do
- Inventory Linux systems with ALSA enabled, especially desktops, kiosks, shared workstations, VDI, and systems exposing /dev/snd to containers or virtual machines.
- Prioritize patching systems where untrusted or semi-trusted local users can run code and access audio devices.
- Apply the vendor-patched kernel and reboot systems into the fixed kernel.
- Temporarily restrict access to /dev/snd/* and audio groups on systems that cannot be patched quickly.
- Disable unused sound hardware or kernel sound modules on servers where audio is not required.
- Search historical kernel logs for crashes involving snd_pcm_drain(), ALSA PCM, wait queues, NULL function-pointer dereferences, or kernel panics.
- Add monitoring for repeated local crashes or reboots on systems with audio device access, because exploitation may appear only as instability.
- If suspicious crashes are found, preserve journalctl/dmesg output, kernel crash dumps, process accounting, and user login history for incident review.
The record
In the Linux kernel, the following vulnerability has been resolved: ALSA: PCM: Fix wait queue list corruption in snd_pcm_drain() on linked streams snd_pcm_drain() uses init_waitqueue_entry which does not clear entry.prev/next, and add_wait_queue with a conditional remove_wait_queue that is skipped when to_check is no longer in the group after concurrent UNLINK. The orphaned wait entry remains on the unlinked substream sleep queue. On the next drain iteration, add_wait_queue adds the entry to a new queue while still linked on the old one, corrupting both lists. A subsequent wake_up dereferences NULL at the func pointer (mapped from the spinlock at offset 0 of the misinterpreted wait_queue_head_t), causing a kernel panic. Replace init_waitqueue_entry/add_wait_queue/conditional remove_wait_queue with init_wait_entry/prepare_to_wait/ finish_wait. init_wait_entry clears prev/next via INIT_LIST_HEAD on each iteration and sets autoremove_wake_function which auto-removes the entry on wake-up. finish_wait safely handles both the already-removed and still-queued cases.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|