All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Moore <paul@paul-moore.com>
To: Richard Guy Briggs <rgb@redhat.com>
Cc: Tony Jones <tonyj@suse.de>, Jeff Mahoney <jeffm@suse.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Eric Paris <eparis@redhat.com>,
	Linux-Audit Mailing List <linux-audit@redhat.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, Eric Paris <eparis@parisplace.org>
Subject: Re: [PATCH v4 2/3] audit: add support for the openat2 syscall
Date: Wed, 9 Feb 2022 17:29:21 -0500	[thread overview]
Message-ID: <CAHC9VhRaenJq65nUKjU6U+wFJ5HJU6Qq0Yf4ejwfNyrKEP30Lw@mail.gmail.com> (raw)
In-Reply-To: <20220209214048.GF1708086@madcap2.tricolour.ca>

On Wed, Feb 9, 2022 at 4:41 PM Richard Guy Briggs <rgb@redhat.com> wrote:
> On 2022-02-09 10:57, Paul Moore wrote:
> > On Tue, Feb 8, 2022 at 10:44 PM Jeff Mahoney <jeffm@suse.com> wrote:
> > >
> > > Hi Richard -
> > >
> > > On 5/19/21 16:00, Richard Guy Briggs wrote:
> > > > The openat2(2) syscall was added in kernel v5.6 with commit fddb5d430ad9
> > > > ("open: introduce openat2(2) syscall")
> > > >
> > > > Add the openat2(2) syscall to the audit syscall classifier.
> > > >
> > > > Link: https://github.com/linux-audit/audit-kernel/issues/67
> > > > Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
> > > > Link: https://lore.kernel.org/r/f5f1a4d8699613f8c02ce762807228c841c2e26f.1621363275.git.rgb@redhat.com
> > > > ---
> > >
> > > [...]
> > >
> > > > diff --git a/kernel/auditsc.c b/kernel/auditsc.c
> > > > index d775ea16505b..3f59ab209dfd 100644
> > > > --- a/kernel/auditsc.c
> > > > +++ b/kernel/auditsc.c
> > > > @@ -76,6 +76,7 @@
> > > >  #include <linux/fsnotify_backend.h>
> > > >  #include <uapi/linux/limits.h>
> > > >  #include <uapi/linux/netfilter/nf_tables.h>
> > > > +#include <uapi/linux/openat2.h>
> > > >
> > > >  #include "audit.h"
> > > >
> > > > @@ -196,6 +197,8 @@ static int audit_match_perm(struct audit_context *ctx, int mask)
> > > >               return ((mask & AUDIT_PERM_WRITE) && ctx->argv[0] == SYS_BIND);
> > > >       case AUDITSC_EXECVE:
> > > >               return mask & AUDIT_PERM_EXEC;
> > > > +     case AUDITSC_OPENAT2:
> > > > +             return mask & ACC_MODE((u32)((struct open_how *)ctx->argv[2])->flags);
> > > >       default:
> > > >               return 0;
> > > >       }
> > >
> > > ctx->argv[2] holds a userspace pointer and can't be dereferenced like this.
> > >
> > > I'm getting oopses, like so:
> > > BUG: unable to handle page fault for address: 00007fff961bbe70
> >
> > Thanks Jeff.
> >
> > Yes, this is obviously the wrong thing to being doing; I remember
> > checking to make sure we placed the audit_openat2_how() hook after the
> > open_how was copied from userspace, but I missed the argv dereference
> > in the syscall exit path when reviewing the code.
> >
> > Richard, as we are already copying the open_how info into
> > audit_context::openat2 safely, the obvious fix is to convert
> > audit_match_perm() to use the previously copied value instead of argv.
> > If you can't submit a patch for this today please let me know.
>
> Agreed.  It would have been more awkward with the original order of the
> patches.
>
> The syscalls_file test in the audit-testsuite should have caught this.
> https://github.com/rgbriggs/audit-testsuite/commit/1c99021ae27ea23eccce2bb1861df4c9c665cd5b
> The test provided does essentially the same thing.

I would have thought so, but I've now run this multiple times on both
affected and patched kernels but I don't see the page fault on my test
system.

