Updated: 11 December 1998 |
OpenVMS Guide to System Security
Previous | Contents | Index |
Privileges restrict the use of certain system functions to processes created on behalf of authorized users. These restrictions protect the integrity of the operating system's code, data, and resources and thus, the integrity of user service. Grant privileges to individual users only after carefully considering the following two factors:
Privileges fall into the following seven categories according to the damage that the user possessing them could cause the system:
A user's privileges are recorded in the user's UAF record in a 64-bit privilege mask. When a user logs in to the system, the user's privileges are stored in the header of the user's process. In this way, the user's privileges are passed on to the process created for the user. Users can use the DCL command SET PROCESS/PRIVILEGES to enable and disable privileges for which they are authorized and to further control the privileges available to the images they run. Moreover, any user with the SETPRV privilege can enable any privilege.
Table 8-2 lists the privileges by category and gives brief, general
definitions of them. The following sections describe all privileges
available on OpenVMS systems in detail; each section title identifies
the privilege category (Normal, Devour, and so on). For each privilege,
the appendix describes the capabilities granted by the privilege and
the users who should receive them.
A.1 ACNT Privilege (Devour)
The ACNT privilege lets a process use the RUN (Process) command and the
Create Process ($CREPRC) system service to create processes in which
accounting is disabled. A process in which accounting is disabled is
one whose resource usage is not logged in the current accounting file.
A.2 ALLSPOOL Privilege (Devour)
The ALLSPOOL privilege lets the user's process allocate a spooled device by executing the Allocate Device ($ALLOC) system service or by using the DCL command ALLOCATE.
The $ALLOC system service lets a process allocate or reserve a device for its exclusive use. A shareable mounted device cannot be allocated.
Grant this privilege only to users who need to perform logical or
physical I/O operations to a spooled device. Ordinarily, the privilege
of allocating a spooled device is granted only to symbionts.
A.3 ALTPRI Privilege (System)
The ALTPRI privilege allows the user's process to:
The base priority is increased by executing the Set Priority ($SETPRI) system service or the DCL command SET PROCESS/PRIORITY. As a rule, this system service lets a process set its own base priority or the base priority of another process. However, one process can set the priority of a second process only if one of the following conditions applies:
With ALTPRI, a process can create a detached process with a priority higher than its own. It creates such a process by using an optional argument to the Create Process ($CREPRC) system service or to the DCL command RUN/PRIORITY.
ALTPRI also lets you adjust the scheduling priority of a job ($SNDJBC) to a value even greater than that established with the system parameter MAXQUEPRI.
Do not grant this privilege widely; if unqualified users have the
unrestricted ability to set base priorities, fair and orderly
scheduling of processes for execution can easily be disrupted.
A.4 AUDIT Privilege (System)
The AUDIT privilege allows software to append audit records to the system security audit log file using one of four system services: $AUDIT_EVENT, $CHECK_PRIVILEGE, $CHKPRO, or $CHECK_ACCESS. In addition, the $AUDIT_EVENT system service allows all components of an audit message to be specified. As a result, this privilege permits the logging of events that appear to have come from the operating system or a user process.
Grant this privilege only to trusted images that need to append audit
messages to the system audit log file. Users possessing this privilege
can provoke a system failure by attempting to log invalid events with
the NSA$M_INTERNAL flag set.
A.5 BUGCHK Privilege (Devour)
The BUGCHK privilege allows the process to make bugcheck error log
entries from user, supervisor, or compatibility mode (EXE$BUG_CHECK) or
to send messages to the system error logger ($SNDERR). Restrict this
privilege to Compaq-supplied system software that uses the Bugcheck
facility.
A.6 BYPASS Privilege (All)
The BYPASS privilege allows the user's process full access to all protected objects, totally bypassing UIC-based protection, access control list (ACL) protection, and mandatory access controls. With the BYPASS privilege, a process has unlimited access to the system. Among the operations that can be performed are
Grant this privilege with extreme caution because it overrides all object protection. It should be reserved for use by well-tested, reliable programs and command procedures. The SYSPRV privilege is adequate for interactive use because it ultimately grants access to all objects while still providing access checks. The READALL privilege is adequate for backup operations.
The BYPASS privilege lets a process perform the following tasks:
Task | Interface |
---|---|
Perform file system operations: | |
Modify file ownership | SET SECURITY/OWNER, $QIO request to F11BXQP |
Access a file that is marked for deletion | $QIO request to F11A ACP or F11BXQP |
Access a file that is deaccess locked | $QIO request to F11A ACP or F11BXQP |
Override creation of an owner ACE on a newly created file | $QIO request to F11BXQP |
Clear the directory bit in a directory's file header | $QIO request to F11BXQP |
Operate on an extension header | $QIO request to F11BXQP |
Acquire or release a volume lock | $QIO request to F11BXQP |
Force mount verification on a volume | $QIO request to F11BXQP |
Create a file access window with the no access lock bit set | $QIO request to F11BXQP |
Specify null lock mode for volume lock | $QIO request to F11BXQP |
Access a locked file | $QIO request to F11BXQP |
Enable or disable disk quotas on a volume | $QIO request to F11BXQP |
Operate on network databases: | |
Display permanent network database records | NCP |
Display permanent DECnet object password | NCP |
Display volatile DECnet object password | NCP |
Adjust discretionary or mandatory access controls: | |
Read a user authorization record | $GETUAI |
Modify a user authorization record | $SETUAI |
Modify mailbox protection | $QIO request request to the mailbox driver (MBDRIVER) |
Modify shared memory mailbox protection | $QIO request request to the mailbox driver (MBXDRIVER) |
Bypass discretionary or mandatory object protection | $CHKPRO |
Miscellaneous: | |
Initialize a magnetic tape | $INIT_VOL |
Unload an InfoServer system | $QIO request to the InfoServer system (DADDRIVER) |
The CMEXEC privilege allows the user's process to execute the Change Mode to Executive ($CMEXEC) system service.
This system service lets a process change its access mode to executive mode, execute a specified routine, and then return to the access mode that was in effect before the system service was called. While in executive mode, the process is allowed to execute the Change Mode to Kernel ($CMKRNL) system service.
Grant this privilege only to users who need to gain access to protected
and sensitive data structures and internal functions of the operating
system. If unqualified users have unrestricted access to sensitive data
structures and functions, the operating system and service to other
users can be easily disrupted. Such disruptions can include failure of
the system, destruction of all system and user data, and exposure of
confidential information.
A.8 CMKRNL Privilege (All)
The CMKRNL privilege allows the user's process to execute the Change Mode to Kernel ($CMKRNL) system service.
This system service lets a process change its access mode to kernel mode, execute a specified routine, and then return to the access mode that was in effect before the system service was called. While in kernel mode, a process can enable any system privilege.
A process holding both CMKRNL and SYSNAM can set the system time.
Grant this privilege only to users who need to execute privileged instructions or who need to gain access to the most protected and sensitive data structures and functions of the operating system. If unqualified users have unrestricted use of privileged instructions and unrestricted access to sensitive data structures and functions, the operating system and service to other users can be easily disrupted. Such disruptions can include failure of the system, destruction of all system and user data, and exposure of confidential information.
The CMKRNL privilege lets a process perform the following tasks:
Task | Interface |
---|---|
Modify a multiprocessor operation | START/CPU, STOP/CPU |
Modify systemwide RMS defaults | SET RMS/SYSTEM |
Suspend a process in kernel mode | SET PROCESS/SUSPEND=KERNEL |
Modify another process' rights list or its nondynamic identifier attributes | SET RIGHTS_LIST |
Grant an identifier with modified attributes | SET RIGHTS/ATTRIBUTE |
Modify the system rights list | SET RIGHTS_LIST/SYSTEM |
Change a process UIC | SET UIC |
Modify the number of interlocked queue retries | $QIO request to an Ethernet 802 driver (DEBNA/NI) |
Connect to a device interrupt vector | $QIO request to an interrupt vector (CONINTERR) |
Start or modify a line in Genbyte mode | $QIO request to a synchronous communications line (XGDRIVER) |
Set the spin-wait time on the port command register | $QIO request to an Ethernet 802 driver (DEBNA) |
Modify a known image list | INSTALL |
Process the following item codes:
|
Send to Job Controller system service ($SNDJBC) |
Create a detached process with unrestricted quotas | RUN/DETACHED, $CREPRC |
Examine the internals of the running system | ANALYZE/SYSTEM |
The DIAGNOSE privilege lets a process run online diagnostic programs and intercept and copy all messages written to the error log file.
The DIAGNOSE privilege also lets a process perform the following tasks:
Task | Interface |
---|---|
Issue a $QIO request with associated diagnostic buffer | $QIO |
Modify the number of interlocked queue retries | $QIO request to an Ethernet 802 driver (DEBNA/NI) |
Set the spin-wait time on the port command register | $QIO request to an Ethernet 802 driver (DEBNA) |
Access the Diagnostic and Utilities Protocol (DUP) class driver | $QIO request to the DUP class driver used by SET HOST/HSC (FYDRIVER) |
Execute a special passthrough function in the SCSI generic class driver | $QIO request to the SCSI driver (GKDRIVER) |
Process a diagnostic buffer | $QIO request to a TU58 magnetic tape (TUDRIVER) |
The DOWNGRADE privilege permits a process to manipulate mandatory access controls. The privilege lets a process write to an object of lower secrecy, in violation of the Bell and LaPadula confinement (*) property.1 This privilege is reserved for enhanced security products like the Security Enhancement Service software (SEVMS).
1 Name of the restriction on write-downs. Multilevel security requires the complete prohibition of write-downs by untrusted software. |
A.11 EXQUOTA Privilege (Devour)
The EXQUOTA privilege allows the space taken by the user's files on
given disk volumes to exceed any usage quotas set for the user (as
determined by UIC) on those volumes.
A.12 GROUP Privilege (Group)
The GROUP privilege allows the user's process to affect other processes in its own group by executing the following process-control system services:
With GROUP privilege, a user's process can control another process in the same group. The user's process is allowed to examine other processes in its own group by executing the Get Job/Process Information ($GETJPI) system service. A process with GROUP privilege can issue the SET PROCESS command for other processes in its group.
GROUP privilege is not needed for a process to exercise control over,
or to examine, subprocesses that it created or other detached processes
of its UIC. You should, however, grant this privilege to users who need
to exercise control over the processes and operations of other members
of their UIC group.
A.13 GRPNAM Privilege (Devour)
The GRPNAM privilege lets the user's process bypass discretionary access controls and insert names into (and delete names from) the logical name table of the group to which the process belongs by the use of the Create Logical Name ($CRELNM) and Delete Logical Name ($DELLNM) system services.
In addition, the privileged process can issue the DCL commands ASSIGN and DEFINE to add names to the group logical name table and the DCL command DEASSIGN to delete names from the table. The privilege allows the use of the /GROUP qualifier with the DCL commands MOUNT and DISMOUNT (as well as the system services $MOUNT and $DISMOUNT) when sharing volumes among group members.
Do not grant this privilege to all users of the system because it
allows the user's process to create an unlimited number of group
logical names. When unqualified users have the unrestricted ability to
create group logical names, excessive use of system dynamic memory can
degrade system performance. In addition, a process with the GRPNAM
privilege can interfere with the activities of other processes in the
same group by creating definitions of commonly used logical names such
as SYS$SYSTEM.
A.14 GRPPRV Privilege (Group)
When the process's group matches the group of the object owner, the GRPPRV privilege gives a process the access rights provided by the object's system protection field. GRPPRV also lets a process change the protection or the ownership of any object whose owner group matches the process's group by using the DCL commands SET SECURITY.
Grant this privilege only to users who function as group managers. If this privilege is given to unqualified users who have no need for it, they can modify group UAF records to values equal to those of the group manager. They can increase resource allocations and grant privileges for which they are authorized.
The GRPPRV privilege lets a process perform the following tasks:
Task | Interface |
---|---|
Modify object ownership | SET SECURITY/OWNER, $QIO request to F11BXQP |
Read or modify a user authorization record | $GETUAI, $SETUAI |
File system operations: | $QIO request to F11BXQP |
|
Processes can create detached processes that have their own UIC without the IMPERSONATE privilege, provided the processes do not exceed their MAXJOBS and MAXDETACH quotas. However, the IMPERSONATE privilege becomes valuable when a process wants to specify a different UIC for the detached process. There is no restriction on the UIC that can be specified for a detached process if you have the IMPERSONATE privilege. Thus, there are no restrictions on the files, directories, and other objects to which a detached process can gain access. The IMPERSONATE privilege also lets a process create a detached process with unrestricted quotas. A process can create detached processes by executing the Create Process ($CREPRC) system service.
In addition, IMPERSONATE grants the ability to create a trusted server process using the DCL command RUN/DETACH. Trusted processes are exempt from the normal system security auditing policy.
Detached processes remain in existence even after the user who created them has logged out of the system.
The IMPERSONATE privilege was formerly called the DETACH privilege. For backwards compatability, if you specify DETACH in a command line, the command continues to work properly. |
Previous | Next | Contents | Index |
Copyright © Compaq Computer Corporation 1998. All rights reserved. Legal |
6346PRO_031.HTML
|