]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
audit: add subj creds to NETFILTER_CFG record to
authorRichard Guy Briggs <rgb@redhat.com>
Wed, 20 May 2020 18:47:13 +0000 (14:47 -0400)
committerPaul Moore <paul@paul-moore.com>
Wed, 20 May 2020 22:09:19 +0000 (18:09 -0400)
Some table unregister actions seem to be initiated by the kernel to
garbage collect unused tables that are not initiated by any userspace
actions.  It was found to be necessary to add the subject credentials to
cover this case to reveal the source of these actions.  A sample record:

The uid, auid, tty, ses and exe fields have not been included since they
are in the SYSCALL record and contain nothing useful in the non-user
context.

Here are two sample orphaned records:

  type=NETFILTER_CFG msg=audit(2020-05-20 12:14:36.505:5) : table=filter family=ipv4 entries=0 op=register pid=1 subj=kernel comm=swapper/0

  type=NETFILTER_CFG msg=audit(2020-05-20 12:15:27.701:301) : table=nat family=bridge entries=0 op=unregister pid=30 subj=system_u:system_r:kernel_t:s0 comm=kworker/u4:1

Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
kernel/auditsc.c

index cfe3486e5f31a55a2e1ce209e0596d196dd17abb..468a2339045784c9260c2d80a1335b1090b3280a 100644 (file)
@@ -2557,12 +2557,18 @@ void __audit_log_nfcfg(const char *name, u8 af, unsigned int nentries,
                       enum audit_nfcfgop op)
 {
        struct audit_buffer *ab;
+       char comm[sizeof(current->comm)];
 
        ab = audit_log_start(audit_context(), GFP_KERNEL, AUDIT_NETFILTER_CFG);
        if (!ab)
                return;
        audit_log_format(ab, "table=%s family=%u entries=%u op=%s",
                         name, af, nentries, audit_nfcfgs[op].s);
+
+       audit_log_format(ab, " pid=%u", task_pid_nr(current));
+       audit_log_task_context(ab); /* subj= */
+       audit_log_format(ab, " comm=");
+       audit_log_untrustedstring(ab, get_task_comm(comm, current));
        audit_log_end(ab);
 }
 EXPORT_SYMBOL_GPL(__audit_log_nfcfg);