On Wed, 11 Jun 2025 at 12:14:36 -0400, Marc Deslauriers wrote:
On 2025-06-06 09:40, Attila Szasz wrote:
I didn't make this explicit in the video, but this works when
running as a non-sudoer user, and also on Ubuntu Server. I think
Canonical Product Security might have better estimates on this, but
I'm guessing many of the corporate, gov, academic, HPC cluster, etc
use cases are impacted practically in such a setting.

This isn't supposed to work for non-privileged users, and not on servers. We allow mounting usb drives for admin users sitting at the console by shipping a package called "policykit-desktop-privileges" which contains the following polkit rule:

[Mounting, checking, etc. of internal drives]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.e
ncrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;
ResultActive=yes

I don't think that stanza is relevant here, because it's about "system" or "internal" disks. udisks2 has a concept of whether a disk is "system" or not: see the source code for full details, but a short version is that internal HDDs/SSDs are "system" and USB thumb drives are not, possibly modulo some corner cases like running your OS from a USB thumb drive.

The policy for non-"system" disks is different, and more permissive, with the expectation that users of a laptop/desktop-class system will expect to be able to plug in a USB thumb drive and access its contents. By default this policy applies to anyone with an active local session, not just admins.

The files in actions/ define actions, and for convenience, also define default policies for those actions that are intended to be "usually what you want" for three commonly-distinguished classes of session: active local sessions, inactive local sessions, and everything else. The files in rules.d/ (or localauthority.d/ for old versions of polkit) override those default policies according to the requirements of the OS integrator or the sysadmin, and can make use of finer-grained inputs.

In this case, /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy defines org.freedesktop.udisks2.filesystem-mount for removable media that are physically located in the same "seat" grouping as the user's active local session, with a default policy of <allow_active>yes</>. Compare with org.freedesktop.udisks2.filesystem-mount-system and org.freedesktop.udisks2.filesystem-mount-other-seat in the same file, which are considered to be dangerous and by default require authentication with a sysadmin's credentials (auth_admin or auth_admin_keep). This might vary a bit on older distros but should be fairly similar on anything from the last decade.

However, on a server-class or HPC system, I would not normally expect an untrusted user to be able to sit at the console and log in to a text or GUI session; instead the server would usually be somewhere that the user cannot physically access, and they would be logging in remotely via ssh or VNC/RFB or something. So their session would not be considered to be "active and local", and it is *that* that would usually protect servers from those users being allowed to plug in removable media. The polkit default policy for remote users would come from <allow_any>, instead of <allow_active> or <allow_inactive>, and the default for <allow_any> is usually "auth_admin", "auth_admin_keep" or "no" for all but the most benign actions.

A second line of defence is that filesystem-mount normally only applies to removable devices associated with the same seat as the user's session, but remote logins aren't associated with a seat at all, so it's impossible to find a device that belongs to the same seat; so even if a drive is not considered to be "system", and even if the <allow_any> policy is quite permissive, the user would be attempting the filesystem-mount-other-seat action, which is more restricted than plain filesystem-mount.

udisks2 might also consider some filesystems (the higher-risk ones) to be inherently "system" even if they are located on removable media; or if it doesn't already do that, it might be reasonable to teach it that only an allowlist of known-robust filesystems like FAT are candidates for the org.freedesktop.udisks2.filesystem-mount action, with a different action that has a more restrictive default policy used for the higher-risk filesystems.

I believe there is already code to ensure that filesystems mounted by unprivileged users are mounted with options like nosuid and nodev (if they support multiple users at all), whereas root-equivalent users mounting system drives can probably bypass that restriction.

    smcv

Reply via email to