public inbox for linux-audit@redhat.com
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: Steve Grubb <sgrubb@redhat.com>
Cc: "Stanislav Kozina" <skozina@redhat.com>,
	"Yauheni Kaliuta" <yauheni.kaliuta@redhat.com>,
	"Toke Høiland-Jørgensen" <toke@redhat.com>,
	"Jiri Benc" <jbenc@redhat.com>,
	"Arnaldo Carvalho de Melo" <acme@redhat.com>,
	linux-audit@redhat.com,
	"Jesper Dangaard Brouer" <brouer@redhat.com>,
	"Vlad Dronov" <vdronov@redhat.com>
Subject: Re: [RFC] audit support for BPF notification
Date: Wed, 14 Aug 2019 09:33:23 +0200	[thread overview]
Message-ID: <20190814073323.GA16363@krava> (raw)
In-Reply-To: <20190812143257.GC23992@krava>

hi,
Adding Vlad Dronov to the loop, because he asked
about this functionality some time ago.

Vlad, the full thread can be found in here:
  https://www.redhat.com/archives/linux-audit/2019-August/msg00004.html

Any thoughts on this?

thanks,
jirka

On Mon, Aug 12, 2019 at 04:33:10PM +0200, Jiri Olsa wrote:
> On Mon, Aug 12, 2019 at 09:49:43AM -0400, Steve Grubb wrote:
> > On Monday, August 12, 2019 3:59:22 AM EDT Jiri Olsa wrote:
> > > On Fri, Aug 09, 2019 at 01:45:21PM -0400, Steve Grubb wrote:
> > > > Hello,
> > > > 
> > > > On Friday, August 9, 2019 10:18:31 AM EDT Jiri Olsa wrote:
> > > > > I posted initial change that allows auditd to log BPF program
> > > > > 
> > > > > load/unload events, it's in here:
> > > > >   https://github.com/linux-audit/audit-userspace/pull/104
> > > > 
> > > > Thanks for the patch...but we probably should have talked a bit more
> > > > before undertaking this effort. We normally do not audit from user space
> > > > what happens in the kernel. Doing this can be racy and it keeps auditd
> > > > from doing the one job it has - which is to grab events and record them
> > > > to disk and send them out the realtime interface.
> > > > 
> > > > > We tried to push pure AUDIT interface for BPF program notification,
> > > > > 
> > > > > but it was denied, the discussion is in here:
> > > > >   https://marc.info/?t=153866123200003&r=1&w=2
> > > > 
> > > > Hmm. The email I remember was here:
> > > > https://www.redhat.com/archives/linux-audit/2018-October/msg00053.html
> > > > 
> > > > and was only 2 emails long with no answer to my question. :-)
> > > 
> > > oops, sry about that, your question was:
> > > 	> I'm not sure exactly what the issue is. You can audit for specific
> > > 	> syscall
> > > 	> and argument. So, if you want to see loads, then you can make a rule
> > > 	> like:
> > > 	> 
> > > 	> -a always,exit -F arch=b64 -S bpf -F a0=5
> > > 
> > > The problem with above for us is that we also:
> > > 
> > >   - need to log also other properties of the BPF program,
> > >     which are not visible from BPF syscall arguments, like
> > >     its ID, JIT status 
> > 
> > The way this is normally done is to add a supplemental record. For example, 
> > when auditing the open syscall, we also get CWD & PATH supplemental records. 
> > When auditing connect, we get a SOCKADDR supplemental record. We have 
> > requirements around selective audit whereby the admin is in control of what 
> > is selected for audit via audit rules. So, what one could do is set a rule 
> > for the bpf syscall and then when it triggers, we get these other records 
> > added to the bpf syscall event.
> 
> right, that was the initial plan, but BPF guys wanted just
> single notification system without specific hooks for audit,
> so we ended up with perf specific interface
> 
> > >     or license info
> > 
> > This ^^ is not a security issue.
> > 
> > 
> > >   - need to see BPF program UNLOAD, which is not done
> > >     via syscall, so those would be unvisible at all
> > 
> > Is there a place in the kernel where this happens? I could see abnormal 
> > termination being something we might want. Does the program go through 
> > something like an exit syscall internally?
> 
> it's happening in here (kernel/bpf/syscall.c):
> 
> 	bpf_prog_put
> 	  __bpf_prog_put
> 	  {
> 		    if (atomic_dec_and_test(&prog->aux->refcnt)) {
> 			perf_event_bpf_event(prog, PERF_BPF_EVENT_PROG_UNLOAD, 0);
> 			...
> 	  }
> 
> BPF program is released when it drops the reference count,
> which is normally when its file descriptor is closed.
> 
> However it might get pinned and stay alive even when the initial
> file descriptor is closed.. and then there's the networking world,
> which might have some other specific ways.. but it all ends up
> in bpf_prog_put and zero reference count.
> 
> > > > > The outcome of the discussion was to use perf event interface
> > > > > for BPF notification and use it in some deamon.. audit was our
> > > > > first choice.
> > > > > 
> > > > > thoughts?
> > > > 
> > > > I'd like to understand what the basic problem is that needs to be solved.
> > > 
> > > we need a way for administrators to see the history of loaded BPF
> > > programs, to help investigating issues related to BPF.. and the
> > > only BPF interface for this data is through perf ring buffer
> > 
> > That is really not the audit way. Let's keep talking to see where this ends 
> > up.
> 
> Would you see some other auditing daemon/app in place for this kind of data?
> 
> thanks,
> jirka

  reply	other threads:[~2019-08-14  7:33 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-09 14:18 [RFC] audit support for BPF notification Jiri Olsa
2019-08-09 17:45 ` Steve Grubb
2019-08-12  7:59   ` Jiri Olsa
2019-08-12 13:49     ` Steve Grubb
2019-08-12 14:32       ` Jiri Olsa
2019-08-14  7:33         ` Jiri Olsa [this message]
2019-08-20 13:54           ` Jiri Olsa
2019-11-04 13:05             ` Jiri Benc
2019-11-04 13:28               ` Jiri Olsa
2019-11-04 13:41               ` Vladis Dronov
2019-11-04 13:46               ` Vladis Dronov
2019-11-05  0:18               ` Paul Moore

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=20190814073323.GA16363@krava \
    --to=jolsa@redhat.com \
    --cc=acme@redhat.com \
    --cc=brouer@redhat.com \
    --cc=jbenc@redhat.com \
    --cc=linux-audit@redhat.com \
    --cc=sgrubb@redhat.com \
    --cc=skozina@redhat.com \
    --cc=toke@redhat.com \
    --cc=vdronov@redhat.com \
    --cc=yauheni.kaliuta@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox