* Stephen Smalley (sds@xxxxxxxxxxxxxx) wrote:
> On Wed, 2005-02-09 at 13:37, Chris Wright wrote:
> > This means sendmsg hook would set the SID? And in that case, you'd
> > stomp on loginuid for audit messages unless they are special cased.
> I was referring to a separate field for use by security modules, not
> re-use of the same field being proposed for the loginuid. Yes, it would
> be set by the security_netlink_send hook. The principal problem with
> such a security field is that unless we mandate it to be a simple
> integer value (like a SELinux SID), we have to deal with lifecycle
> management for it, i.e. a set of hooks that starts to look like the
> sk_buff security hooks from the old LSM patch. But if we can limit it
> to a simple value, then it would be useful for such security
> identifiers, and allow receiver-side permission checks based on the
> sender SID.
This makes sense to me. Just an extension of existing eff_cap and would
be used by security modules for each netlink packet.
> > The loginuid is special case to audit, it doesn't make sense to me that
> > it is in generic netlink_skb_parms structure unless it's used by more
> > netlink users.
> So you also think it should be in the payload? That would require
> security_netlink_send to dig into the payload if we wanted to control
> who can specify other loginuids, as Serge noted.
I just don't see it making sense to add another credential for a special
case. The signal code already peaks into the siginfo struct when queueing
a signal to make sure some user isn't trying to send si_code == SI_KERNEL
or similar. Perhaps audit could do that with it's own payload during send.
No matter how we slice it, it's a special case.
Hmm, perhaps we could eliminate the whole asynchronous issue by allowing
registration of a netlink link specific security handler. Something like:
netlink_kernel_create_sec(unit, rx, sec_handler)
Then the check would be done before the packet was ever queued. This
would eliminate the if (NETLINK_CREDS(skb)->$cred == bad) on receipt
side, and push it to sender side. It would also be link specific so
audit could do it's audit payload loginuid check here. I think it would
also eliminate SELinux's need to tag the packet for later checking on
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net