Anyway, that test has now been merged with the audit-testsuite as well
as some cleanup on top to test for the new OPENAT2 record when
applicable.

-- 
paul-moore.com

--
Linux-audit mailing list
Linux-audit@redhat.com
https://listman.redhat.com/mailman/listinfo/linux-audit


WARNING: multiple messages have this Message-ID (diff)
From: Paul Moore <paul@paul-moore.com>
To: Richard Guy Briggs <rgb@redhat.com>
Cc: Jeff Mahoney <jeffm@suse.com>,
	Linux-Audit Mailing List <linux-audit@redhat.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-fsdevel@vger.kernel.org, Eric Paris <eparis@parisplace.org>,
	Steve Grubb <sgrubb@redhat.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Eric Paris <eparis@redhat.com>, Tony Jones <tonyj@suse.de>
Subject: Re: [PATCH v4 2/3] audit: add support for the openat2 syscall
Date: Wed, 9 Feb 2022 17:29:21 -0500	[thread overview]
Message-ID: <CAHC9VhRaenJq65nUKjU6U+wFJ5HJU6Qq0Yf4ejwfNyrKEP30Lw@mail.gmail.com> (raw)
In-Reply-To: <20220209214048.GF1708086@madcap2.tricolour.ca>

On Wed, Feb 9, 2022 at 4:41 PM Richard Guy Briggs <rgb@redhat.com> wrote:
> On 2022-02-09 10:57, Paul Moore wrote:
> > On Tue, Feb 8, 2022 at 10:44 PM Jeff Mahoney <jeffm@suse.com> wrote:
> > >
> > > Hi Richard -
> > >
> > > On 5/19/21 16:00, Richard Guy Briggs wrote:
> > > > The openat2(2) syscall was added in kernel v5.6 with commit fddb5d430ad9
> > > > ("open: introduce openat2(2) syscall")
> > > >
> > > > Add the openat2(2) syscall to the audit syscall classifier.
> > > >
> > > > Link: https://github.com/linux-audit/audit-kernel/issues/67
> > > > Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
> > > > Link: https://lore.kernel.org/r/f5f1a4d8699613f8c02ce762807228c841c2e26f.1621363275.git.rgb@redhat.com
> > > > ---
> > >
> > > [...]
> > >
> > > > diff --git a/kernel/auditsc.c b/kernel/auditsc.c
> > > > index d775ea16505b..3f59ab209dfd 100644
> > > > --- a/kernel/auditsc.c
> > > > +++ b/kernel/auditsc.c
> > > > @@ -76,6 +76,7 @@
> > > >  #include <linux/fsnotify_backend.h>
> > > >  #include <uapi/linux/limits.h>
> > > >  #include <uapi/linux/netfilter/nf_tables.h>
> > > > +#include <uapi/linux/openat2.h>
> > > >
> > > >  #include "audit.h"
> > > >
> > > > @@ -196,6 +197,8 @@ static int audit_match_perm(struct audit_context *ctx, int mask)
> > > >               return ((mask & AUDIT_PERM_WRITE) && ctx->argv[0] == SYS_BIND);
> > > >       case AUDITSC_EXECVE:
> > > >               return mask & AUDIT_PERM_EXEC;
> > > > +     case AUDITSC_OPENAT2:
> > > > +             return mask & ACC_MODE((u32)((struct open_how *)ctx->argv[2])->flags);
> > > >       default:
> > > >               return 0;
> > > >       }
> > >
> > > ctx->argv[2] holds a userspace pointer and can't be dereferenced like this.
> > >
> > > I'm getting oopses, like so:
> > > BUG: unable to handle page fault for address: 00007fff961bbe70
> >
> > Thanks Jeff.
> >
> > Yes, this is obviously the wrong thing to being doing; I remember
> > checking to make sure we placed the audit_openat2_how() hook after the
> > open_how was copied from userspace, but I missed the argv dereference
> > in the syscall exit path when reviewing the code.
> >
> > Richard, as we are already copying the open_how info into
> > audit_context::openat2 safely, the obvious fix is to convert
> > audit_match_perm() to use the previously copied value instead of argv.
> > If you can't submit a patch for this today please let me know.
>
> Agreed.  It would have been more awkward with the original order of the
> patches.
>
> The syscalls_file test in the audit-testsuite should have caught this.
> https://github.com/rgbriggs/audit-testsuite/commit/1c99021ae27ea23eccce2bb1861df4c9c665cd5b
> The test provided does essentially the same thing.

