CVE-2026-99062: vsock/virtio: account only unread bytes in read_skb()
In the Linux kernel, the following vulnerability has been resolved:
vsock/virtio: account only unread bytes in readskb()
After a partial stream receive, rxbytes tracks the unread suffix while bufused and peer credit still cover the whole packet. virtiotransportreadskb() dequeues that packet but passes pktlen for both counters, underflowing rxbytes.
On a connected CIDLOCAL stream with an SKSKB verdict, a 40-byte read from a 100-byte packet made SIOCINQ report -40, an empty recv return ELOOP, and poll report the empty socket readable. After verdict detach, receiving 40 bytes wrapped the counter to zero and hid those queued bytes until one more byte arrived. The fixed run kept the counter balanced and exposed all queued data immediately.
This was found during an LLM-assisted manual source audit of VSOCK receive accounting while re-evaluating virtiotransportreadskb() after CVE-2024-50169.
Subtract only skb->len minus the VSOCK offset from rxbytes. Retain the full packet length for bufused and peer credit.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Linux kernelto a version that resolves this vulnerability.Patch CVE-2024-50169