smack: unix sockets: fix accept()ed socket label
authorKonstantin Andreev <andreev@swemel.ru>
Sun, 16 Jun 2024 22:44:30 +0000 (01:44 +0300)
committerCasey Schaufler <casey@schaufler-ca.com>
Wed, 19 Jun 2024 16:25:00 +0000 (09:25 -0700)
commite86cac0acdb1a74f608bacefe702f2034133a047
tree5d1ad417450597992ad7627507b8716dc24e126f
parent2fe209d0ad2e2729f7e22b9b31a86cc3ff0db550
smack: unix sockets: fix accept()ed socket label

When a process accept()s connection from a unix socket
(either stream or seqpacket)
it gets the socket with the label of the connecting process.

For example, if a connecting process has a label 'foo',
the accept()ed socket will also have 'in' and 'out' labels 'foo',
regardless of the label of the listener process.

This is because kernel creates unix child sockets
in the context of the connecting process.

I do not see any obvious way for the listener to abuse
alien labels coming with the new socket, but,
to be on the safe side, it's better fix new socket labels.

Signed-off-by: Konstantin Andreev <andreev@swemel.ru>
Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
security/smack/smack_lsm.c