RFC: Requirements for MAC policies and implementation

Robert Watson rwatson at FreeBSD.org
Wed Sep 20 04:27:32 GMT 2000


As the initial fine-grained privilege/capability support infrastructure
for FreeBSD is nearing completion, I figured it was time to raise some
design requirement questions concerning mandatory access control.  Ilmar
has already made some initial implementation efforts in this area, as he
did with capabilities before I picked up that project, so I thought I'd
raise them sooner rather than later :-). 

Mandatory access control means a lot of things to different people.  In my
mind, there are a few common MAC models that are appealing in the context
of a first revision TrustedBSD distribution.  These include traditional
Multi-Level Security (Bell-LaPadula, et al), integrity models (Biba, et
al), as well as strong partitioning schemes.  Some potential consumers of
TrustedBSD have expressed strong interests in each of these models, so I
think it's fair to take them all for granted as requirements.  There are
many worked examples of these models in other trusted operating systems,
but I think that the TrustedBSD implementation has somewhat differing
requirements in a number of ways. 

- Multi-Level Security Model (MLS)
	- MLS is fairly cut-and-dry -- I'd assume support for
	  static labels, some fixed finite bound on the number of
	  sensitivity levels, and support for non-hierarchal categories. 
	  All trusted operating systems support this model, albeit
	  some in a more general manner than others.

- Biba Integrity Model
	- A static label Biba integrity policy, aimed at both
	  protecting the TCB, and to be used to protect the user
	  application environment.  Both SGI and Argus Systems
	  have worked examples of this, and its usefulness has been
	  widely demonstrated.  Presumably, as with MLS, both
	  hierarchal integrity levels and non-heirarchal divisions
	  would be useful.

- Strong Non-Intersecting Partition Model
	- The jail() mechanism in FreeBSD 4.x-STABLE has proven quite
	  popular, allowing the light-weight partitioning of FreeBSD
	  environments in a scalable manner.  This can be reproduced
	  using a combination of MLS + Biba non-hierarchal categories,
	  but as these categories tend to be based on set operations
	  and lists, there is limited scalability.  Improved abstraction
	  of the jail() mechanism, optimized for large numbers of
	  non-intersecting compartments, would make a lot of sense
	  and be relatively straight-forward to implement.  A simple
	  optimization would be to use a unique partition index,
	  with special cases to reflect the current day "not in a jail"
	  case.

- Labeling Issues
	- Objects intended to be protected by mandatory access schemes
	  must be labeled.  Clear this includes processes, files and
	  other file system objects.  However, how does labeling apply
	  to sockets, network interface abstractions such as packets,
	  ports, addresses, interfaces, routing?  What about multi-level
	  packet tagging schemes?

	- Desirable functionality might include: trusted vs. untrusted
	  network interfaces (must log in from the trusted network to
	  acquire high secrecy), integrity labeling based on the protocol
	  used (SSH required for high integrity access), partitioning
	  based on address, correct local handling of IPC in a consistent
	  manner, capable of supporting X Windows and CMW configurations. 
	  Also, traditional multi-level IP protocol security options
	  may be desirable to allow interoperability in networked MLS
	  environments.

- Access Control Points
	- Access control points for mandatory policies would certainly
	  include all existing discretionary access control points (file
	  name lookup and open operations, socket creation, inter-process
	  control such as signaling and debugging), but what other
	  points may now require access control or revocation?

	- Floating label schemes would require access control and
	  revocation at the granularity of individual reads/writes
	  rather than the DAC cached credential model for file and
	  socket access.  Revocation even in non-floating schemes might
	  demand blocking access to previously accessible services
	  such as file descriptors and sockets, based on the requirements
	  of the scheme.  Similarly, shared memory resources might
	  fall under revocation environments, something that the VM
	  system has not been designed for.

I'd welcome discussion, suggestions, questions, et al, relating to any of
these points, including specifically the choice of models to implement,
requirements for those models (labeling, access control points), etc. 
With improved discretionary access control and management of privilege, I
think we're on much further ground when it comes to successfully
understanding the implementation issues than six months ago.  I certainly
don't expect that this list of implementation possibilities is the last
word on the topic. :-)

There are a number of resources that participants might find useful for
framing the discussion, including technial reports and documentation from
Argus Systems (http://www.argussystems.com/pitbull/,
http://www.argusrevolution.com/), and SGI
(http://oss.sgi.com/projects/ob1/doc/).  Keeping standard CC protection
profiles in mind is also good, so
http://www.radium.ncsc.mil/tpep/library/protection_profiles/index.html is
also a useful reference. 

For reference with regards to long term development plans, this MAC
implementation would be prior to the implementation of a generalized
labeling and access control scheme such as Poligraph, but would be a
useful step towards the implementation of such a system, providing a
stronger understanding of requirements for the implementation of these
common MAC schemes. 

  Robert N M Watson 

robert at fledge.watson.org              http://www.watson.org/~robert/
PGP key fingerprint: AF B5 5F FF A6 4A 79 37  ED 5F 55 E9 58 04 6A B1
TIS Labs at Network Associates, Safeport Network Services

To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-discuss" in the body of the message



More information about the trustedbsd-discuss mailing list