Re: [PATCH 3/4] AUDIT: audit when fcaps increase the permitted or inheritable capabilities

Eric Paris
2008-10-29T21:58:39Z

On Wed, 2008-10-22 at 21:13 -0700, Andrew G. Morgan wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Serge E. Hallyn wrote:
> >>> ... except if (!issecure(SECURE_NOROOT) && uid==0) I guess?
> >>>
> >>> And then it also might be interesting in the case where
> >>> (!issecure(SECURE_NOROOT) && uid==0) and pP is not full.
> >> I guess so, although this seems like a case of being interested in a
> >> (unusual) non-privileged execve().
> >
> > I'm not sure what you mean - but this can only happen if bits are taken
> > out of the capability bounding set, right?
>
> Yes, it can happen as you say.
>
> This is a case of an unprivileged uid==0 execution. Since we don't
> appear to want to audit other non-privileged execve()s, its not clear to
> me that this one deserves attention.

So what did you two agree on for when to collect fcaps type information?
Any time bprm->cap_post_exec_permitted is non-zero?

> >>>>> rc = bprm_caps_from_vfs_caps(&vcaps, bprm);
> >>>>>
> >>>>> + audit_log_bprm_fcaps(bprm, &vcaps);
> >>>>> +
> >>>> When rc != 0, the execve() will fail. Is it appropriate to log in this case?
> >>> It might fail because fP contains bits not in pP', right? That's
> >>> probably interesting to auditors.
> >> In which case, how is the fact it didn't execute captured in the audit log?
> >
> > I assume as a FAIL? (Not sure of the exact wording in the logs)
>
> OK. As long as its clearly identified as a failure and the logs are not
> misleading - making it look like the execve() succeeded with privilege -
> then I'm not as concerned.

The syscall record (rather than this auxilary fcaps record) will
indicate that the syscall failed. it says something like success=no.