netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Moore <paul.moore@hp.com>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Cc: linux-security-module@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH] LSM: Add security_socket_post_accept() and security_socket_post_recv_datagram().
Date: Mon, 20 Apr 2009 18:22:29 -0400	[thread overview]
Message-ID: <200904201822.29529.paul.moore@hp.com> (raw)
In-Reply-To: <200904181734.ACB09871.QtVSOHMFJOLFOF@I-love.SAKURA.ne.jp>

On Saturday 18 April 2009 04:34:02 am Tetsuo Handa wrote:
> Hello.
>
> Thank you for answering my questions.

No problem.

> > I believe __skb_recv_datagram() is only called via userspace so sleeping
> > should not be an issue.
>
> NFS code needs to issue UDP send()/recv() requests from the
> kernel. Therefore, I think __skb_recv_datagram() is called from kernel
> space.

My mistake, I trusted (or misread) the comment at the start of the function.

> I'm worrying that __skb_recv_datagram() is called with a
> spinlock held.

It looks like you've already solved that issue.

> > > Q4: Is there a way to distinguish requests from userland programs and
> > > requests from kernel code?
> >
> > I'm not sure if this is the 100% correct way to do it, but in the past I
> > have always checked current->mm, for kernel threads this will be NULL.
>
> Nowadays, it will be "current->mm && !(current->flags & PF_
> KTHREAD)" because get_task_mm() says a kernel workthread may temporarily
> have a user mm to do its AIO.

Thanks, that is good to know.

> Sorry for confusing question. What I wanted to know is not "how
> can I distinguish kernel processes and userland processes". What I
> wanted to know is "how can I distinguish requests issued for processing a
> request from userland process".

I do not know of a way but someone else reading this might.

> By the way, I need to tell you one more thing about
> security_socket_post_accept() hook's usage. Not now, but in future,
> I want to introduce task's state variable which is used for dividing
> permissions within a domain.
>
>   # Example policy for /usr/sbin/sshd
>   allow_network TCP accept 10.0.0.0-10.255.255.255.255 1024-
> 65535 ; set task.state[0]=1
>   allow_network TCP accept 192.168.0.0-192.168.255.255 1024-
> 65535 ; set task.state[0]=2
>   allow_execute /bin/bash if task.state[0]=1
>   allow_execute /bin/rbash if task.state[0]=2
>
> The above example policy allows an instance of /usr/sbin/sshd to
> (a) execute /bin/bash if that instance accepted a TCP connection
>  from
>     10.0.0.0/8
> (b) execute /bin/rbash if that instance accepted a TCP
> connection from
>     192.168.0.0/16.
> (c) abort TCP connections if that instance accepted a TCP
> connection from
>     neither 10.0.0.0/8 nor 192.168.0.0/16.
>
> The security_socket_post_accept() hook is used for not only
> aborting TCP connections from unwanted peers but also associating client's
> information with a process who handles that TCP connection. The task's state
> variable definitely requires a LSM hook which is called after sock->ops->
> accept() call.

I don't have a problem with using a socket_post_accept() hook to assign/modify 
state, however, I still not like the idea of using the socket_post_accept() 
hook to abort connections.

-- 
paul moore
linux @ hp


  reply	other threads:[~2009-04-20 22:22 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-14 10:44 [PATCH] LSM: Add security_socket_post_accept() and security_socket_post_recv_datagram() Tetsuo Handa
2009-04-14 22:59 ` Paul Moore
2009-04-15  5:12   ` Tetsuo Handa
2009-04-15 10:51     ` [PATCH 1/2] " Tetsuo Handa
2009-04-15 10:51     ` [PATCH 2/2] tomoyo: Add network access control support Tetsuo Handa
2009-04-16 18:23     ` [PATCH] LSM: Add security_socket_post_accept() and security_socket_post_recv_datagram() Paul Moore
2009-04-18  8:34       ` Tetsuo Handa
2009-04-20 22:22         ` Paul Moore [this message]
2009-04-21 10:54           ` Tetsuo Handa
2009-04-21 10:57             ` David Miller
2009-04-21 11:39               ` Tetsuo Handa
2009-04-21 11:40                 ` David Miller
2009-04-21 12:26                   ` Tetsuo Handa
2009-04-21 12:37                     ` David Miller
2009-04-21 12:52                       ` [PATCH] LSM: Add security_socket_post_accept() andsecurity_socket_post_recv_datagram() Tetsuo Handa
2009-04-21 13:04                         ` David Miller
2009-04-22  0:55                           ` [PATCH] LSM: Add security_socket_post_accept() and security_socket_post_recv_datagram() Tetsuo Handa
2009-04-22  1:14                             ` David Miller
2009-04-22  1:49                               ` Tetsuo Handa
2009-04-22  4:22                                 ` David Miller
2009-04-22  5:02                                   ` Tetsuo Handa
2009-04-22  5:07                                     ` David Miller
2009-04-22  5:38                                       ` Tetsuo Handa
2009-04-22  5:52                                         ` David Miller
2009-04-23 14:00                                           ` Tetsuo Handa
2009-04-23 14:10                                             ` David Miller
2009-04-23 14:47                                             ` Samir Bellabes
2009-04-22  1:52                               ` Greg Lindahl
2009-04-22  4:23                                 ` David Miller
2009-04-22  6:10                                   ` Greg Lindahl
2009-04-22  6:34                                     ` David Miller
2009-04-22  6:41                                       ` Greg Lindahl
2009-04-22  6:46                                         ` David Miller
2009-04-22  6:54                                           ` Greg Lindahl
2009-04-22  6:58                                             ` David Miller
2009-04-22  7:19                                           ` Tetsuo Handa
2009-04-24  2:07                                       ` Tetsuo Handa
2009-04-24  4:35                                         ` David Miller
2009-04-24  4:41                                           ` David Miller
2009-04-24  4:55                                           ` Tetsuo Handa
2009-04-24  5:26                                           ` Tetsuo Handa
2009-04-24 11:40                                             ` David Miller
2009-04-24 13:57                                               ` [PATCH] LSM: Add security_socket_post_accept() andsecurity_socket_post_recv_datagram() Tetsuo Handa
2009-04-19  8:03 ` [PATCH v2] LSM: Add security_socket_post_accept() and security_socket_post_recv_datagram() Tetsuo Handa

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=200904201822.29529.paul.moore@hp.com \
    --to=paul.moore@hp.com \
    --cc=linux-security-module@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).