I would have thought so, but I've now run this multiple times on both
affected and patched kernels but I don't see the page fault on my test
system.

Anyway, that test has now been merged with the audit-testsuite as well
as some cleanup on top to test for the new OPENAT2 record when
applicable.

-- 
paul-moore.com

  reply	other threads:[~2022-02-09 22:29 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-19 20:00 [PATCH v4 0/3] audit: add support for openat2 Richard Guy Briggs
2021-05-19 20:00 ` Richard Guy Briggs
2021-05-19 20:00 ` Richard Guy Briggs
2021-05-19 20:00 ` Richard Guy Briggs
2021-05-19 20:00 ` [PATCH v4 1/3] audit: replace magic audit syscall class numbers with macros Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-20  7:50   ` Christian Brauner
2021-05-20  7:50     ` Christian Brauner
2021-05-20  7:50     ` Christian Brauner
2021-05-20  7:50     ` Christian Brauner
2021-08-05 22:01   ` Paul Moore
2021-08-05 22:01     ` Paul Moore
2021-08-05 22:01     ` Paul Moore
2021-08-05 22:01     ` Paul Moore
2021-09-30 20:38     ` Paul Moore
2021-10-01 19:53       ` Richard Guy Briggs
2021-10-01 20:34         ` Paul Moore
2021-10-04 15:34           ` Paul Moore
2021-05-19 20:00 ` [PATCH v4 2/3] audit: add support for the openat2 syscall Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-20  7:58   ` Christian Brauner
2021-05-20  7:58     ` Christian Brauner
2021-05-20  7:58     ` Christian Brauner
2021-05-20  7:58     ` Christian Brauner
2021-05-24 23:04     ` Paul Moore
2021-05-24 23:04       ` Paul Moore
2021-05-24 23:04       ` Paul Moore
2021-05-24 23:04       ` Paul Moore
2022-02-09  3:44   ` Jeff Mahoney
2022-02-09  3:44     ` Jeff Mahoney
2022-02-09 15:57     ` Paul Moore
2022-02-09 15:57       ` Paul Moore
2022-02-09 21:18       ` Paul Moore
2022-02-09 21:18         ` Paul Moore
2022-02-09 22:13         ` Richard Guy Briggs
2022-02-09 22:13           ` Richard Guy Briggs
2022-02-09 22:31           ` Paul Moore
2022-02-09 22:31             ` Paul Moore
2022-02-09 21:40       ` Richard Guy Briggs
2022-02-09 21:40         ` Richard Guy Briggs
2022-02-09 22:29         ` Paul Moore [this message]
2022-02-09 22:29           ` Paul Moore
2021-05-19 20:00 ` [PATCH v4 3/3] audit: add OPENAT2 record to list how Richard Guy Briggs
2021-05-19 20:00   ` Richard Guy Briggs
2021-05-20  8:03   ` Christian Brauner
2021-05-20  8:03     ` Christian Brauner
2021-05-24 23:08     ` Paul Moore
2021-05-24 23:08       ` Paul Moore
2021-05-25 15:00       ` Richard Guy Briggs
2021-05-25 15:00         ` Richard Guy Briggs
2021-10-04 16:08   ` Paul Moore
2021-10-04 16:08     ` Paul Moore
2021-10-04 18:27     ` Richard Guy Briggs
2021-10-04 18:27       ` Richard Guy Briggs
2021-10-21 19:00       ` Steve Grubb
2021-10-21 19:44         ` 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=CAHC9VhRaenJq65nUKjU6U+wFJ5HJU6Qq0Yf4ejwfNyrKEP30Lw@mail.gmail.com \
    --to=paul@paul-moore.com \
    --cc=eparis@parisplace.org \
    --cc=eparis@redhat.com \
    --cc=jeffm@suse.com \
    --cc=linux-audit@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rgb@redhat.com \
    --cc=tonyj@suse.de \
    --cc=viro@zeniv.linux.org.uk \
    /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.