From: James Morris <jmorris@redhat.com> To: Andrew Morton <akpm@osdl.org> Cc: linux-kernel@vger.kernel.org, <selinux@tycho.nsa.gov>, Stephen Smalley <sds@epoch.ncsc.mil> Subject: [PATCH][SELINUX] 2/2 Add SEND_MSG and RECV_MSG controls Date: Tue, 13 Jan 2004 13:31:27 -0500 (EST) [thread overview] Message-ID: <Xine.LNX.4.44.0401131326240.6829-100000@thoron.boston.redhat.com> (raw) In-Reply-To: <Xine.LNX.4.44.0401131318410.6829@thoron.boston.redhat.com> This patch implements two new access controls for SELinux: SEND_MSG and RECV_MSG, providing mediation of network packets based on destination port (IPv4 only at this stage). Please apply. security/selinux/hooks.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 43 insertions(+), 4 deletions(-) diff -urN -X dontdiff linux-2.6.1-rc3.pending/security/selinux/hooks.c linux-2.6.1-rc3.w1/security/selinux/hooks.c --- linux-2.6.1-rc3.pending/security/selinux/hooks.c 2004-01-08 13:56:32.000000000 -0500 +++ linux-2.6.1-rc3.w1/security/selinux/hooks.c 2004-01-08 14:37:03.251274816 -0500 @@ -2694,7 +2694,7 @@ static int selinux_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) { int err = 0; - u32 netif_perm, node_perm, node_sid; + u32 netif_perm, node_perm, node_sid, recv_perm = 0; struct socket *sock; struct inode *inode; struct net_device *dev; @@ -2735,11 +2735,13 @@ case SECCLASS_UDP_SOCKET: netif_perm = NETIF__UDP_RECV; node_perm = NODE__UDP_RECV; + recv_perm = UDP_SOCKET__RECV_MSG; break; case SECCLASS_TCP_SOCKET: netif_perm = NETIF__TCP_RECV; node_perm = NODE__TCP_RECV; + recv_perm = TCP_SOCKET__RECV_MSG; break; default: @@ -2766,6 +2768,20 @@ err = avc_has_perm(isec->sid, node_sid, SECCLASS_NODE, node_perm, NULL, &ad); + if (recv_perm) { + u32 port_sid; + + /* Fixme: make this more efficient */ + err = security_port_sid(sk->sk_family, sk->sk_type, + sk->sk_protocol, ntohs(ad.u.net.dport), + &port_sid); + if (err) + goto out; + + err = avc_has_perm(isec->sid, port_sid, isec->sclass, + recv_perm, NULL, &ad); + } + out: return err; } @@ -2826,7 +2842,8 @@ int (*okfn)(struct sk_buff *)) { int err = NF_ACCEPT; - u32 netif_perm, node_perm, node_sid; + u32 netif_perm, node_perm, node_sid, send_perm = 0; + struct sock *sk; struct socket *sock; struct inode *inode; struct iphdr *iph; @@ -2837,10 +2854,11 @@ struct avc_audit_data ad; struct net_device *dev = (struct net_device *)out; - if (!skb->sk) + sk = skb->sk; + if (!sk) goto out; - sock = skb->sk->sk_socket; + sock = sk->sk_socket; if (!sock) goto out; @@ -2861,11 +2879,13 @@ case SECCLASS_UDP_SOCKET: netif_perm = NETIF__UDP_SEND; node_perm = NODE__UDP_SEND; + send_perm = UDP_SOCKET__SEND_MSG; break; case SECCLASS_TCP_SOCKET: netif_perm = NETIF__TCP_SEND; node_perm = NODE__TCP_SEND; + send_perm = TCP_SOCKET__SEND_MSG; break; default: @@ -2892,6 +2912,25 @@ err = avc_has_perm(isec->sid, node_sid, SECCLASS_NODE, node_perm, NULL, &ad) ? NF_DROP : NF_ACCEPT; + if (err != NF_ACCEPT) + goto out; + + if (send_perm) { + u32 port_sid; + + /* Fixme: make this more efficient */ + err = security_port_sid(sk->sk_family, + sk->sk_type, + sk->sk_protocol, + ntohs(ad.u.net.dport), + &port_sid) ? NF_DROP : NF_ACCEPT; + if (err != NF_ACCEPT) + goto out; + + err = avc_has_perm(isec->sid, port_sid, isec->sclass, + send_perm, NULL, &ad) ? NF_DROP : NF_ACCEPT; + } + out: return err; }
WARNING: multiple messages have this Message-ID (diff)
From: James Morris <jmorris@redhat.com> To: Andrew Morton <akpm@osdl.org> Cc: linux-kernel@vger.kernel.org, <selinux@tycho.nsa.gov>, Stephen Smalley <sds@epoch.ncsc.mil> Subject: [PATCH][SELINUX] 2/2 Add SEND_MSG and RECV_MSG controls Date: Tue, 13 Jan 2004 13:31:27 -0500 (EST) [thread overview] Message-ID: <Xine.LNX.4.44.0401131326240.6829-100000@thoron.boston.redhat.com> (raw) In-Reply-To: <Xine.LNX.4.44.0401131318410.6829@thoron.boston.redhat.com> This patch implements two new access controls for SELinux: SEND_MSG and RECV_MSG, providing mediation of network packets based on destination port (IPv4 only at this stage). Please apply. security/selinux/hooks.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 43 insertions(+), 4 deletions(-) diff -urN -X dontdiff linux-2.6.1-rc3.pending/security/selinux/hooks.c linux-2.6.1-rc3.w1/security/selinux/hooks.c --- linux-2.6.1-rc3.pending/security/selinux/hooks.c 2004-01-08 13:56:32.000000000 -0500 +++ linux-2.6.1-rc3.w1/security/selinux/hooks.c 2004-01-08 14:37:03.251274816 -0500 @@ -2694,7 +2694,7 @@ static int selinux_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) { int err = 0; - u32 netif_perm, node_perm, node_sid; + u32 netif_perm, node_perm, node_sid, recv_perm = 0; struct socket *sock; struct inode *inode; struct net_device *dev; @@ -2735,11 +2735,13 @@ case SECCLASS_UDP_SOCKET: netif_perm = NETIF__UDP_RECV; node_perm = NODE__UDP_RECV; + recv_perm = UDP_SOCKET__RECV_MSG; break; case SECCLASS_TCP_SOCKET: netif_perm = NETIF__TCP_RECV; node_perm = NODE__TCP_RECV; + recv_perm = TCP_SOCKET__RECV_MSG; break; default: @@ -2766,6 +2768,20 @@ err = avc_has_perm(isec->sid, node_sid, SECCLASS_NODE, node_perm, NULL, &ad); + if (recv_perm) { + u32 port_sid; + + /* Fixme: make this more efficient */ + err = security_port_sid(sk->sk_family, sk->sk_type, + sk->sk_protocol, ntohs(ad.u.net.dport), + &port_sid); + if (err) + goto out; + + err = avc_has_perm(isec->sid, port_sid, isec->sclass, + recv_perm, NULL, &ad); + } + out: return err; } @@ -2826,7 +2842,8 @@ int (*okfn)(struct sk_buff *)) { int err = NF_ACCEPT; - u32 netif_perm, node_perm, node_sid; + u32 netif_perm, node_perm, node_sid, send_perm = 0; + struct sock *sk; struct socket *sock; struct inode *inode; struct iphdr *iph; @@ -2837,10 +2854,11 @@ struct avc_audit_data ad; struct net_device *dev = (struct net_device *)out; - if (!skb->sk) + sk = skb->sk; + if (!sk) goto out; - sock = skb->sk->sk_socket; + sock = sk->sk_socket; if (!sock) goto out; @@ -2861,11 +2879,13 @@ case SECCLASS_UDP_SOCKET: netif_perm = NETIF__UDP_SEND; node_perm = NODE__UDP_SEND; + send_perm = UDP_SOCKET__SEND_MSG; break; case SECCLASS_TCP_SOCKET: netif_perm = NETIF__TCP_SEND; node_perm = NODE__TCP_SEND; + send_perm = TCP_SOCKET__SEND_MSG; break; default: @@ -2892,6 +2912,25 @@ err = avc_has_perm(isec->sid, node_sid, SECCLASS_NODE, node_perm, NULL, &ad) ? NF_DROP : NF_ACCEPT; + if (err != NF_ACCEPT) + goto out; + + if (send_perm) { + u32 port_sid; + + /* Fixme: make this more efficient */ + err = security_port_sid(sk->sk_family, + sk->sk_type, + sk->sk_protocol, + ntohs(ad.u.net.dport), + &port_sid) ? NF_DROP : NF_ACCEPT; + if (err != NF_ACCEPT) + goto out; + + err = avc_has_perm(isec->sid, port_sid, isec->sclass, + send_perm, NULL, &ad) ? NF_DROP : NF_ACCEPT; + } + out: return err; } -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with the words "unsubscribe selinux" without quotes as the message.
next parent reply other threads:[~2004-01-13 18:36 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <Xine.LNX.4.44.0401131318410.6829@thoron.boston.redhat.com> 2004-01-13 18:31 ` James Morris [this message] 2004-01-13 18:31 ` [PATCH][SELINUX] 2/2 Add SEND_MSG and RECV_MSG controls James Morris 2004-01-13 21:00 ` James Morris 2004-01-13 21:00 ` James Morris
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=Xine.LNX.4.44.0401131326240.6829-100000@thoron.boston.redhat.com \ --to=jmorris@redhat.com \ --cc=akpm@osdl.org \ --cc=linux-kernel@vger.kernel.org \ --cc=sds@epoch.ncsc.mil \ --cc=selinux@tycho.nsa.gov \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.