← CVE announcements

SECURITY ANNOUNCEMENT

CVE-2026-99122

28 October 2026

vmci_transport_recv_stream_cb() looks up sockets first by the full source and destination tuple, then by destination only in the bound table. The fallback can select a non-listening socket without checking whether the packet came from its stored peer.

This was reproduced with two VMCI contexts. A RST from the context not stored in a TCP_SYN_SENT socket reset that socket after it was selected by the destination-only lookup.

VMCI can process notification packets in bottom-half context when the socket is not owned by user context, or defer packets to a workqueue. Use vsock_check_source() after taking the socket lock in the bottom-half path, and recheck after lock_sock() in the workqueue path. Listening sockets continue to accept packets from any source.

Reply with a RST addressed from the received packet before dropping a source that fails validation. This preserves the existing reset behavior for bound non-listening and concurrently closed sockets without directing the reset to a connected socket's stored peer.

Introduced

3.9 d021c344051af91f42c5ba9fdedc176740cbd238

Fixed releases

6.18.59 c027f8b429dbb2157fc1b503df196e272d947c89

7.2.13 90c423b62ec9be08177f74b07a47937ca8d2035b

7.3 ad9a7da3fa39c2d616ec0dd3cf6e30531d032fe7

View source announcement ↗