---
id: "CVE-2026-99122"
kind: "vulnerability"
aliases: ["CVE-2026-99122"]
title: "Linux kernel: VMware VMCI socket accepts packets from wrong peer"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["linux-kernel", "runtime", "vmware", "vsock"]
not_affected_if: ["no-vmci-transport", "non-vmware-hypervisor"]
published_at: "2026-10-28T11:17:31+00:00"
first_seen_at: "2026-10-28T11:32:34+00:00"
updated_at: "2026-10-28T11:37:33+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-99122", "first_seen_at": "2026-10-28T11:32:34+00:00"}]
---

# Linux kernel: VMware VMCI socket accepts packets from wrong peer

The Linux kernel's VMCI vsock transport looked up connected sockets by destination only, so a packet from a different context could reset or affect a connected socket. An attacker on a VMCI-connected context may be able to reset a victim's socket.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the running kernel with `uname -r` and whether the `vmw_vmci` and `vsock` modules are loaded with `lsmod | grep -E 'vmw_vmci|vsock'`
- Compare the kernel build against the fixed stable release listed in the kernel git commit for this CVE (unknown in the sources)

## Fix

- Update the Linux kernel to a stable release containing the upstream fix (fixed version: unknown in the sources)
- Reboot into the patched kernel after the update

## Timeline

- 2026-10-28T11:32:34+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-99122

## From the sources

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

vsock/vmci: validate packet source for connected sockets

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
