Re: [PATCH bpf-next v1 00/13] MAC and Audit policy using eBPF (KRSI)
From: Andrii Nakryiko
Date: Mon Dec 30 2019 - 13:58:36 EST
On Mon, Dec 30, 2019 at 7:04 AM KP Singh <kpsingh@xxxxxxxxxxxx> wrote:
>
> On 23-Dec 22:51, Andrii Nakryiko wrote:
> > On Fri, Dec 20, 2019 at 7:42 AM KP Singh <kpsingh@xxxxxxxxxxxx> wrote:
> > >
> > > From: KP Singh <kpsingh@xxxxxxxxxx>
> > >
> > > This patch series is a continuation of the KRSI RFC
> > > (https://lore.kernel.org/bpf/20190910115527.5235-1-kpsingh@xxxxxxxxxxxx/)
> > >
> >
> > [...]
> >
> > > # Usage Examples
> > >
> > > A simple example and some documentation is included in the patchset.
> > >
> > > In order to better illustrate the capabilities of the framework some
> > > more advanced prototype code has also been published separately:
> > >
> > > * Logging execution events (including environment variables and arguments):
> > > https://github.com/sinkap/linux-krsi/blob/patch/v1/examples/samples/bpf/lsm_audit_env.c
> > > * Detecting deletion of running executables:
> > > https://github.com/sinkap/linux-krsi/blob/patch/v1/examples/samples/bpf/lsm_detect_exec_unlink.c
> > > * Detection of writes to /proc/<pid>/mem:
> > > https://github.com/sinkap/linux-krsi/blob/patch/v1/examples/samples/bpf/lsm_audit_env.c
> >
> > Are you planning on submitting these examples for inclusion into
> > samples/bpf or selftests/bpf? It would be great to have more examples
> > and we can review and suggest nicer ways to go about writing them
> > (e.g., BPF skeleton and global data Alexei mentioned earlier).
>
> Eventually, yes and in selftest/bpf.
>
> But these examples depend on using security blobs and some non-atomic
> calls in the BPF helpers which are not handled as a part of the
> initial patch-set.
>
> Once we have the initial framework finalized, I will update the
> examples and the helpers they are based on and send these separate
> patch-sets on the list for review.
Great! The reason I was asking is that once they are in selftests, it
would be nice to switch them to use all the latest BPF usability
improvements to make code cleaner and have it as another good example
of modern BPF program. Like use BTF-defined maps, BPF skeleton,
vmlinux.h, etc. We can go over this when the time comes, though :)
>
> - KP
>
> >
> > >
> > > We have updated Google's internal telemetry infrastructure and have
> > > started deploying this LSM on our Linux Workstations. This gives us more
> > > confidence in the real-world applications of such a system.
> > >
> > > KP Singh (13):
> > > bpf: Refactor BPF_EVENT context macros to its own header.
> > > bpf: lsm: Add a skeleton and config options
> > > bpf: lsm: Introduce types for eBPF based LSM
> > > bpf: lsm: Allow btf_id based attachment for LSM hooks
> > > tools/libbpf: Add support in libbpf for BPF_PROG_TYPE_LSM
> > > bpf: lsm: Init Hooks and create files in securityfs
> > > bpf: lsm: Implement attach, detach and execution.
> > > bpf: lsm: Show attached program names in hook read handler.
> > > bpf: lsm: Add a helper function bpf_lsm_event_output
> > > bpf: lsm: Handle attachment of the same program
> > > tools/libbpf: Add bpf_program__attach_lsm
> > > bpf: lsm: Add selftests for BPF_PROG_TYPE_LSM
> > > bpf: lsm: Add Documentation
> > >
> >
> > [...]