Secure generic netlink messages
Thomas Graf
tgraf at infradead.org
Thu Jan 13 05:08:29 EST 2011
On Sun, Dec 26, 2010 at 01:09:23PM +0100, Yves Langisch wrote:
> All,
>
> I have a userspace process that makes use of generic netlink to
> communicate with my kernel module (bi-directional, unicast). As there
> are also sensitive data being exchanged I'd like to know what are the
> possibilites an attacker have to intercept the netlink messages?
>
> I saw the function 'nl_socket_set_passcred' to pass uid/gid/pid to the
> kernel. I think that would help to secure the messages passed to the
> kernel as I could check for the uid/gid pair which is unique for the
> userspace process in my case. But I have not found any possibility in my
> kernel module to get access to this data when a generic netlink
> operation is being callbacked. How can I access these credentials in my
> operation?
Use the macro
NETLINK_CREDS(skb)
it returns 'struct ucred *':
struct ucred {
__u32 pid;
__u32 uid;
__u32 gid;
};
Therefore
NETLINK_CREDS(skb)->pid
will give you the pid.
More information about the libnl
mailing list