RE: sepgsql and process transition

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

 



> > I think I hit the exact reason why this bothers me today. As
> > staff_t:SystemLow-SystemHigh I wanted a stored procedure that ran at
> > sepgsql_trusted_proc_t:SystemHigh (so that it could read a SystemHigh column
> > and fuzz the results).
> >
> > Because of the current process constraint:
> >  mlsconstrain process transition
> >       (( h1 dom h2 ) and
> >        (( l1 eq l2 ) or ( t1 == mlsprocsetsl ) or
> >         (( t1 == privrangetrans ) and ( t2 == mlsrangetrans ))));
> >
> > it isn't possible unless staff_t is part of privrangetrans and
> > sepgsql_trusted_proc_t is part of mlsrangetrans. I don't mind the latter but
> > the former is clearly a violation of how MLS is suppose to work on
> > multi-level SELinux systems (in general, unprivileged users should not be
> > able to change their level without going through newrole or logging out and
> > back in).
> >
> > If there was a different object class for procedures-while-executing, akin
> > to process but called something different we could have a different
> > constraint that made more sense for this use case.
> >
> Hmm. I'd like to consider this matter for more details.
> 
I think it is not a situation that we should allow staff_t:SystemLow-SystemHigh
to translate into sepgsql_trusted_proc_t:SystemHigh, because this rule intends
to prevent to switch lower range without special attributes, and it eventually
prevents violated references of information.
Even if we have individual object class to represent a subject entity of database
system, its fundamental is not changed, is it?

It seems to me a straightforward solution is to define an individual trusted
procedure type for MLS range transition (with mlsrangetrans), and restrict
subject entity to invoke this procedure (using privrangetrans).

> One other point I'm considering is what security label should be delivered to
> when a database client want to invoke a remote procedure call using functions
> installed to PostgreSQL. This feature is called 'foreign-data-wrapper' being
> already merged at v9.1.
> If we assign a subject entity that performs as an agent of client a security
> label that is not a part of domain attribute, I'm not certain whether it is an
> appropriate manner, or not.
> 
One other confusable situation is invocation of remote procedure from PostgreSQL.
If we try to set up multiple SE-PostgreSQL systems that communicate via labeled
networking each other, I'm afraid that analysis of domain transition becomes hard
because it allows multiple paths to translate other domains.

Right now, my opinion is that process:{translate} permission should be checked
when a subject entity of (operating|database) system tried to be switched.

Thanks,
--
NEC Europe Ltd, SAP Global Competence Center
KaiGai Kohei <kohei.kaigai@xxxxxxxxxxxx>


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.


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

  Powered by Linux