Message ID | 20201023143757.377574-1-jeffv@google.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | vsock: use ns_capable_noaudit() on socket create | expand |
Context | Check | Description |
---|---|---|
jkicinski/patch_count | success | Link |
jkicinski/cover_letter | success | Link |
jkicinski/fixes_present | success | Link |
jkicinski/tree_selection | success | Guessed tree name to be net-next |
jkicinski/subject_prefix | warning | Target tree name not specified in the subject |
jkicinski/source_inline | success | Was 0 now: 0 |
jkicinski/verify_signedoff | success | Link |
jkicinski/module_param | success | Was 0 now: 0 |
jkicinski/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
jkicinski/kdoc | success | Errors and warnings before: 0 this patch: 0 |
jkicinski/verify_fixes | success | Link |
jkicinski/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 8 lines checked |
jkicinski/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
jkicinski/header_inline | success | Link |
jkicinski/stable | success | Stable not CCed |
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(-)