CVE-2026-23394
Race Condition in Linux af_unix MSG_PEEK Causes GC Mismanagement
Publication date: 2026-03-25
Last updated on: 2026-04-24
Assigner: kernel.org
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| linux | linux_kernel | 6.10 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | 7.0 |
| linux | linux_kernel | From 6.19 (inc) to 6.19.10 (exc) |
| linux | linux_kernel | From 6.1.141 (inc) to 6.2 (exc) |
| linux | linux_kernel | From 6.10.1 (inc) to 6.18.23 (exc) |
| linux | linux_kernel | From 6.6.93 (inc) to 6.7 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-362 | The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
This vulnerability exists in the Linux kernel's af_unix subsystem, where a race condition occurs involving the MSG_PEEK flag and garbage collection (GC) of socket receive queues.
Specifically, when MSG_PEEK is used to peek at data in a socket's receive queue, it silently increments the file reference count without informing the garbage collector. This causes the GC to mistakenly believe that certain sockets are dead and safe to purge, even though they are still alive.
The issue arises in scenarios where one socket (sk-A) is closed but can still be received from via another socket (sk-B). If sk-B uses MSG_PEEK on sk-A's data and then sk-B is closed while GC is checking the sockets, the GC may incorrectly conclude both sockets are dead and purge them.
The root cause is that MSG_PEEK increments the file reference count without synchronizing with the GC, leading to an invalid evaluation of socket liveness. The fix involves signaling the race condition using a memory barrier and deferring garbage collection to avoid incorrect purging.
How can this vulnerability impact me? :
This vulnerability can lead to premature garbage collection of active sockets in the Linux kernel, which may cause unexpected socket closures or data loss.
Applications relying on Unix domain sockets for inter-process communication might experience disruptions, as the kernel could mistakenly purge sockets that are still in use.
Such unexpected socket purging could result in application errors, communication failures, or potential denial of service conditions if critical socket connections are closed unexpectedly.
What immediate steps should I take to mitigate this vulnerability?
The vulnerability has been resolved in the Linux kernel by modifying the garbage collection (GC) mechanism related to AF_UNIX sockets and MSG_PEEK usage.
To mitigate this vulnerability immediately, you should update your Linux kernel to a version that includes the fix described, which involves using seqcount_t to notify GC when MSG_PEEK occurs and deferring SCC garbage collection to avoid race conditions.
No specific workaround commands or configuration changes are provided in the available information, so applying the kernel update is the recommended immediate step.