From: Vladis Dronov <vdronov@redhat.com>
To: Jiri Benc <jbenc@redhat.com>
Cc: "Rashid Khan" <rkhan@redhat.com>,
"Stanislav Kozina" <skozina@redhat.com>,
"Yauheni Kaliuta" <yauheni.kaliuta@redhat.com>,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"Arnaldo Carvalho de Melo" <acme@redhat.com>,
linux-audit@redhat.com,
"Jesper Dangaard Brouer" <brouer@redhat.com>,
"Petr Matousek" <pmatouse@redhat.com>,
"Jiri Olsa" <jolsa@redhat.com>
Subject: Re: [RFC] audit support for BPF notification
Date: Mon, 4 Nov 2019 08:41:08 -0500 (EST) [thread overview]
Message-ID: <2121793119.12241099.1572874868937.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20191104140518.67471654@redhat.com>
Hello, Jiri,
Unfortunately, I'm not with the Product Security anymore and cannot speak in
ProdSec name. My personal view is that we/customers must be able to log eBPF
program load/unload events in some way (not necessary by audit).
Best regards,
Vladis Dronov | Red Hat, Inc. | The Core Kernel | Senior Software Engineer
----- Original Message -----
> From: "Jiri Benc" <jbenc@redhat.com>
> To: "Jiri Olsa" <jolsa@redhat.com>
> Cc: "Steve Grubb" <sgrubb@redhat.com>, linux-audit@redhat.com, "Stanislav Kozina" <skozina@redhat.com>, "Yauheni
> Kaliuta" <yauheni.kaliuta@redhat.com>, "Toke Høiland-Jørgensen" <toke@redhat.com>, "Arnaldo Carvalho de Melo"
> <acme@redhat.com>, "Jesper Dangaard Brouer" <brouer@redhat.com>, "Vlad Dronov" <vdronov@redhat.com>, "Petr Matousek"
> <pmatouse@redhat.com>, "Rashid Khan" <rkhan@redhat.com>
> Sent: Monday, November 4, 2019 2:05:18 PM
> Subject: Re: [RFC] audit support for BPF notification
>
> Seems there have been no reply to this...
>
> Jiri, what is the current status?
>
> Vlad, what is the Product Security's view on this? Is the audit support
> for bpf programs loading/unloading a requirement for full support of
> eBPF (as opposed to tech preview)?
>
> Thanks,
>
> Jiri
>
> On Tue, 20 Aug 2019 15:54:53 +0200, Jiri Olsa wrote:
> > cc-ing Petr Matousek
> >
> > jirka
> >
> > On Wed, Aug 14, 2019 at 09:33:34AM +0200, Jiri Olsa wrote:
> > > 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
>
>
--
Linux-audit mailing list
Linux-audit@redhat.com
https://www.redhat.com/mailman/listinfo/linux-audit
next prev parent reply other threads:[~2019-11-04 13:41 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
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 [this message]
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=2121793119.12241099.1572874868937.JavaMail.zimbra@redhat.com \
--to=vdronov@redhat.com \
--cc=acme@redhat.com \
--cc=brouer@redhat.com \
--cc=jbenc@redhat.com \
--cc=jolsa@redhat.com \
--cc=linux-audit@redhat.com \
--cc=pmatouse@redhat.com \
--cc=rkhan@redhat.com \
--cc=skozina@redhat.com \
--cc=toke@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