Vulnerability Discussion
The macOS is able to be configured to set an automated termination for 72
hours or less for all temporary or emergency accounts upon account creation.
Emergency administrator accounts are privileged accounts established in response to crisis situations
where the need for rapid account activation is required. Therefore, emergency account activation may
bypass normal account authorization processes. If these accounts are disabled, system maintenance during
emergencies may not be possible, thus adversely affecting system availability.
Although the ability to create and use emergency administrator accounts is necessary for performing
system maintenance during emergencies, these accounts present vulnerabilities to the system if they are
not disabled and removed when they are no longer needed. Configuring the macOS to automatically remove
or disable emergency accounts within 72 hours of creation mitigates the risks posed if one were to be
created and accidentally left active once the crisis is resolved.
Emergency administrator accounts are different from infrequently used accounts (i.e., local logon
accounts used by system administrators when network or normal logon is not available). Infrequently used
accounts also remain available and are not subject to automatic termination dates. However, an emergency
administrator account is normally a different account created for use by vendors or system maintainers.
To address access requirements, many operating systems can be integrated with enterprise-level
authentication/access mechanisms that meet or exceed access control policy requirements.
If temporary or emergency user accounts remain active when no longer needed or for an excessive period,
these accounts may be targeted by attackers to gain unauthorized access. To mitigate this risk,
automated termination of all temporary or emergency accounts must be set to 72 hours (or less) when the
temporary or emergency account is created.
If no policy is enforced by a directory service, a password policy can be set with the "pwpolicy"
utility. The variable names may vary depending on how the policy was set.
If there are no temporary or emergency accounts defined on the system, this is Not Applicable.
Satisfies: SRG-OS-000002-GPOS-00002,SRG-OS-000123-GPOS-00064
Check
Verify if a password policy is enforced by a directory service by asking the system
administrator (SA) or information system security officer (ISSO).
If no policy is enforced by a directory service, a password policy can be set with the "pwpolicy"
utility. The variable names may vary depending on how the policy was set.
If there are no temporary or emergency accounts defined on the system, this is Not Applicable.
To check if the password policy is configured to disable a temporary or emergency account after 72
hours, run the following command to output the password policy to the screen, substituting the
correct user name in place of username:
/usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2
If there is no output, and password policy is not controlled by a directory service, this is a
finding.
Otherwise, look for the line "policyCategoryAuthentication".
In the array that follows, there should be a section that contains a check
that allows users to log in if "policyAttributeCurrentTime" is less than the result of adding
"policyAttributeCreationTime" to 72 hours (259299 seconds). The check might use a variable defined
in its "policyParameters" section.
If the check does not exist or if the check adds too great an amount of time to
"policyAttributeCreationTime", this is a finding.
Fix
This setting may be enforced using local policy or by a directory
service.
To set local policy to disable a temporary or emergency user, create a plain text file containing the
following:
policyCategoryAuthentication
policyContent
policyAttributeCurrentTime < policyAttributeCreationTime+259299
policyIdentifier
Disable Tmp Accounts
After saving the file and exiting to the command prompt, run the following command to load the new
policy file, substituting the correct user name in place of "username" and the path to the file in place
of "/path/to/file".
/usr/bin/pwpolicy -u username setaccountpolicies /path/to/file