CVE-2022-49814CWE-362

CVE-2022-49814

High · published May 1, 2025

CVSS v3.1
7.8
EPSS
0%
Percentile
5.5
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

kcm: close race conditions on sk_receive_queue

sk->sk_receive_queue is protected by skb queue lock, but for KCM

sockets its RX path takes mux->rx_lock to protect more than just

skb queue. However, kcm_recvmsg() still only grabs the skb queue

lock, so race conditions still exist.

We can teach kcm_recvmsg() to grab mux->rx_lock too but this would

introduce a potential performance regression as struct kcm_mux can

be shared by multiple KCM sockets.

So we have to enforce skb queue lock in requeue_rx_msgs() and handle

skb peek case carefully in kcm_wait_data(). Fortunately,

skb_recv_datagram() already handles it nicely and is widely used by

other sockets, we can just switch to skb_recv_datagram() after

getting rid of the unnecessary sock lock in kcm_recvmsg() and

kcm_splice_read(). Side note: SOCK_DONE is not used by KCM sockets,

so it is safe to get rid of this check too.

I ran the original syzbot reproducer for 30 min without seeing any

issue.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00166 · 5.5th percentile
Weakness
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Published
2025-05-01T19:16Z
Affected products (11)
ProductVersionsFixed in
linux/linux_kernel≥ 4.6, < 4.14.3004.14.300
linux/linux_kernel≥ 4.15, < 4.19.2674.19.267
linux/linux_kernel≥ 4.20, < 5.4.2255.4.225
linux/linux_kernel≥ 5.5, < 5.10.1565.10.156
linux/linux_kernel≥ 5.11, < 5.15.805.15.80
linux/linux_kernel≥ 5.16, < 6.0.106.0.10
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (7)
EPSS history
Timeline
  • 01 MAY 14:09Z
    kcm: close race conditions on sk_receive_queue
    cvelistv5