Re: [PATCH v2] mcstrans: start early and stop late

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

 



On Thu, Dec 12, 2019 at 09:36:19AM -0500, Stephen Smalley wrote:
> On 12/12/19 9:24 AM, Dominick Grift wrote:
> > On Thu, Dec 12, 2019 at 08:45:29AM -0500, Stephen Smalley wrote:
> > > On 12/11/19 9:21 AM, Dominick Grift wrote:
> > > > On Wed, Dec 11, 2019 at 02:44:23PM +0100, Dominick Grift wrote:
> > > > > It stopped too early, exposing a bug in sudo selinux_restore_tty():
> > > > > 
> > > > > SELINUX_ERR op=setxattr invalid_context="wheel.id:wheel.role:users.terminals.pty.pty_file:SystemLow"
> > > > > avc:  denied  { mac_admin } for  pid=859 comm="sudo" capability=33 scontext=wheel.id:wheel.role:sudo.wheel.subj:s0 tcontext=wheel.id:wheel.role:sudo.wheel.subj:s0 tclass=capability2 permissive=0
> > > > > 
> > > > > If we want to be able to reference human readable contexts in SELinuxContext= and nspawn -Z and -L then we need mcstrans ASAP
> > > > 
> > > > Unfortunately it does not quite seem to address this challenge, at least currently, but still
> > > > I think systemd would need to refresh its label cache when mcstrans is started, as per systemd v245 that should be a little less painful than it is today
> > > > Something like a: ExecStartPost=/bin/systemctl daemon-reload would do that then
> > > 
> > > I'm a little unclear on where the bug lies - you show a sudo denial, but
> > > refer to systemd as the culprit?
> > 
> > The sudo bug is fixed here: https://github.com/sudo-project/sudo/commit/718e6997fcaae6ea065ce74d08dd4aae5917df5e
> > 
> > > 
> > > If we don't care about being able to use translated contexts in systemd unit
> > > files or options, it could always use the _raw interfaces to ensure that it
> > > is always dealing with the raw kernel contexts.  The translated contexts are
> > > mostly for display purposes for MLS labels/policies.
> > 
> > The thing with systemd is that since systemd runs before mcstrans is started it doesnt use mcstrans.
> > So if you try to reference translated contexts using systemd then it will refuse.
> > Running a systemctl daemon-reexec after mcstrans is started fixes that issue but that is not really an option.
> > 
> > I am wondering what causes this behavior, i suppose this is some libselinux thing.
> 
> Yes, libselinux checks for the existence of the mcstrans socket exactly once
> on the first attempted translation, and if it does not exist at that time,
> it never tries again.  That is to avoid overhead on systems that are not
> running mcstrans, which is the majority of systems. mcstrans is only really
> needed for MLS policies and those are a minority of SELinux systems.
> 
> > Regardless of all the above though, i think it makes sense for mcstrans to start early and stop late.
> 
> Perhaps; I'll defer to the distro maintainers on that.  I don't really
> recommend using mcstrans unless you truly need it.

Me neither. There was a request for support on IRC. So i looked into it.
I certainly think I made it clear to stay away from it if possible.

> 
> > 
> > > 
> > > > 
> > > > > 
> > > > > v2: stop late, but do stop
> > > > > Signed-off-by: Dominick Grift <dac.override@xxxxxxxxx>
> > > > > ---
> > > > >    mcstrans/src/mcstrans.service | 3 +++
> > > > >    1 file changed, 3 insertions(+)
> > > > > 
> > > > > diff --git a/mcstrans/src/mcstrans.service b/mcstrans/src/mcstrans.service
> > > > > index 09529432..c13cd09a 100644
> > > > > --- a/mcstrans/src/mcstrans.service
> > > > > +++ b/mcstrans/src/mcstrans.service
> > > > > @@ -2,6 +2,9 @@
> > > > >    Description=Translates SELinux MCS/MLS labels to human readable form
> > > > >    Documentation=man:mcstransd(8)
> > > > >    ConditionSecurity=selinux
> > > > > +DefaultDependencies=no
> > > > > +Before=shutdown.target sysinit.target
> > > > > +Conflicts=shutdown.target
> > > > >    [Service]
> > > > >    ExecStart=/sbin/mcstransd -f
> > > > > -- 
> > > > > 2.24.0
> > > > > 
> > > > 
> > > 
> > 
> 

-- 
Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02
https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02
Dominick Grift

Attachment: signature.asc
Description: PGP signature


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

  Powered by Linux