vsock/vmci: fix sk_ack_backlog leak on failed handshake
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.94, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: vsock/vmci: fix sk_ack_backlog leak on failed handshake When vmci_transport_recv_connecting_server() returns an error, vmci_transport_recv_listen() calls vsock_remove_pending() but never calls sk_acceptq_removed(). This leaves sk_ack_backlog incremented permanently. Repeated handshake failures (malformed packets, queue pair alloc failure, event subscribe failure) cause sk_ack_backlog to climb toward sk_max_ack_backlog. Once it reaches the limit the listener permanently refuses all new connections with -ECONNREFUSED, a silent denial of service requiring a process restart to recover. The two existing sk_acceptq_removed() calls in af_vsock.c do not cover this path: line 764 checks vsock_is_pending() which returns false after vsock_remove_pending(), and line 1889 is only reached on successful accept(). Fix by balancing sk_acceptq_added() with sk_acceptq_removed() on the error path.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in 22c587aa3ab1ab5264daff3ec32136fd30436c13; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in cf7090e255d74c4b61c51f8ede9fcacdd8393b5b; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in ea0b03d52881c12a8c634ea0d6cbfa61cefdb488; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in dfd853197615d322d3a88dbcab91fc0fd2096219; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in bcb275626055df7f8f947f1a349754b4004d9a15; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in ba9ad6015937a5e46ba1a31370e3efdec8abbdcc; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in 9698582a4dd9c4a05889d7db96d4c0edc9e69cac; From d021c344051af91f42c5ba9fdedc176740cbd238 · fixed in c05fa14db43ebef3bd862ca9d073981c0358b3f0
- Linux Linux
3.9
- KernelLinux
From 3.9.0 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.143; From 6.7.0 · fixed in 6.12.94; From 6.13.0 · fixed in 6.18.36; From 6.19.0 · fixed in 7.0.13
References 8
git.kernel.org
- stable/c/22c587aa3ab1ab5264daff3ec32136fd30436c13
- stable/c/cf7090e255d74c4b61c51f8ede9fcacdd8393b5b
- stable/c/ea0b03d52881c12a8c634ea0d6cbfa61cefdb488
- stable/c/dfd853197615d322d3a88dbcab91fc0fd2096219
- stable/c/bcb275626055df7f8f947f1a349754b4004d9a15
- stable/c/ba9ad6015937a5e46ba1a31370e3efdec8abbdcc
- stable/c/9698582a4dd9c4a05889d7db96d4c0edc9e69cac
- stable/c/c05fa14db43ebef3bd862ca9d073981c0358b3f0