net: Use ns_capable_noaudit() when determining net sysctl permissions
authorTyler Hicks <tyhicks@canonical.com>
Fri, 3 Jun 2016 04:43:22 +0000 (23:43 -0500)
committerJames Morris <james.l.morris@oracle.com>
Mon, 6 Jun 2016 10:16:22 +0000 (20:16 +1000)
The capability check should not be audited since it is only being used
to determine the inode permissions. A failed check does not indicate a
violation of security policy but, when an LSM is enabled, a denial audit
message was being generated.

The denial audit message caused confusion for some application authors
because root-running Go applications always triggered the denial. To
prevent this confusion, the capability check in net_ctl_permissions() is
switched to the noaudit variant.

BugLink: https://launchpad.net/bugs/1465724
Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>
net/sysctl_net.c

index ed98c1fc3de1428560ea370413084102af9dff7f..46a71c701e7c44f5aa5fcc69e8571382434e385b 100644 (file)
@@ -46,7 +46,7 @@ static int net_ctl_permissions(struct ctl_table_header *head,
        kgid_t root_gid = make_kgid(net->user_ns, 0);
 
        /* Allow network administrator to have same access as root. */
-       if (ns_capable(net->user_ns, CAP_NET_ADMIN) ||
+       if (ns_capable_noaudit(net->user_ns, CAP_NET_ADMIN) ||
            uid_eq(root_uid, current_euid())) {
                int mode = (table->mode >> 6) & 7;
                return (mode << 6) | (mode << 3) | mode;