On Tue, 2022-12-20 at 18:16 -0500, Steve Grubb wrote:
Hello Burn,

On Tuesday, December 20, 2022 5:36:28 PM EST Burn Alting wrote:
I note that the unsolicited AUDIT_BPF audit event only provides a program
id and operation (load or unload). For example, 	type=BPF
msg=audit(21/12/22 09:03:35.765:439) : prog-id=75 op=LOAD or	type=BPF
msg=audit(21/12/22 09:04:05.883:460) : prog-id=0 op=UNLOAD
I also note that the bpf auxillary structure (struct bpf_prog_aux) that
holds the program id value, also holds a name (struct bpf_prog_aux->name)
and uid  (struct bpf_prog_aud->user_struct->uid). Perhaps adding these two
items to the AUDIT_BPF event would provide more security context for this
unsolicited event. Thoughts?

I agree that the resulting event leaves a lot to be desired. When the patch 
was being merged, I think it was pointed out that all we have is a number. 
The BPF folks seemed to insist that was all that was needed. They never 
explained how to use that number for anything practical like knowing what was 
loaded. If anything can be done to improve the situation, I'd like to 
encourage a patch. Systemd triggers a bunch of these events. But what it's 
doing is unknowable.

-Steve

And to cap this off, the program id will always be zero on an UNLOAD, as
the routine that sets it to zero, kernel/bpf/syscall.c:bpf_prog_free_id(),
is called before the emit audit event routine, kernel/bpf/syscall.c:bpf_audit_prog().

So a bug!
Rgds