All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Kenzior <denkenz at gmail.com>
To: iwd at lists.01.org
Subject: Re: D-Bus policies
Date: Tue, 25 Jan 2022 09:38:09 -0600	[thread overview]
Message-ID: <91fb09fe-27c0-c804-633e-aced18785d33@gmail.com> (raw)
In-Reply-To: 10342456.PfD6ZFRMnq@bagend

[-- Attachment #1: Type: text/plain, Size: 5123 bytes --]

Hi Diederik,

On 1/25/22 08:49, Diederik de Haas wrote:
> Hi Denis,
> 
> On Saturday, 22 January 2022 00:13:14 CET Denis Kenzior wrote:
>> Care to send a patch?
> 
> I technically can, but before doing that I'd like some clarification on the
> impact of such a patch as I have no-where near enough understanding of both
> D-Bus and iwd of the impact of such a patch. I 'prefer' not to have my name
> attached to a (potential) security breach ;-)
> 

No worries.

>>> Looking into possible solutions, I found 2 very similar commits ...
>>>
>>> They both link to
>>> https://www.spinics.net/lists/linux-bluetooth/msg75267.html While I lack
>>> the knowledge to fully understand what it says I did notice this: "The
>>> intent is clear: As long as you are logged in to a local machine, and you
>>> are the foreground/active console, you are allowed to control bluetooth.
>>> However, the behavior of 'at_console' does *not* match this intent."
>>>
>>> In other places I saw the 'at_console' stanza just plainly removed without
>>> any replacement, but it could have undesirable consequences for iwd.
>>
>> I think the solution chosen in BlueZ which gives blanket permission to
>> access iwd D-Bus APIs to any local user is probably just fine.
>> Particularly given that at_console effectively allowed any user to use iwd
>> in the past.
>> This effectively negates the need to provide a separate policy for
>> wheel/netdev and so these can be removed.
> 
> Does this mean that any restrictions would be removed?
>

Yes, basically any logged in user could use iwctl or dbus-send to control iwd 
via the D-Bus API.  So any user could switch networks, power device up and down, 
etc.

This would be similar to BlueZ, where any user could control the bluetooth device.


> It is just an example, but the 'deluged' program runs under the 'debian-
> deluged' user. If that program has a (security) bug, would that allow a RCE
> wrt to iwd? Could it wreak havoc then?
> 

In theory, not really, since it would still have to go through the D-Bus API and 
the associated checks.  So it couldn't execute arbitrary code, but it could do 
anything that a normal user can do as described above.

> Looking a bit further to see what others do and found some interesting things.
> 
> https://salsa.debian.org/bluetooth-team/bluez/-/blob/debian/sid/debian/
> patches/bluetooth.conf.patch is a modification of what upstream bluetooth does
> and adds an allow for the 'bluetooth' group. That patch was explicitly added,
> but without an explanation as to why, but as I understand it now, it means
> that 'bluetooth' group members get access, next to everyone else.
> IOW, it _seems_ (to me) like a pointless patch?

Seems pointless to me as well.  The intent seems to be to allow Bluetooth 
control only by the users of the 'bluetooth' group.  But I don't think that's 
what is actually happening due to the context="default" hole being punched.

> 
> In /etc/dbus-1/system.d/wpa_supplicant.conf I see 'allow' for 'root' and
> 'netdev' and (explicit) deny for 'context="default"'
> 
> In /usr/share/dbus-1/system.d/org.freedesktop.NetworkManager.conf there is a
> FAR more extensive policy, where 'root' can (ofc) do a LOT, but in the default
> context it starts with a 'deny' and then makes exceptions to grant mostly
> ReadOnly access to certain explicitly defined properties. In the comments I see
> things like "read-only properties, no methods" and "read-only, no security
> required".
> There seem to be some properties/methods ReadWrite, but additionally secured
> via PolicyKit ("read/write, secured with PolicyKit" in comments).
> 

Right, I don't think we really want to go that far and our APIs are quite simple 
compared to NM.  Our goal is to ship a minimal policy that works for most users 
out of the box.  If the distros need something else, they're free to modify the 
policy as they see fit.

>> Alternatively we can limit the policy only to wheel/netdev groups.
> 
> Given the above, I am more inclined to this solution, but it appears to me
> like pretty much the opposite of the other solution?

Sort of.  I think in reality the vast majority of users are on single-user 
systems with the main user already part of the 'wheel' group.  So even if we 
drop the at_console usage, and allowed iwd use only for root/netdev/wheel, the 
impact should be minimal.

> But it could disallow use cases which iwd was meant to serve, which may be
> undesirable. For example, if I granted access to a friend (over SSH) to my
> machine, he was allowed access to iwd over D-Bus before, but because he's not
> in the netdev group, he would then be denied access.

Correct.  But how likely is this scenario? :)

> 
> It could be that iwd only makes a (very) limited(/harmless?) set of
> functionality available over D-Bus, in which case my concerns are unfounded.
> But I lack the knowledge to determine that.
> 
> Hope you can alleviate my concerns (before I send in a patch).
> 
> Cheers,
>    Diederik
> 


Regards,
-Denis

             reply	other threads:[~2022-01-25 15:38 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-25 15:38 Denis Kenzior [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-01-25 22:43 D-Bus policies Diederik de Haas
2022-01-25 22:15 Denis Kenzior
2022-01-25 21:48 Diederik de Haas
2022-01-25 14:49 Diederik de Haas
2022-01-21 23:13 Denis Kenzior
2022-01-14 17:15 Diederik de Haas

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=91fb09fe-27c0-c804-633e-aced18785d33@gmail.com \
    --to=unknown@example.com \
    /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.