Re: [PATCH ghak90 (was ghak32) V4 06/10] audit: add containerid support for tty_audit
From: Paul Moore
Date: Thu Jan 03 2019 - 15:11:38 EST
On Wed, Oct 31, 2018 at 5:17 PM Richard Guy Briggs <rgb@xxxxxxxxxx> wrote:
> On 2018-10-19 19:17, Paul Moore wrote:
> > On Sun, Aug 5, 2018 at 4:33 AM Richard Guy Briggs
<rgb@xxxxxxxxxx> wrote:
> > > Add audit container identifier auxiliary record to tty
logging rule
> > > event standalone records.
> > >
> > > Signed-off-by: Richard Guy Briggs <rgb@xxxxxxxxxx>
> > > Acked-by: Serge Hallyn <serge@xxxxxxxxxx>
> > > ---
> > > drivers/tty/tty_audit.c | 5 ++++-
> > > 1 file changed, 4 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/tty/tty_audit.c b/drivers/tty/tty_audit.c
> > > index 50f567b..3e21477 100644
> > > --- a/drivers/tty/tty_audit.c
> > > +++ b/drivers/tty/tty_audit.c
> > > @@ -66,8 +66,9 @@ static void tty_audit_log(const char
*description, dev_t dev,
> > > uid_t uid = from_kuid(&init_user_ns, task_uid(tsk));
> > > uid_t loginuid = from_kuid(&init_user_ns,
audit_get_loginuid(tsk));
> > > unsigned int sessionid = audit_get_sessionid(tsk);
> > > + struct audit_context *context =
audit_alloc_local(GFP_KERNEL);
> > >
> > > - ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_TTY);
> > > + ab = audit_log_start(context, GFP_KERNEL, AUDIT_TTY);
> > > if (ab) {
> > > char name[sizeof(tsk->comm)];
> > >
> > > @@ -80,6 +81,8 @@ static void tty_audit_log(const char
*description, dev_t dev,
> > > audit_log_n_hex(ab, data, size);
> > > audit_log_end(ab);
> > > }
> > > + audit_log_contid(context, "tty", audit_get_contid(tsk));
> > > + audit_free_context(context);
> > > }
> >
> > Since I never polished up my task_struct/current fix patch enough to
> > get it past RFC status during this development window (new job, stolen
> > laptop, etc.) *and* it looks like you are going to need at least one
> > more respin of this patchset, go ahead and fix this patch to use
> > current instead of generating a local context. I'll deal with the
> > merge fallout if/when it happens.
>
> Sure, I will switch it to current in the call to audit_get_contid().
>
> The local context is a distinct issue. Like USER records, I prefer
> local due to potential record volume, it is already trackable as far as
> Steve is concerned, and if it is to be connected with the syscall
> record, it should be linked to syscall records in a seperate new github
> issue with its own patch. It accumulates events until the buffer is
> flushed to a record, so the timestamp only represents the flush (usually
> user "CR/enter").
Generally, yes, associating records is a separate issue, but in this
particular case you are changing this record by making it a "local"
record, which as we've discussed before, I view as a necessary evil
and something that must be minimized. A quick look at the
tty_audit_log() callers shows tty_audit_tiocsti() which is an ioctl
handler (and thus current should be valid and correct), and
tty_audit_buf_push() whose callers all seem have valid and correct
current values; if you find that not to be the case please let me
know.
> > Local contexts are a last resort. If you ever find yourself writing
> > code that generates a local context, you should first be 100% certain
> > that the event is not the the result of a process initiated action (in
> > which case it should take from the task's context).
>
> Well, I'm 100% certain it is linked to a process, but so are USER
> records that are already being discussed as the exception. This is
> basically a keystroke logger (that has a flag to omit passwords).
--
paul moore
www.paul-moore.com