From: Daniel J Walsh <dwalsh@redhat.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: SE Linux <selinux@tycho.nsa.gov>,
Eric Paris <eparis@parisplace.org>,
James Morris <jmorris@namei.org>
Subject: Re: I think this is a bug in the kernel
Date: Fri, 09 May 2008 11:03:06 -0400 [thread overview]
Message-ID: <482467AA.6020101@redhat.com> (raw)
In-Reply-To: <1210344793.6434.221.camel@moss-spartans.epoch.ncsc.mil>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Stephen Smalley wrote:
| On Fri, 2008-05-09 at 10:42 -0400, Daniel J Walsh wrote:
|> -----BEGIN PGP SIGNED MESSAGE-----
|> Hash: SHA1
|>
|> Stephen Smalley wrote:
|> | On Fri, 2008-05-09 at 10:30 -0400, Daniel J Walsh wrote:
|> |> -----BEGIN PGP SIGNED MESSAGE-----
|> |> Hash: SHA1
|> |>
|> |> Stephen Smalley wrote:
|> |> | On Fri, 2008-05-09 at 10:16 -0400, Daniel J Walsh wrote:
|> |> |> -----BEGIN PGP SIGNED MESSAGE-----
|> |> |> Hash: SHA1
|> |> |>
|> |> |> Daniel J Walsh wrote:
|> |> |> | https://bugzilla.redhat.com/show_bug.cgi?id=445709
|> |> |> |
|> |> |> | libvirtd is clearly not ptracing the unconfined_t domain. It is
|> |> |> | problably looking under /proc for some information about the app
|> |> that is
|> |> |> | communicating with it. It might be reading unconfined_t
|> |> environment. I
|> |> |> | am not sure, but we generate a ptrace and stop the app from
|> |> working. My
|> |> |> | only choice is to allow virtd to ptrace unconfined_t processes
|> which is
|> |> |> | not a good idea. This has to be fixes in the kernel.
|> |> |> |
|> |> |> | Dan
|> |> |>
|> |> |> - --
|> |> |> 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.
|> |> |>
|> |> |> Replying to my own email...
|> |> |>
|> |> |> Looks like the kernel has it on its todo list...
|> |> |>
|> |> |> ~ * Finer-grained proc checking (so that we don't require full
ptrace
|> |> |> permission just to read process state),
|> |> |>
|> |> |> Well I think we need to jump the priority here.
|> |> |>
|> |> |> User apps seem to be doing things like looking at the remote end
|> of the
|> |> |> socket and checking the environment for special cookies in the
case of
|> |> |> consolehelper/policykit. Or may looking to see where the kerberos
|> |> |> tickets are located. Whether this is a legitimate use or not,
it is
|> |> |> being done.
|> |> |
|> |> | That's decidedly racy and unsafe to do. They shouldn't do that.
|> |> |
|> |> |> So we need to handle it. But I have a real concern about
|> |> |> allowing virtd_t to ptrace unconfined_t process.
|> |> |>
|> |> |> Basically in order to allow virtd_t to verify the unconfined_t
process
|> |> |> that is trying to communicate with it, we need to allow it to
read the
|> |> |> memory of every unconfined_t process on the system. Not good.
|> |> |
|> |> |
|> |> I think this is policykit that is triggering it. And with the
advent of
|> |> ~ /proc/$$/sessionid it will become less racy.
|> |>
|> |> But for now it is what they do.
|> |>
|> |> policykit is looking for a unique identifier to identify the "session"
|> |> of the process that is trying to communicate with it. It then uses
|> |> consolekit to determine whether the "session" is on the console as
|> |> opposed to logged in via ssh or some other remote application.
|> |
|> | So they have two options:
|> | - transfer the session id/cookie in the data of the request (i.e.
it's a
|> | capability), or
|> | - extend the kernel the way we did to convey the peer or sender's
|> | security context on a local IPC to the receiver (e.g. getpeercon(3)).
|> |
|> | Reading /proc files for that purpose is not the way to go.
|> |
|> You can argue whether what they are doing is right or wrong, this is
|> afterall just userspace apps trying to get key data about the remote
|> connection without forcing minor/major changes onto the kernel.
|
| Yes, usually you do that either by making it part of the request data (a
| capability/token) so that it requires no kernel change or by extending
| the kernel to pass additional metadata on IPC as has been done for both
| audit and SELinux attributes in the past.
|
|> But
|> whether we like it or not, what they are doing is far less dangerous
|> then ptrace/sys_ptrace capability will allow them.
|>
|> Reading /proc/PID/environ or /proc/PID/sessionid should require
|> different access then ptrace.
|
| I agree, which is why I originally said we should try to split the
| checking so that we can distinguish read-only from control/manipulate
| access.
|
| But reading a /proc/pid file for a client process is inherently racy -
| you have no guarantee that the info you are reading is for the actual
| process that made the connection, e.g. process may connect, fork child,
| exec suid program in parent, child retains access to socket, server
| looks up /proc/pid data for parent, server sees suid program's
| information, child transmits request.
|
|> I could also see apps potentially looking at /proc/PID/mounts to see if
|> the namespace is different.
|
I understand, and I believe sessionid is supposed to be frozen and
protect against this. The only way to change sessionid is via login
programs with a certain capability.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
iEYEARECAAYFAkgkZ6oACgkQrlYvE4MpobN1iwCcC+GwHVvBTbQZU+JN0pdyncag
9dUAoNGmI4/4LtZhrWv+POGlQKLgi6+J
=f/hJ
-----END PGP SIGNATURE-----
--
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 prev parent reply other threads:[~2008-05-09 15:03 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-09 13:47 I think this is a bug in the kernel Daniel J Walsh
2008-05-09 14:14 ` Stephen Smalley
2008-05-09 14:16 ` Daniel J Walsh
2008-05-09 14:25 ` Stephen Smalley
2008-05-09 14:30 ` Daniel J Walsh
2008-05-09 14:34 ` Stephen Smalley
2008-05-09 14:42 ` Daniel J Walsh
2008-05-09 14:53 ` Stephen Smalley
2008-05-09 15:03 ` Daniel J Walsh [this message]
2008-05-12 12:26 ` Daniel J Walsh
2008-05-12 13:08 ` Stephen Smalley
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=482467AA.6020101@redhat.com \
--to=dwalsh@redhat.com \
--cc=eparis@parisplace.org \
--cc=jmorris@namei.org \
--cc=sds@tycho.nsa.gov \
--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: link
Be 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.