Message ID | 20201023143757.377574-1-jeffv@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vsock: use ns_capable_noaudit() on socket create | expand |
On Fri, 23 Oct 2020, Jeff Vander Stoep wrote: > During __vsock_create() CAP_NET_ADMIN is used to determine if the > vsock_sock->trusted should be set to true. This value is used later > for determing if a remote connection should be allowed to connect > to a restricted VM. Unfortunately, if the caller doesn't have > CAP_NET_ADMIN, an audit message such as an selinux denial is > generated even if the caller does not want a trusted socket. > > Logging errors on success is confusing. To avoid this, switch the > capable(CAP_NET_ADMIN) check to the noaudit version. > > Reported-by: Roman Kiryanov <rkir@google.com> > https://android-review.googlesource.com/c/device/generic/goldfish/+/1468545/ > Signed-off-by: Jeff Vander Stoep <jeffv@google.com> Reviewed-by: James Morris <jamorris@linux.microsoft.com>
On Tue, 27 Oct 2020 07:37:37 +1100 (AEDT) James Morris wrote: > On Fri, 23 Oct 2020, Jeff Vander Stoep wrote: > > > During __vsock_create() CAP_NET_ADMIN is used to determine if the > > vsock_sock->trusted should be set to true. This value is used later > > for determing if a remote connection should be allowed to connect > > to a restricted VM. Unfortunately, if the caller doesn't have > > CAP_NET_ADMIN, an audit message such as an selinux denial is > > generated even if the caller does not want a trusted socket. > > > > Logging errors on success is confusing. To avoid this, switch the > > capable(CAP_NET_ADMIN) check to the noaudit version. > > > > Reported-by: Roman Kiryanov <rkir@google.com> > > https://android-review.googlesource.com/c/device/generic/goldfish/+/1468545/ > > Signed-off-by: Jeff Vander Stoep <jeffv@google.com> > > Reviewed-by: James Morris <jamorris@linux.microsoft.com> Applied to net, thanks!
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 9e93bc201cc0..b4d7b8aba003 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -739,7 +739,7 @@ static struct sock *__vsock_create(struct net *net, vsk->buffer_min_size = psk->buffer_min_size; vsk->buffer_max_size = psk->buffer_max_size; } else { - vsk->trusted = capable(CAP_NET_ADMIN); + vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN); vsk->owner = get_current_cred(); vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT; vsk->buffer_size = VSOCK_DEFAULT_BUFFER_SIZE;
During __vsock_create() CAP_NET_ADMIN is used to determine if the vsock_sock->trusted should be set to true. This value is used later for determing if a remote connection should be allowed to connect to a restricted VM. Unfortunately, if the caller doesn't have CAP_NET_ADMIN, an audit message such as an selinux denial is generated even if the caller does not want a trusted socket. Logging errors on success is confusing. To avoid this, switch the capable(CAP_NET_ADMIN) check to the noaudit version. Reported-by: Roman Kiryanov <rkir@google.com> https://android-review.googlesource.com/c/device/generic/goldfish/+/1468545/ Signed-off-by: Jeff Vander Stoep <jeffv@google.com> --- net/vmw_vsock/af_vsock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)