mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-10-02 20:59:01 +10:00
vsock: Do not allow binding to VMADDR_PORT_ANY
commitaba0c94f61
upstream. It is possible for a vsock to autobind to VMADDR_PORT_ANY. This can cause a use-after-free when a connection is made to the bound socket. The socket returned by accept() also has port VMADDR_PORT_ANY but is not on the list of unbound sockets. Binding it will result in an extra refcount decrement similar to the one fixed infcdd2242c0
(vsock: Keep the binding until socket destruction). Modify the check in __vsock_bind_connectible() to also prevent binding to VMADDR_PORT_ANY. Fixes:d021c34405
("VSOCK: Introduce VM Sockets") Reported-by: Budimir Markovic <markovicbudimir@gmail.com> Signed-off-by: Budimir Markovic <markovicbudimir@gmail.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Link: https://patch.msgid.link/20250807041811.678-1-markovicbudimir@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7de0770500
commit
f138be5d7f
@ -686,7 +686,8 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk,
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < MAX_PORT_RETRIES; i++) {
|
||||
if (port <= LAST_RESERVED_PORT)
|
||||
if (port == VMADDR_PORT_ANY ||
|
||||
port <= LAST_RESERVED_PORT)
|
||||
port = LAST_RESERVED_PORT + 1;
|
||||
|
||||
new_addr.svm_port = port++;
|
||||
|
Loading…
Reference in New Issue
Block a user