audit,io_uring,io-wq: add some basic audit support to io_uring
authorPaul Moore <paul@paul-moore.com>
Wed, 17 Feb 2021 00:46:48 +0000 (19:46 -0500)
committerPaul Moore <paul@paul-moore.com>
Mon, 20 Sep 2021 02:10:44 +0000 (22:10 -0400)
commit5bd2182d58e9d9c6279b7a8a2f9b41add0e7f9cb
tree8379b5d74f9451d64246386513135e62b4a37efa
parent12c5e81d3fd0a690c49dfe1c3a99bf80a24075c7
audit,io_uring,io-wq: add some basic audit support to io_uring

This patch adds basic auditing to io_uring operations, regardless of
their context.  This is accomplished by allocating audit_context
structures for the io-wq worker and io_uring SQPOLL kernel threads
as well as explicitly auditing the io_uring operations in
io_issue_sqe().  Individual io_uring operations can bypass auditing
through the "audit_skip" field in the struct io_op_def definition for
the operation; although great care must be taken so that security
relevant io_uring operations do not bypass auditing; please contact
the audit mailing list (see the MAINTAINERS file) with any questions.

The io_uring operations are audited using a new AUDIT_URINGOP record,
an example is shown below:

  type=UNKNOWN[1336] msg=audit(1631800225.981:37289):
    uring_op=19 success=yes exit=0 items=0 ppid=15454 pid=15681
    uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0
    subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    key=(null)

Thanks to Richard Guy Briggs for review and feedback.

Signed-off-by: Paul Moore <paul@paul-moore.com>
fs/io-wq.c
fs/io_uring.c
include/linux/audit.h
include/uapi/linux/audit.h
kernel/audit.h
kernel/auditsc.c