CVE-2025-21854

sockmap, vsock: For connectible sockets allow only connected

Medium · published March 12, 2025

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

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

sockmap, vsock: For connectible sockets allow only connected

sockmap expects all vsocks to have a transport assigned, which is expressed

in vsock_proto::psock_update_sk_prot(). However, there is an edge case

where an unconnected (connectible) socket may lose its previously assigned

transport. This is handled with a NULL check in the vsock/BPF recv path.

Another design detail is that listening vsocks are not supposed to have any

transport assigned at all. Which implies they are not supported by the

sockmap. But this is complicated by the fact that a socket, before

switching to TCP_LISTEN, may have had some transport assigned during a

failed connect() attempt. Hence, we may end up with a listening vsock in a

sockmap, which blows up quickly:

KASAN: null-ptr-deref in range [0x0000000000000120-0x0000000000000127]

CPU: 7 UID: 0 PID: 56 Comm: kworker/7:0 Not tainted 6.14.0-rc1+

Workqueue: vsock-loopback vsock_loopback_work

RIP: 0010:vsock_read_skb+0x4b/0x90

Call Trace:

sk_psock_verdict_data_ready+0xa4/0x2e0

virtio_transport_recv_pkt+0x1ca8/0x2acc

vsock_loopback_work+0x27d/0x3f0

process_one_work+0x846/0x1420

worker_thread+0x5b3/0xf80

kthread+0x35a/0x700

ret_from_fork+0x2d/0x70

ret_from_fork_asm+0x1a/0x30

For connectible sockets, instead of relying solely on the state of

vsk->transport, tell sockmap to only allow those representing established

connections. This aligns with the behaviour for AF_INET and AF_UNIX.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00232 · 13.3th percentile
Published
2025-03-12T09:42Z
EPSS history
Timeline
  • 12 MAR 09:42Z
    sockmap, vsock: For connectible sockets allow only connected
    cvelistv5