mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-api@vger.kernel.org, linux-kernel@vger.kernel.org,
	john.stultz@linaro.org, arnd@arndb.de, tj@kernel.org,
	marcel@holtmann.org, desrt@desrt.ca, hadess@hadess.net,
	dh.herrmann@gmail.com, tixxdz@opendz.org,
	simon.mcvittie@collabora.co.uk, daniel@zonque.org,
	alban.crequy@collabora.co.uk, javier.martinez@collabora.co.uk,
	teg@jklm.no, Andy Lutomirski <luto@amacapital.net>
Subject: Re: kdbus: add code for buses, domains and endpoints
Date: Wed, 29 Oct 2014 20:59:44 -0700	[thread overview]
Message-ID: <8738a6w6kv.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <1414620056-6675-9-git-send-email-gregkh@linuxfoundation.org> (Greg Kroah-Hartman's message of "Wed, 29 Oct 2014 15:00:52 -0700")

Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:

The way capabilities are checked in this patch make me very nervous.

We are not checking permissions at open time.  Every other location
of calling capable on file like objects has been show to be suceptible
to file descriptor pass attacks.

> See Documentation/kdbus.txt for more details.
>
> Signed-off-by: Daniel Mack <daniel@zonque.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---

> diff --git a/drivers/misc/kdbus/bus.c b/drivers/misc/kdbus/bus.c
> new file mode 100644
> index 000000000000..6dcaf22f5d59
> --- /dev/null
> +++ b/drivers/misc/kdbus/bus.c
> @@ -0,0 +1,450 @@

> +/**
> + * kdbus_bus_cred_is_privileged() - check whether the given credentials in
> + *				    combination with the capabilities of the
> + *				    current thead are privileged on the bus
> + * @bus:		The bus to check
> + * @cred:		The credentials to match
> + *
> + * Return: true if the credentials are privileged, otherwise false.
> + */
> +bool kdbus_bus_cred_is_privileged(const struct kdbus_bus *bus,
> +				  const struct cred *cred)
> +{
> +	/* Capabilities are *ALWAYS* tested against the current thread, they're
> +	 * never remembered from conn-credentials. */
> +	if (ns_capable(&init_user_ns, CAP_IPC_OWNER))
> +		return true;
> +
> +	return uid_eq(bus->uid_owner, cred->fsuid);
> +}
> +
> +/**
> + * kdbus_bus_uid_is_privileged() - check whether the current user is a
> + *				   priviledged bus user
> + * @bus:		The bus to check
> + *
> + * Return: true if the current user has CAP_IPC_OWNER capabilities, or
> + * if it has the same UID as the user that created the bus. Otherwise,
> + * false is returned.
> + */
> +bool kdbus_bus_uid_is_privileged(const struct kdbus_bus *bus)
> +{
> +	return kdbus_bus_cred_is_privileged(bus, current_cred());
> +}


> +/**
> + * kdbus_bus_new() - create a new bus
> + * @domain:		The domain to work on
> + * @make:		Pointer to a struct kdbus_cmd_make containing the
> + *			details for the bus creation
> + * @name:		Name of the bus
> + * @bloom:		Bloom parameters for this bus
> + * @mode:		The access mode for the device node
> + * @uid:		The uid of the device node
> + * @gid:		The gid of the device node
> + * @bus:		Pointer to a reference where the new bus is stored
> + *
> + * This function will allocate a new kdbus_bus and link it to the given
> + * domain.
> + *
> + * Return: 0 on success, negative errno on failure.
> + */
> +int kdbus_bus_new(struct kdbus_domain *domain,
> +		  const struct kdbus_cmd_make *make,
> +		  const char *name,
> +		  const struct kdbus_bloom_parameter *bloom,
> +		  umode_t mode, kuid_t uid, kgid_t gid,
> +		  struct kdbus_bus **bus)
> +{
[snip]
> +
> +	if (!capable(CAP_IPC_OWNER) &&
> +	    atomic_inc_return(&b->user->buses) > KDBUS_USER_MAX_BUSES) {
> +		atomic_dec(&b->user->buses);
> +		ret = -EMFILE;
> +		goto exit_unref_user_unlock;
> +	}
> +

  reply	other threads:[~2014-10-30  4:00 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-29 22:00 [PATCH 00/12] Add kdbus implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add documentation Greg Kroah-Hartman
2014-10-30 12:20   ` Peter Meerwald
2014-11-02  1:29     ` Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add header file Greg Kroah-Hartman
2014-10-30  8:20   ` Arnd Bergmann
2014-10-30 11:02     ` Tom Gundersen
2014-10-30 11:26       ` Arnd Bergmann
2014-10-30 11:52         ` Daniel Mack
2014-10-30 12:03           ` Arnd Bergmann
2014-10-31 10:03             ` Daniel Mack
2014-10-29 22:00 ` kdbus: add driver skeleton, ioctl entry points and utility functions Greg Kroah-Hartman
2014-10-30  3:50   ` Eric W. Biederman
2014-10-30 23:45   ` Thomas Gleixner
2014-10-31  0:23     ` Jiri Kosina
2014-10-31  0:42       ` Thomas Gleixner
2014-10-29 22:00 ` kdbus: add connection pool implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add connection, queue handling and message validation code Greg Kroah-Hartman
     [not found]   ` <87k33iw759.fsf@x220.int.ebiederm.org>
2014-10-30  3:55     ` Andy Lutomirski
2014-10-30  9:06       ` Djalal Harouni
2014-10-29 22:00 ` kdbus: add code to gather metadata Greg Kroah-Hartman
2014-10-29 22:33   ` Andy Lutomirski
2014-10-30  0:13     ` Andy Lutomirski
2014-10-30  8:45       ` Daniel Mack
2014-10-30 14:07         ` Andy Lutomirski
2014-10-30 15:54           ` Daniel Mack
2014-10-30 21:01             ` Andy Lutomirski
2014-11-01 11:05               ` Daniel Mack
2014-11-01 16:19                 ` Andy Lutomirski
2014-11-03 12:00                   ` Simon McVittie
2014-11-03 17:05                     ` Andy Lutomirski
2014-10-30  8:09     ` Daniel Mack
2014-10-29 22:00 ` kdbus: add code for notifications and matches Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add code for buses, domains and endpoints Greg Kroah-Hartman
2014-10-30  3:59   ` Eric W. Biederman [this message]
2014-10-30  9:58     ` Djalal Harouni
2014-10-30 12:15       ` Eric W. Biederman
2014-10-30 14:48         ` Djalal Harouni
2014-10-30 14:58           ` Andy Lutomirski
2014-10-30 18:08             ` Djalal Harouni
2014-10-30 18:46               ` Simon McVittie
2014-11-05 19:59                 ` Djalal Harouni
2014-10-30 20:37               ` Andy Lutomirski
     [not found]                 ` <m2ublh$5h7$2@ger.gmane.org>
2014-10-30 22:00                   ` Andy Lutomirski
2014-10-30 23:38   ` How Not To Use kref (was Re: kdbus: add code for buses, domains and endpoints) Al Viro
2014-10-31 18:00     ` Linus Torvalds
2014-10-31 19:56       ` Al Viro
2014-11-04  9:11     ` David Herrmann
2014-10-31  1:39   ` kdbus: add code for buses, domains and endpoints Al Viro
2014-10-31  9:55     ` Daniel Mack
2014-10-29 22:00 ` kdbus: add name registry implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add policy database implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add Makefile, Kconfig and MAINTAINERS entry Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add selftests Greg Kroah-Hartman
2014-10-30  8:31   ` Arnd Bergmann
2014-11-14  3:42   ` Michael Ellerman
2014-11-14  8:56     ` Daniel Mack
2014-10-29 22:15 ` [PATCH 00/12] Add kdbus implementation Greg KH
2014-10-30  4:04   ` Eric W. Biederman
2014-10-30  7:12     ` Daniel Mack
2014-10-29 22:15 ` Andy Lutomirski
2014-10-29 22:27   ` Greg Kroah-Hartman
2014-10-29 22:34     ` Andy Lutomirski
2014-10-30  2:27     ` Andy Lutomirski
2014-10-30  4:20       ` Eric W. Biederman
2014-10-30 10:15         ` Tom Gundersen
2014-10-30 12:02           ` Eric W. Biederman
2014-10-30 13:48           ` Andy Lutomirski
2014-10-29 22:19 ` Andy Lutomirski
2014-10-29 22:25   ` Greg Kroah-Hartman
2014-10-29 22:28     ` Andy Lutomirski
2014-10-29 22:36       ` Andy Lutomirski
2014-10-30  7:44       ` Daniel Mack
2014-11-05 14:34   ` Daniel Mack
2014-10-29 23:00 ` Jiri Kosina
2014-10-29 23:11   ` Greg Kroah-Hartman
2014-10-29 23:12     ` Greg Kroah-Hartman
2014-10-29 23:24     ` Jiri Kosina
2014-10-29 23:26       ` Jiri Kosina
2014-10-29 23:34         ` Greg Kroah-Hartman
2014-10-29 23:40       ` Greg Kroah-Hartman
2014-10-29 23:55         ` Andy Lutomirski
2014-10-30 11:52           ` Tom Gundersen
2014-10-30 12:28             ` Simon McVittie
2014-10-30 13:59             ` Andy Lutomirski
2014-10-30 20:28               ` Alex Elsayed
2014-10-30  9:51         ` Karol Lewandowski
2014-10-30 10:44           ` Karol Lewandowski
2014-10-30 14:47             ` Greg Kroah-Hartman
2014-10-30 19:55               ` Karol Lewandowski
2014-10-30 20:24                 ` Greg Kroah-Hartman
2014-10-31 11:15                   ` Karol Lewandowski
2014-10-30 23:13                 ` One Thousand Gnomes
2014-10-31 10:58                   ` Karol Lewandowski
2014-10-30 23:39                 ` Paul Moore
2014-10-31 14:21                   ` Karol Lewandowski
     [not found]                     ` <1414773397-26490-1-git-send-email-k.lewandowsk@samsung.com>
     [not found]                       ` <20141107180120.GA15387@kroah.com>
2014-11-09  0:07                         ` [RFC PATCH 0/5] kdbus: add support for lsm Karol Lewandowski
     [not found]                       ` <1414773397-26490-2-git-send-email-k.lewandowsk@samsung.com>
2014-11-17  1:47                         ` [PATCH 1/5] kdbus: extend structures with security pointer " Karol Lewandowski
2014-11-17 18:37                           ` Greg KH
2014-11-02  1:21   ` [PATCH 00/12] Add kdbus implementation Greg Kroah-Hartman
2014-11-03 14:38     ` One Thousand Gnomes
2014-10-30  8:33 ` Arnd Bergmann
2014-10-30 16:17   ` Greg Kroah-Hartman
2014-11-21  5:02 [PATCH v2 00/13] " Greg Kroah-Hartman
2014-11-21  5:02 ` kdbus: add code for buses, domains and endpoints Greg Kroah-Hartman
2014-11-21  8:14   ` Harald Hoyer
2014-11-21  8:39   ` Harald Hoyer

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=8738a6w6kv.fsf@x220.int.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=alban.crequy@collabora.co.uk \
    --cc=arnd@arndb.de \
    --cc=daniel@zonque.org \
    --cc=desrt@desrt.ca \
    --cc=dh.herrmann@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hadess@hadess.net \
    --cc=javier.martinez@collabora.co.uk \
    --cc=john.stultz@linaro.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=marcel@holtmann.org \
    --cc=simon.mcvittie@collabora.co.uk \
    --cc=teg@jklm.no \
    --cc=tixxdz@opendz.org \
    --cc=tj@kernel.org \
    /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

all inboxes | Powered by JetHome®