Subject: Re: SE Linux vs SE NetBSD !!
To: Steven M. Bellovin <smb@cs.columbia.edu>
From: Robert Watson <rwatson@FreeBSD.org>
List: tech-security
Date: 08/26/2006 05:46:22
On Fri, 25 Aug 2006, Steven M. Bellovin wrote:

> This example is precisely why I don't find MLS to be useful commercially. 
> (Even your solution is more like DTE, which is *not* the same as, say, 
> classic Bell-Lapadula.)
>
> For those who are just tuning in...  Bell-Lapadula has a label on every file 
> and every process.  The basic philosophy is "don't let anything be 
> declassified", which means that a process can't read a file with a higher 
> security label, nor can it write to a file with a lower security label. The 
> former is obvious; as for the latter, if it did that some later low-security 
> process could then read the file to which the sensitive data was written. 
> (I'm oversimplifying here; security labels actually form a lattice, not a 
> simple order relationship.)

In principle, DTE/TE provide the ability to decide what level of granularity 
in labeling is required, with DTE providing a shortcut for the labeling of a 
large number of objects.  [D]TE essentially allows you to do history-based 
access control in terms of the interactions of domains and types you define, 
with that history reduced to a state machine represented in a rule language. 
This all sounds good in theory, the problem is practice: that our systems are 
extraordinarily complex.  Is the problem TE, or our applications and 
programming environments and applications?

Maybe it's silly that daemons all like to write to the same /var/db directory 
-- this isn't just a problem for SELinux, where it results in extra rules, 
it's a problem if you use other mechanisms already available on UNIX to 
constrain applications, such as per-uid sandboxes.  Or that our programming 
systems don't export clean lists of facilities exercised by the application -- 
this is how you end up with things like SELinux and systraces adaptive policy 
writing, in which the policy mechanisms attempt to capture application right 
requirements -- typically poorly due to entirely missing exceptional cases.

Any security mechanism that is concerned with the fine-grained management of 
rights will suffer from the problem defining what rights to assign. 
Experience seems to suggest that system complexity increases lead directly to 
policy complexity increase, and that at least one challenge with fine-grained 
privilege management is trying to get the complexity of the privilege system 
to grow at most linearly with the complexity of the software system.  This 
relies on the independence of the components, which of course is immediately 
violated by the complex inter-relationships between software components that 
exist in the real world (tm).  And this is a simple problem compared to some 
of the harder problems associated tuning rights to the run-time requirements 
of a system vs. the compile-time requirements, which is what people currently 
aim for.  Fortunately, most BSD applications appear to be in relatively fixed 
configurations of relatively simple/well-defined software, such as embedded 
and server environments, and not desktop environments :-).

Robert N M Watson
Computer Laboratory
University of Cambridge