mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
[NetLabel]: protect the CIPSOv4 socket option from setsockopt()
This patch makes two changes to protect applications from either removing or tampering with the CIPSOv4 IP option on a socket. The first is the requirement that applications have the CAP_NET_RAW capability to set an IPOPT_CIPSO option on a socket; this prevents untrusted applications from setting their own CIPSOv4 security attributes on the packets they send. The second change is to SELinux and it prevents applications from setting any IPv4 options when there is an IPOPT_CIPSO option already present on the socket; this prevents applications from removing CIPSOv4 security attributes from the packets they send. Signed-off-by: Paul Moore <paul.moore@hp.com> Signed-off-by: James Morris <jmorris@namei.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
920b868ae1
commit
f8687afefc
5 changed files with 58 additions and 6 deletions
|
@ -3313,7 +3313,13 @@ static int selinux_socket_getpeername(struct socket *sock)
|
|||
|
||||
static int selinux_socket_setsockopt(struct socket *sock,int level,int optname)
|
||||
{
|
||||
return socket_has_perm(current, sock, SOCKET__SETOPT);
|
||||
int err;
|
||||
|
||||
err = socket_has_perm(current, sock, SOCKET__SETOPT);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return selinux_netlbl_socket_setsockopt(sock, level, optname);
|
||||
}
|
||||
|
||||
static int selinux_socket_getsockopt(struct socket *sock, int level,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue