31.2 Requirements and Policy
The problem of sharing a password arises when a system implements administrative roles as separate user accounts.
EXAMPLE: Linux systems implement the administrator role as the account root (and several other accounts that have more limited functionality).1 All individuals who share access to the account know the account’s password. If the password is changed, all must be notified. All these individuals must remember to notify the other individuals should they change the password.
An alternative to using passwords is to constrain access on the basis of identity and other attributes. With this scheme, a user would execute a special program that would check the user’s identity and any ancillary conditions. If all these conditions were satisfied, the user would be given access to the role account.
The first requirement comes directly from the description of the alternative scheme above. The system administrators choose to constrain access through known paths (locations) and at times of day when the user is expected to access the role account.
Requirement 31.1. Access to a role account is based on user, location, and time of request.
Users often tailor their environments to fit their needs. This is also true of role accounts. For example, a role account may use special programs kept in a subdirectory of the role account’s home directory. This new directory must be on the role account’s search path, and would typically be set in the startup file executed when the user logged in. A question is whether the user’s environment should be discarded and replaced by the role account’s environment, or whether the two environments should be merged. The requirement chosen for this program is as follows.
Requirement 31.2. The settings of the role account’s environment shall replace the corresponding settings of the user’s environment, but the remainder of the user’s environment shall be preserved.
The set of role accounts chosen for access using this scheme is critical. If unrestricted access is given (essentially, a full command interpreter), then any user in the role that maintains the access control information can change that information and acquire unrestricted access to the system. Presumably, if the access control information is kept accessible only to root, then the users who can alter the information—all of whom have access to root—are trusted. Thus:
Requirement 31.3. Only root can alter the access control information for access to a role account.
In most cases, a user assuming a particular role will perform specific actions while in that role. For example, someone who enters the role of oper may perform backups but may not use other commands. This restricts the danger of commands interacting with the system to produce undesirable effects (such as security violations) and follows from the principle of least privilege.2 This form of access is called “restricted access.”
Requirement 31.4. The mechanism shall allow both restricted access and unrestricted access to a role account. For unrestricted access, the user shall have access to a standard command interpreter. For restricted access, the user shall be able to execute only a specified set of commands.
Requirement 31.4 implicitly requires that access to the role account be granted to authorized users meeting the conditions in Requirement 31.1. Finally, the role account itself must be protected from unauthorized changes.
Requirement 31.5. Access to the files, directories, and objects owned by any account administered by use of this mechanism shall be restricted to those authorized to use the role account, to users trusted to install system programs, and to root.
We next check that these requirements are complete with respect to the threats of concern.
The threats against this mechanism fall into distinct classes. We enumerate the classes and discuss the requirements that handle each threat.
18.104.22.168 Group 1: Unauthorized Users Accessing Role Accounts
There are four threats that involve attackers trying to acquire access to role accounts using this mechanism.
Threat 31.1. An unauthorized user may obtain access to a role account as though she were an authorized user.
Threat 31.2. An authorized user may use a nonsecure channel to obtain access to a role account, thereby revealing her authentication information to unauthorized individuals.
Threat 31.3. An unauthorized user may alter the access control information to grant access to the role account.
Threat 31.4. An authorized user may execute a Trojan horse (or other form of malicious logic),3 giving an unauthorized user access to the role account.
Requirements 31.1 and 31.5 handle Threat 31.1 by restricting the set of users who can access a role account and protecting the access control data. Requirement 31.1 also handles Threat 31.2 by restricting the locations from which the user can request access. For example, if the set of locations contains only those on trusted or confidential networks, a passive wiretapper cannot discover the authorized user’s password or hijack a session begun by an authorized user. Similarly, if an authorized user connects from an untrusted system, Requirement 31.1 allows the system administrator to configure the mechanism so that the user’s request is rejected.
The access control information that Requirement 31.1 specifies can be changed. Requirement 31.3 acknowledges this but restricts changes to trusted users (defined as those with access to the root account). This answers Threat 31.3.
Threat 31.4 is more complex. This threat arises from an untrusted user, without authorization, planting a Trojan horse at some location at which an authorized user might execute it. If the attacker can write into a directory in the role account’s search path, this attack is feasible. Requirement 31.2 states that the role account’s search path may be selected from two other search paths: the default search path for the role account, and the user’s search path altered to include those components of the role account’s search path that are not present. This leads to Requirement 31.5 which states that, regardless of how the search path is derived, the final search path may contain only directories (and may access only programs) that trusted users or the role account itself can manipulate. In this case, the attacker cannot place a Trojan horse where someone using the role account may execute it.
Finally, if a user is authorized to use the role account but is a novice and may change the search path, Requirement 31.4 allows the administrators to restrict the set of commands that the user may execute in that role.
22.214.171.124 Group 2: Authorized Users Accessing Role Accounts
Because access is allowed here, the threats relate to an authorized user changing access permissions or executing unauthorized commands.
Threat 31.5. An authorized user may obtain access to a role account and perform unauthorized commands.
Threat 31.6. An authorized user may execute a command that performs functions that the user is not authorized to perform.
Threat 31.7. An authorized user may change the restrictions on the user’s ability to obtain access to the account.
The difference between Threats 31.5 and 31.6 is subtle but important. In the former, the user deliberately executes commands that violate the site security policy. In the latter, the user executes authorized commands that perform covert, unauthorized actions as well as overt, authorized actions—the classic Trojan horse. Threat 31.6 differs from Threat 31.4 because the action may not give access to authorized users; it may simply damage or destroy the system.
Requirement 31.4 handles Threat 31.5. If the user accessing the role account should execute only a specific set of commands, then the access controls must be configured to restrict the user’s access to executing only those commands.
Requirements 31.2 and 31.5 handle Threat 31.6 by preventing the introduction of a Trojan horse, as discussed in the preceding section.
Requirement 31.3 answers Threat 31.7. Because all users who have access to root are trusted by definition, the only way for an authorized user to change the restrictions on obtaining access to the role account is to implant a backdoor (which is equivalent to a Trojan horse) or to modify the access control information. But the requirement holds that only trusted users can do that, so the authorized user cannot change the information unless he is trusted—in which case, by definition, the threat is handled.
Because the requirements handle the threats, and because all requirements are used, the set of requirements is both necessary and sufficient. We now proceed with the design.