Re: continuation of systemd/SELinux discussion from Github

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

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On Thu, Dec 03, 2015 at 11:11:18AM -0500, Stephen Smalley wrote:
> On 12/03/2015 11:02 AM, Miroslav Grepl wrote:
> >On 12/02/2015 10:23 PM, Stephen Smalley wrote:
> >>On 12/02/2015 02:47 PM, Dominick Grift wrote:
> >>>On Wed, Dec 02, 2015 at 01:20:30PM -0500, Stephen Smalley wrote:
> >>>>On 12/02/2015 05:18 AM, Dominick Grift wrote:
> >>>>>Let's continue the discussion here.
> >>>>>
> >>>>>The last answered questionnaire is below, any further questions or
> >>>>>comments?:
> >>>>>
> >>>>>----------------------------------------
> >>>>>
> >>>>>          "systemd --user" concept is broken as we can see/read from
> >>>>>this
> >>>>>          thread from SELinux point of view.
> >>>>>
> >>>>>It was working fine except that it was trying to log to the audit
> >>>>>system
> >>>>>which unprivileged processes arent allowed to do.
> >>>
> >>>>What's the dbus solution for this issue?
> >>>
> >>>Here is some chatter about the above i believe:
> >>>
> >>>https://bugs.freedesktop.org/show_bug.cgi?id=83856
> >>
> >>The code is easier to follow. bus/audit.c:bus_audit_init() will only
> >>open the audit socket if the process has CAP_AUDIT_WRITE.
> >>bus/selinux.c:log_callback() will only try to send the message to audit
> >>if the audit socket was opened, but will always send the message to
> >>syslog regardless.  Thus, if the dbus-daemon instance has
> >>CAP_AUDIT_WRITE, you get the messages logged to audit and syslog;
> >>otherwise, you only get them in syslog.  This is the most general
> >>approach, as it supports both privileged and unprivileged dbus-daemon
> >>instances, including the case where the system-wide bus is running in a
> >>container and does not have CAP_AUDIT_WRITE (even though it thinks it is
> >>root / uid 0) and the case where the session bus has CAP_AUDIT_WRITE (if
> >>one were to set cap_audit_write in the file capabilities on the
> >>dbus-daemon executable, not recommended but possible), as well as the
> >>more common cases of a system-wide bus with CAP_AUDIT_WRITE and a
> >>session bus without it.  systemd should likely do something similar, but
> >>using the journal.
> >>
> >>>
> >>>
> >>>>>
> >>>>>          Are we able truly explain the enforcement here?
> >>>>>
> >>>>>I think i was able to at least identify some of it, but i probably have
> >>>>>overlooked other compelling arguments:
> >>>>>
> >>>>>Any processes that needs to be able to "control" any system-wide
> >>>>>systemd
> >>>>>user unit, will be able to "control" all system-wide systemd user
> >>>>>units.
> >>>>>
> >>>>>In practice that means that a process may be able to for example
> >>>>>start a
> >>>>>application even though it does not have access to execute that
> >>>>>application by telling systemd --user do start that applications on its
> >>>>>behalf
> >>>
> >>>>Can systemd-run --user be used to escape any of the following:
> >>>>a) SELinux sandbox,
> >>>>b) libvirt / svirt confinement,
> >>>>c) newrole -r to a different, more restricted role or -l to a different
> >>>>level,
> >>>>d) runcon to a more restricted domain.
> >>>
> >>>>If so, then there is a problem with systemd --user not applying its own
> >>>>access controls over its operations.
> >>>
> >>>
> >>>I cannot answer above currently. I can tell you that obviously one needs
> >>>to be able to talk to ones systemd --user instance to be able to tell it
> >>>to do anything on ones behalf obviously. So by default all of the above
> >>>will likely not work, since they most likely do not have the permissions
> >>>to talk to systemd --user even if they were able to execute systemctl
> >>>and/or systemd-run.
> >>>
> >>>But even then, things also depend on whether systemd --user runs in a
> >>>private domain or the login user domain (in my policy it runs in a
> >>>private domain except for unconfined users)
> >>>
> >>>Those are good questions but i do not see how they are directly related
> >>>to the question whether systemd --user should be a selinux user space
> >>>object
> >>>manager or not (in my view it obviously should but i am not trusted by
> >>>systemd maintainers, walsh is trusted and walsh gave systemd maintainers
> >>>the impression that systemd --user does not have to be an selinux object
> >>>manager) I strongly suspect that is wrong.
> >>
> >>I cited those examples because they were applicable to the stock Fedora
> >>policy and, if valid, would provide a rationale for restoring the
> >>controls regardless of what one might believe about confining desktop
> >>applications because they would indicate vulnerabilities or regressions
> >>in functionality provided by Fedora.  That seemed more likely to be
> >>convincing to the Fedora SELinux maintainers.
> >>
> >>For sandbox, they don't appear to allow it to connect in the first place:
> >>
> >>$ sandbox /bin/bash
> >>bash-4.3$ systemd-run --user id
> >>Failed to create bus connection: Permission denied
> >>
> >>So there the systemd access controls wouldn't come into play.
> >>
> >>For confined user roles, systemd-run --user <command> failed on Fedora
> >>22 with:
> >>
> >>Failed to start transient service unit: Access denied
> >>
> >>and journalctl showed:
> >>
> >>systemd[15007]: Can't send to audit system: USER_AVC avc:  denied  {
> >>start } for auid=N uid=N gid=N
> >>path="/run/user/N/systemd/user/run-PID.service" cmdline="systemd-run
> >>--user id" scontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023
> >>tcontext=system_u:object_r:user_tmp_t:s0 tclass=service
> >>
> >>So removing the systemd --user controls is a regression in the
> >>protection being provided in Fedora, IIUC, although I'll let the Fedora
> >>SELinux maintainers speak to that.
> >
> >First I would like to talk about non-working "systemd --user" because we
> >lack a support of pam_selinux in F23. So if you allow confined users to
> >start user services you will end up with unconfined_service_t. Which is
> >wrong because of systemd --user is running as init_t. The object manager
> >helps here indeed.
> >
> >We have pam_selinux support in F24 and theoretically you will end up
> >with a correct user context. But without missing object manager you will
> >be able to start user services under SELinux user context and under a
> >user Linux identity.
> >
> >This is a reason why I told this is broken now. We have more regressions
> >here. And I believe that first we would have systemd --user running with
> >correct labeling. We have it working for unconfined users on the latest
> >rawhide because we removed unconfined_domain attribute for init_t and
> >added needed fixes.
> >
> >The second issue is missing object manager. It is strongly related to
> >confined SELinux users who are defined by own restricted SELinux
> >policies and still restricted by own Linux identity.
> >
> >If we have running 'systemd --user' with the correct user type
> >pam_selinux support then we can experiment and make working SELinux
> >object manager in systemd --user at all if it is used and requested widely.
> 
> So, what is needed for correct systemd --user pam_selinux support still?
> Has anything been done wrt eliminating usage of security_compute_user()?
> Are you blocked on that?
> 

