]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
selinux: rate-limit netlink message warnings in selinux_nlmsg_perm()
authorVladis Dronov <vdronov@redhat.com>
Thu, 24 Dec 2015 16:09:41 +0000 (11:09 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 11 Jun 2020 18:05:39 +0000 (19:05 +0100)
commit 76319946f321e30872dd72af7de867cb26e7a373 upstream.

Any process is able to send netlink messages with invalid types.
Make the warning rate-limited to prevent too much log spam.

The warning is supposed to help to find misbehaving programs, so
print the triggering command name and pid.

Reported-by: Florian Weimer <fweimer@redhat.com>
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
[PM: subject line tweak to make checkpatch.pl happy]
Signed-off-by: Paul Moore <pmoore@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
security/selinux/hooks.c

index 99814b6807c49c16d8c99a3b739939237cf2815a..5b8353183cd18e26e5bcb75fe2e3c1f5b0c6c7dd 100644 (file)
@@ -4683,11 +4683,12 @@ static int selinux_nlmsg_perm(struct sock *sk, struct sk_buff *skb)
        err = selinux_nlmsg_lookup(sksec->sclass, nlh->nlmsg_type, &perm);
        if (err) {
                if (err == -EINVAL) {
-                       printk(KERN_WARNING
-                              "SELinux: unrecognized netlink message:"
-                              " protocol=%hu nlmsg_type=%hu sclass=%s\n",
+                       pr_warn_ratelimited("SELinux: unrecognized netlink"
+                              " message: protocol=%hu nlmsg_type=%hu sclass=%s"
+                              " pig=%d comm=%s\n",
                               sk->sk_protocol, nlh->nlmsg_type,
-                              secclass_map[sksec->sclass - 1].name);
+                              secclass_map[sksec->sclass - 1].name,
+                              task_pid_nr(current), current->comm);
                        if (!selinux_enforcing || security_get_allow_unknown())
                                err = 0;
                }