A goal for many years has been effective mandatory access control (MAC) for UNIX systems. By an effective MAC system, we envision that system administrators can define access control policies that guarantee site security goals while enabling the convenient execution of applications. Early MAC policies, such as the Bell-LaPadula secrecy policy  and the Biba integrity policy , defined clear security goals, but were too restrictive for convenient use for UNIX applications. Commercial operating systems that were extended to meet Orange Book B1 (i.e., MAC plus other features) were not broadly applied (i.e., mainly aimed at government installations). Recent efforts at MAC systems use flexible access control models to achieve convenient use (e.g., DTOS, Flask [17,21], etc.), but demonstrating that particular security goals have been met is more difficult (and these systems have not been widely used either). Flexible access control models typically result in more complex policies, so it is more difficult to determine if these policies have the desired effect.
The recent addition of the Linux Security Modules (LSM)
framework  enables the MAC enforcement for the Linux kernel.
The LSM framework is designed to be agnostic to the MAC approach, and
it has been designed to support modules with flexible MAC models. The
most comprehensive and flexible module for LSM is the SELinux
module . While SELinux supports a variety of policy models
itself, an extended Type Enforcement (TE) model  is used for
most policy development. An example policy is under development that
consists of a set of UNIX service and application policies that each
aim to ensure effective operation while preventing security
vulnerabilities. The example policy does not define a secure system,
but serves as a basis for developing a secure system once the security
goals are defined. The extended TE model is rather complex (i.e.,
consists of a large number of concepts) and the SELinux example policy
is large (e.g., 50,000+ policy statements in the
for Linux 2.4.19), so customization of the SELinux example policy to a
policy that guarantees satisfaction of system security goals
is an arduous and error-prone task.
While the use of a simpler access control model might make it easier to ensure that security goals are met, we believe that this would result in applications failing to run conveniently, and ultimately, the circumvention of these security goals. The comprehensive nature of the SELinux policy model enables flexible trade-off between application and security goals. For example, the SELinux example policy itself is developed by proposing application policies and refining them based on the policy violations that may be generated. Thus, the SELinux example policy itself is a direct result of making these trade-offs.
The question is whether a manageable set of effective security goals can be described and verified for SELinux policies. Obviously, it is highly unlikely that the SELinux example policy adheres to a simple high-level policy, such as the two-level integrity model of LOMAC . However, the policy may be sufficiently close to such a policy that the conflicts can be managed (i.e., either a small number or a small number of equivalence classes). If so, then verification may be possible by verifying the general goals and using ad hoc techniques to resolve the conflicts. We have found that this approach holds some promise for application policies, in particular the Apache administrator , but do not know whether this can work for the trusted computing base (TCB) subjects in the SELinux policy. Obviously, if we cannot prove that the TCB is integrity-protected, its system cannot be considered secure.
In this paper, we propose a near-minimal TCB for SELinux systems and examine how to verify that this TCB is integrity-protected. First, we define integrity relationships between the TCB subject types and less trusted system and application subject types. Second, we input these constraints into our policy analysis tool, called Gokyo , and identify integrity conflicts between the TCB and the system. The Gokyo tool enables flexible expression of conflict sets and their resolution, so our next goal is to determine what resolutions appear feasible for TCB integrity conflicts. Using Gokyo, we classify conflicts into classes based on their likely resolution. Since most resolutions depend on ad hoc information, it is still a manual process to complete the analysis. Using Gokyo, we identify a minimal TCB for the SELinux example policy of 30 subject types, half of which are infrequently-used administration subjects. To use this TCB, 5 sanitization problems must be solved, but we believe that most can be addressed in practice, including the use of Gokyo itself to manage the broad file access rights currently granted to trusted subjects. Ultimately, Gokyo is useful in identifying problems in meeting security goals, classifying these problems, and providing information for resolving them.
The paper is structured as follows. In Section 2, we examine the SELinux extended Type Enforcement model and outline our site security goals for that model, integrity protection of a minimal trusted computing base. In Section 3 we describe our approach to resolving a policy against our integrity protection requirements. In Section 4, we detail the implementation of our analysis using Gokyo and present our analysis results. In Section 5, we present related work, and we conclude in Section 6.