UBUNTU-CVE-2026-90138: Medium severity ubuntu/linux vulnerability
In the Linux kernel, the following vulnerability has been resolved: vsock: don't check the listener's skerr in vsockaccept() Syzbot reported an issue which can be reproduced with these steps: r0 = socket(AFVSOCK, SOCKSTREAM, 0) bind(r0, {VMADDRCIDANY, PORT}) connect(r0, {VMADDRCIDLOCAL, PORT}) -> -1, EPROTO (self-connect) listen(r0, backlog) -> 0 r1 = socket(AFVSOCK, SOCKSTREAM, 0) connect(r1, {VMADDRCIDLOCAL, PORT}) -> 0 accept(r0) -> -1, EPROTO (stale skerr) Basically, it creates a socket (r0) and triggers a self-connect after binding it. This self-connect fails with EPROTO because it loops back to r0 while the socket is still in the TCPSYNSENT state, causing it to be incorrectly dispatched to the connecting-client path. The unexpected packet type encountered there sets skerr to EPROTO. After that, it invokes a listen() call on the same socket. This listen() call succeeds because the kernel's listening path never inspects or clears skerr. Then, a new socket (r1) is created as a normal client and connects to r0. However, vsockaccept() rejects this incoming connection because the listener's skerr still holds the EPROTO error from the earlier failed self-connect. This rejection causes the child socket created for r1's connection to never be freed on virtio or hyperv transports; only the VMCI transport implements pendingwork to revisit and clean up a rejected socket. For a non-blocking connect(), vsockconnect() may return -EINPROGRESS immediately, and vsockconnecttimeout() can later set sk->skerr asynchronously. Since no vsock transport ever sets skerr on a socket while it is in TCPLISTEN state, checking it in vsockaccept() serves no purpose and only carries forward errors left behind by earlier, unrelated connection attempts on the same socket. Remove the checks so accept() no longer rejects valid incoming connections because of a stale error, which also avoids the resource leak described above.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In the Linux kernel vsock implementation, remove the checks of the listener's sk_err from vsock_accept() so valid incoming connections are not rejected due to stale EPROTO errors.
Event History
Frequently Asked Questions
Which Ubuntu packages are listed as affected?
The listed packages are ubuntu/linux, ubuntu/linux-fips, ubuntu/linux-aws, ubuntu/linux-azure, ubuntu/linux-aws-fips, ubuntu/linux-azure-fips, ubuntu/linux-gcp, and ubuntu/linux-gcp-fips.
What level of access does an attacker need?
The vector is local and requires low privileges, with no user interaction. Exploitation requires the ability to create and manipulate AF_VSOCK stream sockets on the affected system.
What is the practical impact of triggering the issue?
A failed self-connect can leave an EPROTO error on a socket that is subsequently put into listening mode. Later connection attempts can succeed, but accept() on that listener can fail with EPROTO, preventing the service from accepting the incoming connection.