I think it is still (kind of) an issue. Here is some chatter about it:

https://github.com/fedora-selinux/selinux-policy/commit/7516138078d9c9048e49fe1abfa2a7dd85e3d14b#commitcomment-14376880

> 
> _______________________________________________
> Selinux mailing list
> Selinux@xxxxxxxxxxxxx
> To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
> To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.

- -- 
02DFF788
4D30 903A 1CF3 B756 FB48  1514 3148 83A2 02DF F788
https://sks-keyservers.net/pks/lookup?op=get&search=0x314883A202DFF788
Dominick Grift
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQGcBAEBCgAGBQJWYHwuAAoJENAR6kfG5xmcfLYL/jz36K9xpLqTKD8JgM/hYocD
hfxGq9wd89tLFX5Eg+bJrT1WAq9m0q2MMNT+JoEgPJWQw1eLGCEDd3ZejuSOrU8w
Mc2L3zZhbfxgQmIv8lsxsyN/a5miM9q5A2bdbmwIlbLPgW2Mwz/vTl1hTJm9bMqT
8+0tbwVz3+DAQHyY3G2jyMs9c2Q2U0yut2kAWzmkn0Z2W78PJwpdwUNNENqFUaxD
o3EKuO8XUP6aUuyrOWkH+WC5Z2TcvxQHYAq/8KheyjM+q9uqajpWmf30YRFDseSf
PjMVvnPuCtyaIHWHfOwFaedRQnqsvn7NmvpLfH+PNw4hvi0uBoocp3GB1O2wxnng
Om2hua1iWi3e7HizhP94bjU4AYsQJlgeWQKUW6Sak6Pmi/tCSbA1QPI/KkWhcftC
qeHFaZtzfLOwik4bcwkcvh0KdJjImTOlpsSLduBbmTIqUe8DohXCKJ+4S+STZtSI
62kW7RMi1fTlJf+brtlIiMVpB2E8fmuhanFM6T3cmg==
=0aRS
-----END PGP SIGNATURE-----
_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.



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

  Powered by Linux