All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Guy Briggs <rgb@redhat.com>
To: Paul Moore <paul@paul-moore.com>
Cc: nhorman@tuxdriver.com, linux-api@vger.kernel.org,
	containers@lists.linux-foundation.org,
	LKML <linux-kernel@vger.kernel.org>,
	dhowells@redhat.com,
	Linux-Audit Mailing List <linux-audit@redhat.com>,
	netfilter-devel@vger.kernel.org, ebiederm@xmission.com,
	simo@redhat.com, netdev@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, Eric Paris <eparis@parisplace.org>,
	mpatel@redhat.com, Serge Hallyn <serge@hallyn.com>
Subject: Re: [PATCH ghak90 V8 13/16] audit: track container nesting
Date: Wed, 5 Feb 2020 18:50:56 -0500	[thread overview]
Message-ID: <20200205235056.e5365xtgz7rbese2@madcap2.tricolour.ca> (raw)
In-Reply-To: <CAHC9VhSVN3mNb5enhLR1hY+ekiAyiYWbehrwd_zN7kz13dF=1w@mail.gmail.com>

On 2020-02-05 18:05, Paul Moore wrote:
> On Thu, Jan 30, 2020 at 2:28 PM Richard Guy Briggs <rgb@redhat.com> wrote:
> > On 2020-01-22 16:29, Paul Moore wrote:
> > > On Tue, Dec 31, 2019 at 2:51 PM Richard Guy Briggs <rgb@redhat.com> wrote:
> > > >
> > > > Track the parent container of a container to be able to filter and
> > > > report nesting.
> > > >
> > > > Now that we have a way to track and check the parent container of a
> > > > container, modify the contid field format to be able to report that
> > > > nesting using a carrat ("^") separator to indicate nesting.  The
> > > > original field format was "contid=<contid>" for task-associated records
> > > > and "contid=<contid>[,<contid>[...]]" for network-namespace-associated
> > > > records.  The new field format is
> > > > "contid=<contid>[^<contid>[...]][,<contid>[...]]".
> > >
> > > Let's make sure we always use a comma as a separator, even when
> > > recording the parent information, for example:
> > > "contid=<contid>[,^<contid>[...]][,<contid>[...]]"
> >
> > The intent here is to clearly indicate and separate nesting from
> > parallel use of several containers by one netns.  If we do away with
> > that distinction, then we lose that inheritance accountability and
> > should really run the list through a "uniq" function to remove the
> > produced redundancies.  This clear inheritance is something Steve was
> > looking for since tracking down individual events/records to show that
> > inheritance was not aways feasible due to rolled logs or search effort.
> 
> Perhaps my example wasn't clear.  I'm not opposed to the little
> carat/hat character indicating a container's parent, I just think it
> would be good to also include a comma *in*addition* to the carat/hat.

Ah, ok.  Well, I'd offer that it would be slightly shorter, slightly
less cluttered and having already written the parser in userspace, I
think the parser would be slightly simpler.

I must admit, I was a bit puzzled by your snippet of code that was used
as a prefix to the next item rather than as a postfix to the given item.

Can you say why you prefer the comma in addition?

> > > > Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
> > > > ---
> > > >  include/linux/audit.h |  1 +
> > > >  kernel/audit.c        | 53 +++++++++++++++++++++++++++++++++++++++++++--------
> > > >  kernel/audit.h        |  1 +
> > > >  kernel/auditfilter.c  | 17 ++++++++++++++++-
> > > >  kernel/auditsc.c      |  2 +-
> > > >  5 files changed, 64 insertions(+), 10 deletions(-)
> > >
> > > ...
> > >
> > > > diff --git a/kernel/audit.c b/kernel/audit.c
> > > > index ef8e07524c46..68be59d1a89b 100644
> > > > --- a/kernel/audit.c
> > > > +++ b/kernel/audit.c
> > >
> > > > @@ -492,6 +493,7 @@ void audit_switch_task_namespaces(struct nsproxy *ns, struct task_struct *p)
> > > >                 audit_netns_contid_add(new->net_ns, contid);
> > > >  }
> > > >
> > > > +void audit_log_contid(struct audit_buffer *ab, u64 contid);
> > >
> > > If we need a forward declaration, might as well just move it up near
> > > the top of the file with the rest of the declarations.
> >
> > Ok.
> >
> > > > +void audit_log_contid(struct audit_buffer *ab, u64 contid)
> > > > +{
> > > > +       struct audit_contobj *cont = NULL, *prcont = NULL;
> > > > +       int h;
> > >
> > > It seems safer to pass the audit container ID object and not the u64.
> >
> > It would also be faster, but in some places it isn't available such as
> > for ptrace and signal targets.  This also links back to the drop record
> > refcounts to hold onto the contobj until process exit, or signal
> > delivery.
> >
> > What we could do is to supply two potential parameters, a contobj and/or
> > a contid, and have it use the contobj if it is valid, otherwise, use the
> > contid, as is done for names and paths supplied to audit_log_name().
> 
> Let's not do multiple parameters, that begs for misuse, let's take the
> wrapper function route:
> 
>  func a(int id) {
>    // important stuff
>  }
> 
>  func ao(struct obj) {
>    a(obj.id);
>  }
> 
> ... and we can add a comment that you *really* should be using the
> variant that passes an object.

I was already doing that where it available, and dereferencing the id
for the call.  But I see an advantage to having both parameters supplied
to the function, since it saves us the trouble of dereferencing it,
searching for the id in the hash list and re-locating the object if the
object is already available.

> > > > @@ -2705,9 +2741,10 @@ int audit_set_contid(struct task_struct *task, u64 contid)
> > > >         if (!ab)
> > > >                 return rc;
> > > >
> > > > -       audit_log_format(ab,
> > > > -                        "op=set opid=%d contid=%llu old-contid=%llu",
> > > > -                        task_tgid_nr(task), contid, oldcontid);
> > > > +       audit_log_format(ab, "op=set opid=%d contid=", task_tgid_nr(task));
> > > > +       audit_log_contid(ab, contid);
> > > > +       audit_log_format(ab, " old-contid=");
> > > > +       audit_log_contid(ab, oldcontid);
> > >
> > > This is an interesting case where contid and old-contid are going to
> > > be largely the same, only the first (current) ID is going to be
> > > different; do we want to duplicate all of those IDs?
> >
> > At first when I read your comment, I thought we could just take contid
> > and drop oldcontid, but if it fails, we still want all the information,
> > so given the way I've set up the search code in userspace, listing only
> > the newest contid in the contid field and all the rest in oldcontid
> > could be a good compromise.
> 
> This is along the lines of what I was thinking.

Good.

> paul moore

- RGB

--
Richard Guy Briggs <rgb@redhat.com>
Sr. S/W Engineer, Kernel Security, Base Operating Systems
Remote, Ottawa, Red Hat Canada
IRC: rgb, SunRaycer
Voice: +1.647.777.2635, Internal: (81) 32635


  reply	other threads:[~2020-02-05 23:51 UTC|newest]

Thread overview: 168+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-31 19:48 [PATCH ghak90 V8 00/16] audit: implement container identifier Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 01/16] audit: collect audit task parameters Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 02/16] audit: add container id Richard Guy Briggs
2020-01-22 21:28   ` Paul Moore
2020-01-22 21:28     ` Paul Moore
2020-01-30 17:53     ` Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 03/16] audit: read container ID of a process Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 04/16] audit: convert to contid list to check for orch/engine ownership Richard Guy Briggs
2020-01-22 21:28   ` Paul Moore
2020-01-22 21:28     ` Paul Moore
2020-02-04 22:51     ` Richard Guy Briggs
2020-02-04 22:51       ` Richard Guy Briggs
2020-02-05 22:40       ` Paul Moore
2020-02-05 22:40         ` Paul Moore
2019-12-31 19:48 ` [PATCH ghak90 V8 05/16] audit: log drop of contid on exit of last task Richard Guy Briggs
2020-01-22 21:28   ` Paul Moore
2020-02-04 23:02     ` Richard Guy Briggs
2020-02-04 23:02       ` Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 06/16] audit: log container info of syscalls Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 07/16] audit: add contid support for signalling the audit daemon Richard Guy Briggs
2020-01-22 21:28   ` Paul Moore
2020-01-22 21:28     ` Paul Moore
2020-01-23 16:29     ` Richard Guy Briggs
2020-01-23 17:09       ` Paul Moore
2020-01-23 20:04         ` Richard Guy Briggs
2020-01-23 21:35           ` Paul Moore
2020-02-04 23:14             ` Richard Guy Briggs
2020-02-05 22:50               ` Paul Moore
2020-02-05 22:50                 ` Paul Moore
2020-02-12 22:38                 ` Steve Grubb
2020-02-13  0:09                   ` Paul Moore
2020-02-13 21:44                     ` Paul Moore
2020-03-12 19:30                       ` Richard Guy Briggs
2020-03-12 19:30                         ` Richard Guy Briggs
2020-03-13 16:29                         ` Paul Moore
2020-03-13 16:29                           ` Paul Moore
2020-03-13 18:59                           ` Richard Guy Briggs
2020-03-13 18:59                             ` Richard Guy Briggs
2020-03-18 20:56                             ` Paul Moore
2020-03-18 20:56                               ` Paul Moore
2020-03-18 21:26                               ` Richard Guy Briggs
2020-03-18 21:26                                 ` Richard Guy Briggs
2020-03-18 21:42                                 ` Paul Moore
2020-03-18 21:42                                   ` Paul Moore
2020-03-18 21:55                                   ` Richard Guy Briggs
2020-03-18 21:55                                     ` Richard Guy Briggs
2020-03-18 22:06                                     ` Paul Moore
2020-03-18 22:06                                       ` Paul Moore
2020-03-19 22:02                                       ` Richard Guy Briggs
2020-03-19 22:02                                         ` Richard Guy Briggs
2020-03-24  0:16                                         ` Paul Moore
2020-03-24  0:16                                           ` Paul Moore
2020-03-24 21:01                                           ` Richard Guy Briggs
2020-03-24 21:01                                             ` Richard Guy Briggs
2020-03-29  3:11                                             ` Paul Moore
2020-03-29  3:11                                               ` Paul Moore
2020-03-30 13:47                                               ` Richard Guy Briggs
2020-03-30 13:47                                                 ` Richard Guy Briggs
2020-03-30 14:26                                                 ` Paul Moore
2020-03-30 14:26                                                   ` Paul Moore
2020-03-30 16:21                                                   ` Richard Guy Briggs
2020-03-30 16:21                                                     ` Richard Guy Briggs
2020-03-30 17:34                                                     ` Paul Moore
2020-03-30 17:34                                                       ` Paul Moore
2020-03-30 17:49                                                       ` Richard Guy Briggs
2020-03-30 17:49                                                         ` Richard Guy Briggs
2020-03-30 19:55                                                         ` Paul Moore
2020-03-30 19:55                                                           ` Paul Moore
2020-04-16 20:33                                                           ` Eric W. Biederman
2020-04-16 20:33                                                             ` Eric W. Biederman
2020-04-16 21:53                                                             ` Paul Moore
2020-04-16 21:53                                                               ` Paul Moore
2020-04-17 22:23                                                               ` Eric W. Biederman
2020-04-17 22:23                                                                 ` Eric W. Biederman
2020-04-22 17:24                                                                 ` Paul Moore
2020-04-22 17:24                                                                   ` Paul Moore
2020-06-08 18:03                                                                   ` Richard Guy Briggs
2020-06-08 18:03                                                                     ` Richard Guy Briggs
2020-06-17 21:33                                                                     ` Paul Moore
2020-06-17 21:33                                                                       ` Paul Moore
2020-06-19 15:22                                                                 ` Richard Guy Briggs
2020-06-19 15:22                                                                   ` Richard Guy Briggs
2020-03-12 20:27                     ` Richard Guy Briggs
2020-03-12 20:27                       ` Richard Guy Briggs
2020-03-13 16:42                       ` Paul Moore
2020-03-13 16:42                         ` Paul Moore
2020-03-13 16:45                         ` Steve Grubb
2020-03-13 16:45                           ` Steve Grubb
2020-03-13 16:49                           ` Paul Moore
2020-03-13 16:49                             ` Paul Moore
2020-03-13 19:23                         ` Richard Guy Briggs
2020-03-13 19:23                           ` Richard Guy Briggs
2020-03-18 21:01                           ` Paul Moore
2020-03-18 21:01                             ` Paul Moore
2020-03-18 21:41                             ` Richard Guy Briggs
2020-03-18 21:41                               ` Richard Guy Briggs
2020-03-18 21:47                               ` Paul Moore
2020-03-18 21:47                                 ` Paul Moore
2020-03-19 21:47                                 ` Richard Guy Briggs
2020-03-19 21:47                                   ` Richard Guy Briggs
2020-03-20 21:56                                   ` Paul Moore
2020-03-20 21:56                                     ` Paul Moore
2020-03-25 12:29                                     ` Richard Guy Briggs
2020-03-25 12:29                                       ` Richard Guy Briggs
2020-03-29  3:17                                       ` Paul Moore
2020-03-29  3:17                                         ` Paul Moore
2020-03-30 15:23                                         ` Richard Guy Briggs
2020-03-30 15:23                                           ` Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 08/16] audit: add support for non-syscall auxiliary records Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 09/16] audit: add containerid support for user records Richard Guy Briggs
2019-12-31 19:48   ` Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 10/16] audit: add containerid filtering Richard Guy Briggs
2019-12-31 19:48   ` Richard Guy Briggs
2019-12-31 19:48 ` [PATCH ghak90 V8 11/16] audit: add support for containerid to network namespaces Richard Guy Briggs
2019-12-31 19:48   ` Richard Guy Briggs
2020-01-22 21:28   ` Paul Moore
2020-01-22 21:28     ` Paul Moore
2020-02-04 23:42     ` Richard Guy Briggs
2020-02-05 22:51       ` Paul Moore
2019-12-31 19:48 ` [PATCH ghak90 V8 12/16] audit: contid check descendancy and nesting Richard Guy Briggs
2019-12-31 19:48   ` Richard Guy Briggs
2020-01-22 21:29   ` Paul Moore
2020-01-22 21:29     ` Paul Moore
2020-01-23 21:02     ` Richard Guy Briggs
2020-01-23 21:47       ` Paul Moore
2019-12-31 19:48 ` [PATCH ghak90 V8 13/16] audit: track container nesting Richard Guy Briggs
2019-12-31 19:48   ` Richard Guy Briggs
2020-01-22 21:29   ` Paul Moore
2020-01-22 21:29     ` Paul Moore
2020-01-30 19:27     ` Richard Guy Briggs
2020-02-05 23:05       ` Paul Moore
2020-02-05 23:50         ` Richard Guy Briggs [this message]
2020-02-13 21:49           ` Paul Moore
2020-03-12 20:51             ` Richard Guy Briggs
2020-03-12 20:51               ` Richard Guy Briggs
2020-03-13 16:47               ` Paul Moore
2020-03-13 16:47                 ` Paul Moore
2020-03-14 22:42                 ` Richard Guy Briggs
2020-03-14 22:42                   ` Richard Guy Briggs
2020-03-17 18:28                   ` Richard Guy Briggs
2020-03-17 18:28                     ` Richard Guy Briggs
2020-03-18 21:08                   ` Paul Moore
2020-03-18 21:08                     ` Paul Moore
2020-01-31 14:50     ` Steve Grubb
2020-02-04 13:19       ` Richard Guy Briggs
2020-02-04 15:47         ` Steve Grubb
2020-02-04 15:47           ` Steve Grubb
2020-02-04 15:52           ` Paul Moore
2020-02-04 15:52             ` Paul Moore
2020-02-04 18:12             ` Steve Grubb
2020-02-05 22:57               ` Paul Moore
2020-02-05 22:57                 ` Paul Moore
2019-12-31 19:48 ` [PATCH ghak90 V8 14/16] audit: check contid depth and add limit config param Richard Guy Briggs
2020-01-22 21:29   ` Paul Moore
2020-01-22 21:29     ` Paul Moore
2019-12-31 19:48 ` [PATCH ghak90 V8 15/16] audit: check contid count per netns and add config param limit Richard Guy Briggs
2020-01-22 21:29   ` Paul Moore
2020-01-22 21:29     ` Paul Moore
2019-12-31 19:48 ` [PATCH ghak90 V8 16/16] audit: add capcontid to set contid outside init_user_ns Richard Guy Briggs
2020-01-22 21:29   ` Paul Moore
2020-01-22 21:29     ` Paul Moore
2020-02-05  0:39     ` Richard Guy Briggs
2020-02-05 22:56       ` Paul Moore
2020-02-06 12:51         ` Richard Guy Briggs
2020-02-13 21:58           ` Paul Moore
2020-02-13 21:58             ` Paul Moore
2020-03-12 21:58             ` Richard Guy Briggs
2020-03-12 21:58               ` Richard Guy Briggs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200205235056.e5365xtgz7rbese2@madcap2.tricolour.ca \
    --to=rgb@redhat.com \
    --cc=containers@lists.linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=eparis@parisplace.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-audit@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpatel@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=nhorman@tuxdriver.com \
    --cc=paul@paul-moore.com \
    --cc=serge@hallyn.com \
    --cc=simo@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.