Re: In permissive setting labels that are not in host policy when running unprivileged fails with EINVAL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Paul Moore <paul@xxxxxxxxxxxxxx> writes:

> On Wed, Jul 10, 2024 at 9:50 AM Stephen Smalley
> <stephen.smalley.work@xxxxxxxxx> wrote:
>> On Wed, Jul 10, 2024 at 9:32 AM Petr Lautrbach <lautrbach@xxxxxxxxxx> wrote:
>> >
>> > Hello,
>> >
>> > this is originally reported at
>> > https://github.com/SELinuxProject/selinux/issues/437
>> >
>> > There a question why kernel blocks changing SELinux label to some
>> > unknown label and requires CAP_MAC_ADMIN even in permissive mode?
>> >
>> > Reproducer:
>> >
>> > $ id -u
>> > 1000
>> >
>> > $ getenforce
>> > Permissive
>> >
>> > $ chcon -t bin_t /var/lib/mock/fedora-rawhide-x86_64/root/usr/lib/systemd/system-generators/systemd-ssh-generator
>> >
>> > $ chcon -t selinux_unknown_type_t /var/lib/mock/fedora-rawhide-x86_64/root/usr/lib/systemd/system-generators/systemd-ssh-generator
>> > chcon: failed to change context of '/var/lib/mock/fedora-rawhide-x86_64/root/usr/lib/systemd/system-generators/systemd-ssh-generator' to ‘system_u:object_r:selinux_unknown_type_t:s0’: Invalid argument
>> >
>> >
>> > Quotes from the issue:
>> >
>> > This is happening on a system with SELinux in permissive mode. Applying
>> > your suggestion does not change the result. I assume this is gated
>> > behind CAP_MAC_ADMIN for unprivileged users. Is there any way to make
>> > this work without needing root privileges?
>> >
>> > Hmm so the kernel blocks unknown labels unless the user has
>> > CAP_MAC_ADMIN in the initial user namespace. I'm assuming this is for a
>> > good reason and it would be unsafe to allow any user to do this so I
>> > don't think there's anything that can be done here
>> >
>> > One thing that's not clear to me, why is an unprivileged user allowed to
>> > write labels known by the host but not labels that are not known to the
>> > host? What specifically is unsafe about unknown labels that's not an
>> > issue with known labels?
>>
>> With SELinux disabled, setting of security.* xattrs at all is gated by
>> CAP_SYS_ADMIN.
>> With SELinux enabled, the security.selinux xattrs can be set to valid
>> security contexts without any capability if allowed by policy.
>> Support for setting unknown security contexts was a later addition to
>> SELinux for a specific use case (original motivation provided by Red
>> Hat was to permit rpm to set contexts on files unpacked from a package
>> before it inserted the corresponding policy module from %post), and
>> was not expected to be used by unprivileged users.
>> Smack had already introduced CAP_MAC_ADMIN at that point, and it
>> seemed reasonable to use it for this purpose, since setting labels
>> unknown to the policy is effectively like being the admin of the MAC
>> policy.
>> The policy can't make useful determinations about what to do with
>> unknown labels so it can't provide any information flow guarantees.
>> There may also have been a concern about the facility being abused to
>> push arbitrary data into a security.selinux xattr to be fetched by
>> some other privileged process later in a manner that would ultimately
>> lead to a vulnerability.
>> Not saying that we can't change things here, but would require a
>> graceful and compatible transition path.
>
> FWIW, we would also need to see a very compelling reason with broad
> reach that doesn't have a good workaround before we consider changing
> the current behavior.  The scenario described in the original GH issue
> is interesting, but my suspicion is that it is fairly limited.
>

thanks!






[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux