Apple OS X 10.13 Security Technical Implementation Guide

  • Version/Release: V2R4
  • Published: 2021-11-19
  • Expand All:
  • Severity:
  • Sort:
Compare

Select any two versions of this STIG to compare the individual requirements

View

Select any old version/release of this STIG to view the previous requirements

This Security Technical Implementation Guide is published as a tool to improve the security of Department of Defense (DoD) information systems. The requirements are derived from the National Institute of Standards and Technology (NIST) 800-53 and related documents. Comments or proposed revisions to this document should be sent via email to the following address: disa.stig_spt@mail.mil.
a
The macOS system must conceal, via the session lock, information previously visible on the display with a publicly viewable image.
AC-11 - Low - CCI-000060 - V-214802 - SV-214802r609363_rule
RMF Control
AC-11
Severity
Low
CCI
CCI-000060
Version
AOSX-13-000005
Vuln IDs
  • V-214802
  • V-81463
Rule IDs
  • SV-214802r609363_rule
  • SV-96177
A default screen saver must be configured for all users, as the screen saver will act as a session time-out lock for the system and must conceal the contents of the screen from unauthorized users. The screen saver must not display any sensitive information or reveal the contents of the locked session screen. Publicly viewable images can include static or dynamic images such as patterns used with screen savers, photographic images, solid colors, a clock, a battery life indicator, or a blank screen.
Checks: C-16002r396978_chk

To view the currently selected screen saver for the logged-on user, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep loginWindowModulePath If there is no result or defined "loginWindowModulePath", this is a finding.

Fix: F-16000r396979_fix

This setting is enforced using the "Login Window Policy" configuration profile.

b
The macOS system must be configured to disable hot corners.
AC-11 - Medium - CCI-000060 - V-214803 - SV-214803r609363_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000060
Version
AOSX-13-000006
Vuln IDs
  • V-214803
  • V-81465
Rule IDs
  • SV-214803r609363_rule
  • SV-96179
Although hot corners can be used to initiate a session lock or launch useful applications, they can also be configured to disable an automatic session lock from initiating. Such a configuration introduces the risk that a user might forget to manually lock the screen before stepping away from the computer. A session time-out lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems need to be able to identify when a user's session has idled and take action to initiate the session lock.
Checks: C-16003r396981_chk

To check if the system is configured to disable hot corners, run the following commands: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep wvous If the return is null, or does not equal: "wvous-bl-corner = 0; wvous-br-corner = 0; wvous-tl-corner = 0; wvous-tr-corner = 0;" this is a finding.

Fix: F-16001r396982_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
The macOS system must be configured to prevent Apple Watch from terminating a session lock.
AC-11 - Medium - CCI-000056 - V-214804 - SV-214804r609363_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
AOSX-13-000007
Vuln IDs
  • V-214804
  • V-81467
Rule IDs
  • SV-214804r609363_rule
  • SV-96181
Users must be prompted to enter their passwords when unlocking the screen saver. The screen saver acts as a session lock and prevents unauthorized users from accessing the current user's account.
Checks: C-16004r396984_chk

To check if the system is configured to prevent Apple Watch from terminating a session lock, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "allowAutoUnlock = 0;" If there is no result, this is a finding.

Fix: F-16002r396985_fix

This setting is enforced using the “Restrictions Policy" configuration profile.

b
The macOS system must initiate a session lock after a 15-minute period of inactivity.
AC-11 - Medium - CCI-000057 - V-214805 - SV-214805r609363_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000057
Version
AOSX-13-000010
Vuln IDs
  • V-214805
  • V-81469
Rule IDs
  • SV-214805r609363_rule
  • SV-96183
A screen saver must be enabled and set to require a password to unlock. The timeout should be set to 15 minutes of inactivity. This mitigates the risk that a user might forget to manually lock the screen before stepping away from the computer. A session time-out lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems need to be able to identify when a user's session has idled and take action to initiate the session lock.
Checks: C-16005r396987_chk

To check if the system has a configuration profile configured to enable the screen saver after a time-out period, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep loginWindowIdleTime The check should return a value of "900" or less for "loginWindowIdleTime". If it does not, this is a finding.

Fix: F-16003r396988_fix

This setting is enforced using the "Login Window Policy" configuration profile.

b
The macOS system must retain the session lock until the user reestablishes access using established identification and authentication procedures.
AC-11 - Medium - CCI-000056 - V-214806 - SV-214806r609363_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
AOSX-13-000020
Vuln IDs
  • V-214806
  • V-81471
Rule IDs
  • SV-214806r609363_rule
  • SV-96185
Users must be prompted to enter their passwords when unlocking the screen saver. The screen saver acts as a session lock and prevents unauthorized users from accessing the current user's account.
Checks: C-16006r396990_chk

To check if the system will prompt users to enter their passwords to unlock the screen saver, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep askForPassword If there is no result, or if "askForPassword" is not set to "1", this is a finding.

Fix: F-16004r396991_fix

This setting is enforced using the "Login Window Policy" configuration profile.

b
The macOS system must initiate the session lock no more than five seconds after a screen saver is started.
AC-11 - Medium - CCI-000056 - V-214807 - SV-214807r609363_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
AOSX-13-000025
Vuln IDs
  • V-214807
  • V-81473
Rule IDs
  • SV-214807r609363_rule
  • SV-96187
A screen saver must be enabled and set to require a password to unlock. An excessive grace period impacts the ability for a session to be truly locked, requiring authentication to unlock.
Checks: C-16007r396993_chk

To check if the system will prompt users to enter their passwords to unlock the screen saver, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep askForPasswordDelay If there is no result, or if "askForPasswordDelay" is not set to "5.0" or less, this is a finding.

Fix: F-16005r396994_fix

This setting is enforced using the "Security and Privacy Policy" configuration profile.

b
The macOS system must monitor remote access methods and generate audit records when successful/unsuccessful attempts to access/modify privileges occur.
AC-17 - Medium - CCI-000067 - V-214808 - SV-214808r609363_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-000067
Version
AOSX-13-000030
Vuln IDs
  • V-214808
  • V-81475
Rule IDs
  • SV-214808r609363_rule
  • SV-96189
Frequently, an attacker that successfully gains access to a system has only gained access to an account with limited privileges, such as a guest account or a service account. The attacker must attempt to change to another user account with normal or elevated privileges in order to proceed. Auditing successful and unsuccessful attempts to switch to another user account and the escalation of privileges mitigates this risk. Satisfies: SRG-OS-000032-GPOS-00013, SRG-OS-000064-GPOS-00033, SRG-OS-000462-GPOS-00206
Checks: C-16008r396996_chk

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Attempts to log in as another user are logged by way of the "lo" flag. If "lo" is not listed in the result of the check, this is a finding.

Fix: F-16006r396997_fix

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

c
The macOS system must implement DoD-approved encryption to protect the confidentiality and integrity of remote access sessions including transmitted data and data during preparation for transmission.
AC-17 - High - CCI-000068 - V-214809 - SV-214809r609363_rule
RMF Control
AC-17
Severity
High
CCI
CCI-000068
Version
AOSX-13-000035
Vuln IDs
  • V-214809
  • V-81477
Rule IDs
  • SV-214809r609363_rule
  • SV-96191
Without confidentiality and integrity protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD non-public information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., Remote Desktop Protocol [RDP]), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information. Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190
Checks: C-16009r396999_chk

For systems that allow remote access through SSH, run the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.openssh.sshd If the results do not show the following, this is a finding. "com.openssh.sshd" => false

Fix: F-16007r397000_fix

To enable the SSH service, run the following command: /usr/bin/sudo /bin/launchctl enable system/com.openssh.sshd The system may need to be restarted for the update to take effect.

c
The macOS system must be configured to disable rshd service.
CM-7 - High - CCI-000381 - V-214810 - SV-214810r609363_rule
RMF Control
CM-7
Severity
High
CCI
CCI-000381
Version
AOSX-13-000050
Vuln IDs
  • V-214810
  • V-81479
Rule IDs
  • SV-214810r609363_rule
  • SV-96193
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The "rshd" service must be disabled.
Checks: C-16010r397002_chk

To check if the "rshd" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.rshd If the results do not show the following, this is a finding: "com.apple.rshd" => true

Fix: F-16008r397003_fix

To disable the "rshd" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.rshd The system may need to be restarted for the update to take effect.

a
The macOS system must be configured with Bluetooth turned off unless approved by the organization.
CM-6 - Low - CCI-000366 - V-214812 - SV-214812r609363_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
AOSX-13-000065
Vuln IDs
  • V-214812
  • V-81483
Rule IDs
  • SV-214812r609363_rule
  • SV-96197
The Bluetooth kernel extension must be disabled, as wireless access introduces unnecessary security risks. Disabling Bluetooth support with a configuration profile mitigates this risk.
Checks: C-16012r397008_chk

If Bluetooth connectivity is required to facilitate use of approved external devices, this is not applicable. To check if Bluetooth is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableBluetooth If the return is null or is not "DisableBluetooth = 1", this is a finding.

Fix: F-16010r397009_fix

This setting is enforced using the "Bluetooth Policy" configuration profile.

b
The macOS system must be configured with Wi-Fi support software disabled.
AC-18 - Medium - CCI-001443 - V-214813 - SV-214813r609363_rule
RMF Control
AC-18
Severity
Medium
CCI
CCI-001443
Version
AOSX-13-000070
Vuln IDs
  • V-214813
  • V-81485
Rule IDs
  • SV-214813r609363_rule
  • SV-96199
Use of Wi-Fi to connect to unauthorized networks may facilitate the exfiltration of mission data. Satisfies: SRG-OS-000300-GPOS-00118, SRG-OS-000480-GPOS-00227
Checks: C-16013r397011_chk

If the system requires Wi-Fi to connect to an authorized network, this is not applicable. To check if the Wi-Fi network device is disabled, run the following command: /usr/bin/sudo /usr/sbin/networksetup -listallnetworkservices A disabled device will have an asterisk in front of its name. If the Wi-Fi device is missing this asterisk, this is a finding.

Fix: F-16011r397012_fix

To disable the Wi-Fi network device, run the following command: /usr/bin/sudo /usr/sbin/networksetup -setnetworkserviceenabled "Wi-Fi" off

b
The macOS system must be configured with Infrared [IR] support disabled.
CM-6 - Medium - CCI-000366 - V-214814 - SV-214814r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000075
Vuln IDs
  • V-214814
  • V-81487
Rule IDs
  • SV-214814r609363_rule
  • SV-96201
IR kernel support must be disabled to prevent users from controlling the system with IR devices. By default, if IR is enabled, the system will accept IR control from any remote device.
Checks: C-16014r397014_chk

To check if IR support is disabled, run the following command: /usr/bin/sudo /usr/bin/defaults read /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled If the result is not "0", this is a finding.

Fix: F-16012r397015_fix

To disable IR, run the following command: /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -bool FALSE

b
The macOS system must be configured with automatic actions disabled for blank CDs.
CM-6 - Medium - CCI-000366 - V-214815 - SV-214815r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000085
Vuln IDs
  • V-214815
  • V-81489
Rule IDs
  • SV-214815r609363_rule
  • SV-96203
Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for blank CDs mitigates this risk.
Checks: C-16015r397017_chk

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for blank CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.blank.cd.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Fix: F-16013r397018_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
The macOS system must be configured with automatic actions disabled for blank DVDs.
CM-6 - Medium - CCI-000366 - V-214816 - SV-214816r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000090
Vuln IDs
  • V-214816
  • V-81491
Rule IDs
  • SV-214816r609363_rule
  • SV-96205
Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for blank DVDs mitigates this risk.
Checks: C-16016r397020_chk

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for blank DVDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.blank.dvd.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Fix: F-16014r397021_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
The macOS system must be configured with automatic actions disabled for music CDs.
CM-6 - Medium - CCI-000366 - V-214817 - SV-214817r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000095
Vuln IDs
  • V-214817
  • V-81493
Rule IDs
  • SV-214817r609363_rule
  • SV-96207
Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for music CDs mitigates this risk.
Checks: C-16017r397023_chk

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for music CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.cd.music.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Fix: F-16015r397024_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
The macOS system must be configured with automatic actions disabled for picture CDs.
CM-6 - Medium - CCI-000366 - V-214818 - SV-214818r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000100
Vuln IDs
  • V-214818
  • V-81497
Rule IDs
  • SV-214818r609363_rule
  • SV-96211
Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for picture CDs mitigates this risk.
Checks: C-16018r397026_chk

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for picture CDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.cd.picture.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Fix: F-16016r397027_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
The macOS system must be configured with automatic actions disabled for video DVDs.
CM-6 - Medium - CCI-000366 - V-214819 - SV-214819r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000105
Vuln IDs
  • V-214819
  • V-81499
Rule IDs
  • SV-214819r609363_rule
  • SV-96213
Applications should not be configured to launch automatically when a disk is inserted. This potentially circumvents anti-virus software and allows malicious users to craft disks that can exploit user applications. Disabling Automatic Actions for video DVDs mitigates this risk.
Checks: C-16019r397029_chk

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To check if the system has the correct setting for video DVDs in the configuration profile, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 2 'com.apple.digihub.dvd.video.appeared' If this is not defined or "action" is not set to "1", this is a finding.

Fix: F-16017r397030_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
The macOS system must automatically remove or disable temporary user accounts after 72 hours.
AC-2 - Medium - CCI-000016 - V-214820 - SV-214820r609363_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-000016
Version
AOSX-13-000110
Vuln IDs
  • V-214820
  • V-81501
Rule IDs
  • SV-214820r609363_rule
  • SV-96215
If temporary 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 accounts must be set upon account creation. Temporary accounts are established as part of normal account activation procedures when there is a need for short-term accounts without the demand for immediacy in account activation. If temporary accounts are used, the operating system must be configured to automatically terminate these types of accounts after a DoD-defined time period of 72 hours. To address access requirements, many operating systems may be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.
Checks: C-16020r397032_chk

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. To check if the password policy is configured to disable a temporary 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/sudo /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 "<key>policyCategoryAuthentication</key>". In the array that follows, there should be a <dict> section that contains a check <string> 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: F-16018r397033_fix

This setting may be enforced using a configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current policy file, substituting the correct user name in place of "username": /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 > pwpolicy.plist Open the resulting password policy file in a text editor. If other policy settings are present, and the line "<key>policyCategoryAuthentication</key>" already exists, insert the following text after the <array> tag that immediately follows it: <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime + 259299</string> <key>policyIdentifier</key> <string>Disable Temporary Account</string> </dict> At a minimum, edit the file to ensure that it contains the following text: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime + 259299</string> <key>policyIdentifier</key> <string>Disable Temporary Account</string> </dict> </array> </dict> </plist> 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": /usr/bin/sudo /usr/bin/pwpolicy -u username setaccountpolicies pwpolicy.plist

b
The macOS system must automatically remove or disable emergency accounts after the crisis is resolved or within 72 hours.
AC-2 - Medium - CCI-001682 - V-214821 - SV-214821r609363_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-001682
Version
AOSX-13-000115
Vuln IDs
  • V-214821
  • V-81503
Rule IDs
  • SV-214821r609363_rule
  • SV-96217
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 automatically disabled, system maintenance during emergencies may not be possible, thus adversely affecting system availability. Emergency administrator accounts are different from infrequently used accounts (i.e., local logon accounts used by system administrators when network or normal logon/access 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.
Checks: C-16021r397035_chk

If an emergency account has been created on the system, check the expiration settings of a local account using the following command, replacing "username" with the correct value: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is output, verify that the account policies do not restrict the ability to log in after a certain date or amount of time. If they do, this is a finding.

Fix: F-16019r397036_fix

To remove all "pwpolicy" settings for an emergency account, run the following command, replacing "username" with the correct value: /usr/bin/sudo /usr/bin/pwpolicy -u username clearaccountpolicies Otherwise, to change the password policy for an emergency account and only remove some policy sections, run the following command to save a copy of the current policy file for the specified username: /usr/bin/sudo /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 > pwpolicy.plist Open the resulting password policy file in a text editor and remove any policyContent sections that would restrict the ability to log in after a certain date or amount of time. To remove the section cleanly, remove the entire text that begins with <dict>, contains the like <key>policyContent<'/key>, and ends with </dict>. After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy -u username setaccountpolicies pwpolicy.plist

b
The macOS system must generate audit records for all account creations, modifications, disabling, and termination events; privileged activities or other system-level access; all kernel module load, unload, and restart actions; all program initiations; and organizationally defined events for all non-local maintenance and diagnostic sessions.
AC-6 - Medium - CCI-002234 - V-214822 - SV-214822r609363_rule
RMF Control
AC-6
Severity
Medium
CCI
CCI-002234
Version
AOSX-13-000120
Vuln IDs
  • V-214822
  • V-81505
Rule IDs
  • SV-214822r609363_rule
  • SV-96219
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000327-GPOS-00127, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000476-GPOS-00221, SRG-OS-000477-GPOS-00222
Checks: C-16022r466213_chk

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Administrative and Privileged access, including administrative use of the command line tools "kextload" and "kextunload" and changes to configuration settings are logged by way of the "ad" flag. If "ad" is not listed in the result of the check, this is a finding.

Fix: F-16020r466214_fix

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

b
The macOS system must be configured to disable SMB File Sharing unless it is required.
CM-7 - Medium - CCI-000381 - V-214823 - SV-214823r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000139
Vuln IDs
  • V-214823
  • V-81507
Rule IDs
  • SV-214823r609363_rule
  • SV-96221
File Sharing is usually non-essential and must be disabled if not required. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.
Checks: C-16023r397041_chk

If SMB File Sharing is required, this is not applicable. To check if the SMB File Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.smbd If the results do not show the following, this is a finding: "com.apple.smbd" =&gt; true

Fix: F-16021r397042_fix

To disable the SMB File Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.smbd The system may need to be restarted for the update to take effect.

b
The macOS system must be configured to disable Apple File (AFP) Sharing.
CM-7 - Medium - CCI-000381 - V-214824 - SV-214824r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000140
Vuln IDs
  • V-214824
  • V-81509
Rule IDs
  • SV-214824r609363_rule
  • SV-96223
File Sharing is non-essential and must be disabled. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.
Checks: C-16024r397044_chk

To check if the Apple File (AFP) Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.AppleFileServer If the results do not show the following, this is a finding: "com.apple.AppleFileServer" =&gt; true

Fix: F-16022r397045_fix

To disable the Apple File (AFP) Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.AppleFileServer The system may need to be restarted for the update to take effect.

b
The macOS system must be configured to disable the Network File System (NFS) daemon unless it is required.
CM-7 - Medium - CCI-000381 - V-214825 - SV-214825r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000141
Vuln IDs
  • V-214825
  • V-81511
Rule IDs
  • SV-214825r609363_rule
  • SV-96225
If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.
Checks: C-16025r397047_chk

If the NFS daemon is required, this is not applicable. To check if the NFS daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.nfsd If the results do not show the following, this is a finding: "com.apple.nfsd" =&gt; true

Fix: F-16023r397048_fix

To disable the NFS daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd The system may need to be restarted for the update to take effect.

b
The macOS system must be configured to disable the Network File System (NFS) lock daemon unless it is required.
CM-7 - Medium - CCI-000381 - V-214826 - SV-214826r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000142
Vuln IDs
  • V-214826
  • V-81513
Rule IDs
  • SV-214826r609363_rule
  • SV-96227
If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.
Checks: C-16026r397050_chk

If the NFS lock daemon is required, this is not applicable. To check if the NFS lock daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.lockd If the results do not show the following, this is a finding: "com.apple.lockd" =&gt; true

Fix: F-16024r397051_fix

To disable the NFS lock daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.lockd The system may need to be restarted for the update to take effect.

b
The macOS system must be configured to disable the Network File System (NFS) stat daemon unless it is required.
CM-7 - Medium - CCI-000381 - V-214827 - SV-214827r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000143
Vuln IDs
  • V-214827
  • V-81515
Rule IDs
  • SV-214827r609363_rule
  • SV-96229
If the system does not require access to NFS file shares or is not acting as an NFS server, support for NFS is non-essential and NFS services must be disabled. NFS is a network file system protocol supported by UNIX-like operating systems. Enabling any service increases the attack surface for an intruder. By disabling unnecessary services, the attack surface is minimized.
Checks: C-16027r397053_chk

If the NFS stat daemon is required, this is not applicable. To check if the NFS stat daemon is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.statd.notify If the results do not show the following, this is a finding: "com.apple.statd.notify" =&gt; true

Fix: F-16025r397054_fix

To disable the NFS stat daemon, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.statd.notify The system may need to be restarted for the update to take effect.

b
The macOS system firewall must be configured with a default-deny policy.
CM-6 - Medium - CCI-000366 - V-214828 - SV-214828r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000155
Vuln IDs
  • V-214828
  • V-81517
Rule IDs
  • SV-214828r609363_rule
  • SV-96231
An approved firewall must be installed and enabled to work in concert with the macOS Application Firewall. When configured correctly, firewalls protect computers from network attacks by blocking or limiting access to open network ports.
Checks: C-16028r397056_chk

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved firewall is loaded on the system. The recommended system is the McAfee HBSS. If no firewall is installed on the system, this is a finding. If a firewall is installed and it is not configured with a "default-deny" policy, this is a finding.

Fix: F-16026r397057_fix

Install an approved HBSS or firewall solution onto the system and configure it with a "default-deny" policy.

b
The macOS system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system.
AC-8 - Medium - CCI-000048 - V-214829 - SV-214829r609363_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-000048
Version
AOSX-13-000186
Vuln IDs
  • V-214829
  • V-81519
Rule IDs
  • SV-214829r609363_rule
  • SV-96233
Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with DTM-08-060.
Checks: C-16029r397059_chk

Verify the operating system displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system. Check to see if the operating system has the correct text listed in the "/etc/banner" file with the following command: # more /etc/banner The command should return the following text: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." If the operating system does not display a graphical logon banner or the banner does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding. If the text in the "/etc/banner" file does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding.

Fix: F-16027r397060_fix

Create a text file containing the required DoD text. Name the file "banner" and place it in "/etc/".

b
The macOS system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via SSH.
AC-8 - Medium - CCI-000048 - V-214830 - SV-214830r609363_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-000048
Version
AOSX-13-000187
Vuln IDs
  • V-214830
  • V-81521
Rule IDs
  • SV-214830r609363_rule
  • SV-96235
Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with DTM-08-060. Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000024-GPOS-00007
Checks: C-16030r397062_chk

For systems that allow remote access through SSH, run the following command to verify that "/etc/banner" is displayed before granting access: # /usr/bin/grep Banner /etc/ssh/sshd_config If the sshd Banner configuration option does not point to "/etc/banner", this is a finding.

Fix: F-16028r397063_fix

For systems that allow remote access through SSH, modify the "/etc/ssh/sshd_config" file to add or update the following line: Banner /etc/banner

b
The macOS system must be configured so that any connection to the system must display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system.
AC-8 - Medium - CCI-000050 - V-214831 - SV-214831r609363_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-000050
Version
AOSX-13-000195
Vuln IDs
  • V-214831
  • V-81523
Rule IDs
  • SV-214831r609363_rule
  • SV-96237
Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with DTM-08-060. Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000024-GPOS-00007, SRG-OS-000228-GPOS-00088
Checks: C-16031r397065_chk

The policy banner will show if a "PolicyBanner.rtf" or "PolicyBanner.rtfd" exists in the "/Library/Security" folder. Run this command to show the contents of that folder: /bin/ls -l /Library/Security/PolicyBanner.rtf* If neither "PolicyBanner.rtf" nor "PolicyBanner.rtfd" exists, this is a finding. The banner text of the document MUST read: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." If the text is not worded exactly this way, this is a finding.

Fix: F-16029r397066_fix

Create an RTF file containing the required text. Name the file "PolicyBanner.rtf" or "PolicyBanner.rtfd" and place it in "/Library/Security/".

b
The macOS system must generate audit records for DoD-defined events such as successful/unsuccessful logon attempts, successful/unsuccessful direct access attempts, starting and ending time for user access, and concurrent logons to the same account from different sources.
AU-12 - Medium - CCI-000172 - V-214832 - SV-214832r609363_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-13-000200
Vuln IDs
  • V-214832
  • V-81525
Rule IDs
  • SV-214832r609363_rule
  • SV-96239
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000470-GPOS-00214, SRG-OS-000472-GPOS-00217, SRG-OS-000473-GPOS-00218, SRG-OS-000475-GPOS-00220
Checks: C-16032r466216_chk

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Logon events are logged by way of the "aa" flag. If "aa" is not listed in the result of the check, this is a finding.

Fix: F-16030r466217_fix

To ensure the appropriate flags are enabled for auditing, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

b
The macOS system must initiate session audits at system startup, using internal clocks with time stamps for audit records that meet a minimum granularity of one second and can be mapped to Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT), in order to generate audit records containing information to establish what type of events occurred, the identity of any individual or process associated with the event, including individual identities of group account users, establish where the events occurred, source of the event, and outcome of the events including all account enabling actions, full-text recording of privileged commands, and information about the use of encryption for access wireless access to and from the system.
AU-8 - Medium - CCI-000159 - V-214833 - SV-214833r609363_rule
RMF Control
AU-8
Severity
Medium
CCI
CCI-000159
Version
AOSX-13-000230
Vuln IDs
  • V-214833
  • V-81527
Rule IDs
  • SV-214833r609363_rule
  • SV-96241
Without establishing what type of events occurred, when they occurred, and by whom it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack. Audit record content that may be necessary to satisfy this requirement includes, for example, time stamps, source and destination addresses, user/process identifiers, event descriptions, success/fail indications, filenames involved, and access control or flow control rules invoked. Associating event types with detected events in the operating system audit logs provides a means of investigating an attack, recognizing resource utilization or capacity thresholds, or identifying an improperly configured operating system. Satisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPOS-00016, SRG-OS-000039-GPOS-00017, SRG-OS-000040-GPOS-00018, SRG-OS-000041-GPOS-00019, SRG-OS-000042-GPOS-00020, SRG-OS-000042-GPOS-00021, SRG-OS-000055-GPOS-00026, SRG-OS-000254-GPOS-00095, SRG-OS-000255-GPOS-00096, SRG-OS-000255-GPOS-00096, SRG-OS-000299-GPOS-00117, SRG-OS-000303-GPOS-00120, SRG-OS-000358-GPOS-00145, SRG-OS-000359-GPOS-00146
Checks: C-16033r466219_chk

To check if the audit service is running, use the following command: /usr/bin/sudo /bin/launchctl list | /usr/bin/grep com.apple.auditd If nothing is returned, the audit service is not running, and this is a finding.

Fix: F-16031r466220_fix

To enable the audit service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist

b
The macOS system must enable System Integrity Protection.
AU-9 - Medium - CCI-001493 - V-214834 - SV-214834r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-001493
Version
AOSX-13-000240
Vuln IDs
  • V-214834
  • V-81529
Rule IDs
  • SV-214834r609363_rule
  • SV-96243
The System Integrity Protection is vital to prevent unauthorized and unintended information transfer via shared system resources, protect audit tools from unauthorized access, modification, and deletion, limit privileges to change software resident within software libraries, limit the ability of non-privileged users to grant other users direct access to the contents of their home directories/folders. SIP also ensures the presence of an audit record generation capability for DoD-defined auditable events for all operating system components, supports on-demand and after-the-fact reporting requirements, does not alter original content or time ordering of audit records. Satisfies: SRG-OS-000051-GPOS-00024, SRG-OS-000054-GPOS-00025, SRG-OS-000062-GPOS-00031, SRG-OS-000122-GPOS-00063, SRG-OS-000138-GPOS-00069, SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099, SRG-OS-000259-GPOS-00100, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000480-GPOS-00228, SRG-OS-000480-GPOS-00230
Checks: C-16034r397074_chk

System Integrity Protection is a security feature, enabled by default, that protects certain system processes and files from being modified or tampered with. Check the current status of "System Integrity Protection" with the following command: /usr/bin/csrutil status If the result does not show the following, this is a finding. System Integrity Protection status: enabled

Fix: F-16032r397075_fix

To reenable "System Integrity Protection", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the following command: /usr/bin/csrutil enable

b
The macOS system must allocate audit record storage capacity to store at least one weeks worth of audit records when audit records are not immediately sent to a central audit record storage facility.
AU-4 - Medium - CCI-001849 - V-214835 - SV-214835r609363_rule
RMF Control
AU-4
Severity
Medium
CCI
CCI-001849
Version
AOSX-13-000295
Vuln IDs
  • V-214835
  • V-81531
Rule IDs
  • SV-214835r609363_rule
  • SV-96245
The audit service must be configured to require that records are kept for seven days or longer before deletion when there is no central audit record storage facility. When "expire-after" is set to "7d", the audit service will not delete audit logs until the log data is at least seven days old.
Checks: C-16035r397077_chk

The check displays the amount of time the audit system is configured to retain audit log files. The audit system will not delete logs until the specified condition has been met. To view the current setting, run the following command: /usr/bin/sudo /usr/bin/grep ^expire-after /etc/security/audit_control If this returns no results, or does not contain "7d" or a larger value, this is a finding.

Fix: F-16033r397078_fix

Edit the "/etc/security/audit_control" file and change the value for "expire-after" to the amount of time audit logs should be kept for the system. Use the following command to set the "expire-after" value to "7d": /usr/bin/sudo /usr/bin/sed -i.bak 's/.*expire-after.*/expire-after:7d/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

b
The macOS system must provide an immediate warning to the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated audit record storage volume reaches 75 percent of repository maximum audit record storage capacity.
AU-5 - Medium - CCI-001855 - V-214836 - SV-214836r609363_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-001855
Version
AOSX-13-000305
Vuln IDs
  • V-214836
  • V-81533
Rule IDs
  • SV-214836r609363_rule
  • SV-96247
The audit service must be configured to require a minimum percentage of free disk space in order to run. This ensures that audit will notify the administrator that action is required to free up more disk space for audit logs. When "minfree" is set to 25 percent, security personnel are notified immediately when the storage volume is 75 percent full and are able to plan for audit record storage capacity expansion.
Checks: C-16036r466222_chk

The check displays the "% free" to leave available for the system. The audit system will not write logs if the volume has less than this percentage of free disk space. To view the current setting, run the following command: /usr/bin/sudo /usr/bin/grep ^minfree /etc/security/audit_control If this returns no results, or does not contain "25", this is a finding.

Fix: F-16034r466223_fix

Edit the "/etc/security/audit_control" file and change the value for "minfree" to "25" using the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*minfree.*/minfree:25/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control file".

b
The macOS system must provide an immediate real-time alert to the System Administrator (SA) and Information System Security Officer (ISSO), at a minimum, of all audit failure events requiring real-time alerts.
AU-5 - Medium - CCI-001858 - V-214837 - SV-214837r609363_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-001858
Version
AOSX-13-000310
Vuln IDs
  • V-214837
  • V-81535
Rule IDs
  • SV-214837r609363_rule
  • SV-96249
The audit service should be configured to immediately print messages to the console or email administrator users when an auditing failure occurs. It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without a real-time alert, security personnel may be unaware of an impending failure of the audit capability and system operation may be adversely affected.
Checks: C-16037r397083_chk

By default, "auditd" only logs errors to "syslog". To see if audit has been configured to print error messages to the console, run the following command: /usr/bin/sudo /usr/bin/grep logger /etc/security/audit_warn If the argument "-s" is missing, or if "audit_warn" has not been otherwise modified to print errors to the console or send email alerts to the SA and ISSO, this is a finding.

Fix: F-16035r397084_fix

To make "auditd" log errors to standard error as well as "syslogd", run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/logger -p/logger -s -p/' /etc/security/audit_warn; /usr/bin/sudo /usr/sbin/audit -s

b
The macOS system must, for networked systems, compare internal information system clocks at least every 24 hours with a server that is synchronized to one of the redundant United States Naval Observatory (USNO) time servers or a time server designated for the appropriate DoD network (NIPRNet/SIPRNet) and/or the Global Positioning System (GPS).
AU-8 - Medium - CCI-001891 - V-214838 - SV-214838r609363_rule
RMF Control
AU-8
Severity
Medium
CCI
CCI-001891
Version
AOSX-13-000330
Vuln IDs
  • V-214838
  • V-81537
Rule IDs
  • SV-214838r609363_rule
  • SV-96251
Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside of the configured acceptable allowance (drift) may be inaccurate. Synchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network. Organizations should consider endpoints that may not have regular access to the authoritative time server (e.g., mobile, teleworking, and tactical endpoints). Satisfies: SRG-OS-000355-GPOS-00143, SRG-OS-000356-GPOS-00144
Checks: C-16038r466225_chk

The Network Time Protocol (NTP) service must be enabled on all networked systems. To check if the service is running, use the following command: /usr/bin/sudo /bin/launchctl list | grep com.apple.timed 83 0 com.apple.timed If nothing is returned, this is a finding. To verify that an authorized NTP server is configured, run the following command or examine "/etc/ntp.conf": /usr/bin/sudo /usr/bin/grep ^server /etc/ntp.conf server ntp.usno.navy.mil server ntp.usnogps.navy.mil Note: Only approved time servers should be configured for use. If no server is configured, or if an unapproved time server is in use, this is a finding.

Fix: F-16036r466226_fix

To enable the NTP service, run the following command: /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.timed.plist To configure one or more time servers for use, edit "/etc/ntp.conf" and enter each hostname or IP address on a separate line, prefixing each one with the keyword "server".

b
The macOS system must be configured with audit log files owned by root.
AU-9 - Medium - CCI-000162 - V-214839 - SV-214839r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000331
Vuln IDs
  • V-214839
  • V-81539
Rule IDs
  • SV-214839r609363_rule
  • SV-96253
The audit service must be configured to create log files with the correct ownership to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to only be readable and writable by root or administrative users with sudo, the risk is mitigated.
Checks: C-16039r397089_chk

To check the ownership of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | grep -v current The results should show the owner (third column) to be "root". If they do not, this is a finding.

Fix: F-16037r397090_fix

For any log file that returns an incorrect owner, run the following command: /usr/bin/sudo chown root [audit log file] [audit log file] is the full path to the log file in question.

b
The macOS system must be configured with audit log folders owned by root.
AU-9 - Medium - CCI-000162 - V-214840 - SV-214840r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000332
Vuln IDs
  • V-214840
  • V-81541
Rule IDs
  • SV-214840r609363_rule
  • SV-96255
The audit service must be configured to create log files with the correct ownership to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.
Checks: C-16040r397092_chk

To check the ownership of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the owner (third column) to be "root". If it does not, this is a finding.

Fix: F-16038r397093_fix

For any log folder that has an incorrect owner, run the following command: /usr/bin/sudo chown root [audit log folder]

b
The macOS system must be configured with audit log files group-owned by wheel.
AU-9 - Medium - CCI-000162 - V-214841 - SV-214841r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000333
Vuln IDs
  • V-214841
  • V-81543
Rule IDs
  • SV-214841r609363_rule
  • SV-96257
The audit service must be configured to create log files with the correct group ownership to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.
Checks: C-16041r397095_chk

To check the group ownership of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current The results should show the group owner (fourth column) to be "wheel". If they do not, this is a finding.

Fix: F-16039r397096_fix

For any log file that returns an incorrect group owner, run the following command: /usr/bin/sudo chgrp wheel [audit log file] [audit log file] is the full path to the log file in question.

b
The macOS system must be configured with audit log folders group-owned by wheel.
AU-9 - Medium - CCI-000162 - V-214842 - SV-214842r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000334
Vuln IDs
  • V-214842
  • V-81545
Rule IDs
  • SV-214842r609363_rule
  • SV-96259
The audit service must be configured to create log files with the correct group ownership to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.
Checks: C-16042r397098_chk

To check the group ownership of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the group (fourth column) to be "wheel". If they do not, this is a finding.

Fix: F-16040r397099_fix

For any log folder that has an incorrect group, run the following command: /usr/bin/sudo chgrp wheel [audit log folder]

b
The macOS system must be configured with audit log files set to mode 440 or less permissive.
AU-9 - Medium - CCI-000162 - V-214843 - SV-214843r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000335
Vuln IDs
  • V-214843
  • V-81547
Rule IDs
  • SV-214843r609363_rule
  • SV-96261
The audit service must be configured to create log files with the correct permissions to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and about users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.
Checks: C-16043r397101_chk

To check the permissions of the audit log files, run the following command: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current The results should show the permissions (first column) to be "440" or less permissive. If they do not, this is a finding.

Fix: F-16041r397102_fix

For any log file that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 440 [audit log file] [audit log file] is the full path to the log file in question.

b
The macOS system must be configured with audit log folders set to mode 700 or less permissive.
AU-9 - Medium - CCI-000162 - V-214844 - SV-214844r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000336
Vuln IDs
  • V-214844
  • V-81549
Rule IDs
  • SV-214844r609363_rule
  • SV-96263
The audit service must be configured to create log folders with the correct permissions to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and users. If log folders are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-16044r397104_chk

To check the permissions of the audit log folder, run the following command: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') The results should show the permissions (first column) to be "700" or less permissive. If they do not, this is a finding.

Fix: F-16042r397105_fix

For any log folder that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 700 [audit log folder]

b
The macOS system must be configured so that log files must not contain access control lists (ACLs).
AU-9 - Medium - CCI-000162 - V-214845 - SV-214845r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000337
Vuln IDs
  • V-214845
  • V-81551
Rule IDs
  • SV-214845r609363_rule
  • SV-96265
The audit service must be configured to create log files with the correct permissions to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and users. If log files are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.
Checks: C-16045r397107_chk

To check if a log file contains ACLs, run the following commands: /usr/bin/sudo ls -le $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') | /usr/bin/grep -v current In the output from the above commands, ACLs will be listed under any file that may contain them (e.g., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any such line exists, this is a finding.

Fix: F-16043r397108_fix

For any log file that contains ACLs, run the following command: /usr/bin/sudo chmod -N [audit log file]

b
The macOS system must be configured so that log folders must not contain access control lists (ACLs).
AU-9 - Medium - CCI-000162 - V-214846 - SV-214846r609363_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
AOSX-13-000338
Vuln IDs
  • V-214846
  • V-81553
Rule IDs
  • SV-214846r609363_rule
  • SV-96267
The audit service must be configured to create log folders with the correct permissions to prevent regular users from reading audit logs. Audit logs contain sensitive data about the system and users. If log folders are set to be readable and writable only by root or administrative users with sudo, the risk is mitigated.
Checks: C-16046r397110_chk

To check if a log folder contains ACLs, run the following commands: /usr/bin/sudo ls -lde $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | awk -F: '{print $2}') In the output from the above commands, ACLs will be listed under any folder that may contain them (e.g., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any such line exists, this is a finding.

Fix: F-16044r397111_fix

For any log folder that contains ACLs, run the following command: /usr/bin/sudo chmod -N [audit log folder]

c
The macOS system must have the security assessment policy subsystem enabled.
CM-5 - High - CCI-001749 - V-214847 - SV-214847r609363_rule
RMF Control
CM-5
Severity
High
CCI
CCI-001749
Version
AOSX-13-000430
Vuln IDs
  • V-214847
  • V-81555
Rule IDs
  • SV-214847r609363_rule
  • SV-96269
Any changes to the hardware, software, and/or firmware components of the information system and/or application can potentially have significant effects on the overall security of the system. Accordingly, software defined by the organization as critical must be signed with a certificate that is recognized and approved by the organization.
Checks: C-16047r397113_chk

To check the status of the Security assessment policy subsystem, run the following command: /usr/bin/sudo /usr/sbin/spctl --status | /usr/bin/grep enabled If nothing is returned, this is a finding.

Fix: F-16045r397114_fix

To enable the Security assessment policy subsystem, run the following command: /usr/bin/sudo /usr/sbin/spctl --master-enable

a
The macOS system must be configured to disable the iCloud Calendar services.
CM-7 - Low - CCI-001774 - V-214850 - SV-214850r609363_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-001774
Version
AOSX-13-000505
Vuln IDs
  • V-214850
  • V-81561
Rule IDs
  • SV-214850r609363_rule
  • SV-96275
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The application Calendar establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16050r397122_chk

To check if iCloud Calendar is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudCalendar If the result is not “allowCloudCalendar = 0”, this is a finding.

Fix: F-16048r397123_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

a
The macOS system must be configured to disable the iCloud Reminders services.
CM-7 - Low - CCI-000381 - V-214851 - SV-214851r609363_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-13-000507
Vuln IDs
  • V-214851
  • V-81563
Rule IDs
  • SV-214851r609363_rule
  • SV-96277
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The application Reminders establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16051r397125_chk

To check if iCloud Reminders is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudReminders If the result is not “allowCloudReminders = 0”, this is a finding.

Fix: F-16049r397126_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

a
The macOS system must be configured to disable iCloud Address Book services.
CM-7 - Low - CCI-001774 - V-214852 - SV-214852r609363_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-001774
Version
AOSX-13-000510
Vuln IDs
  • V-214852
  • V-81565
Rule IDs
  • SV-214852r609363_rule
  • SV-96279
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The application Address Book establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16052r397128_chk

To check if iCloud Address Book is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudAddressBook If the result is not “allowCloudAddressBook = 0”, this is a finding.

Fix: F-16050r397129_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

a
The macOS system must be configured to disable the iCloud Mail services.
CM-7 - Low - CCI-000381 - V-214853 - SV-214853r609363_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-13-000515
Vuln IDs
  • V-214853
  • V-81567
Rule IDs
  • SV-214853r609363_rule
  • SV-96281
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The application Mail establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16053r397131_chk

To check if iCloud Mail is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudMail If the result is not “allowCloudMail = 0”, this is a finding.

Fix: F-16051r397132_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

a
The macOS system must be configured to disable the iCloud Notes services.
CM-7 - Low - CCI-001774 - V-214854 - SV-214854r609363_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-001774
Version
AOSX-13-000517
Vuln IDs
  • V-214854
  • V-81569
Rule IDs
  • SV-214854r609363_rule
  • SV-96283
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The application Notes establishes connections to Apple's iCloud, despite using security controls to disable iCloud access. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16054r397134_chk

To check if iCloud Notes is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudNotes If the result is not “allowCloudNotes = 0”, this is a finding.

Fix: F-16052r397135_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must cover or disable the built-in or attached camera when not in use.
CM-7 - Medium - CCI-000381 - V-214855 - SV-214855r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000518
Vuln IDs
  • V-214855
  • V-81571
Rule IDs
  • SV-214855r609363_rule
  • SV-96285
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Failing to disconnect from collaborative computing devices (i.e. cameras) can result in subsequent compromises of organizational information. Providing easy methods to physically disconnect from such devices after a collaborative computing session helps to ensure that participants actually carry out the disconnect activity without having to go through complex and tedious procedures. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16055r397137_chk

If the device or operating system does not have a camera installed, this requirement is not applicable. This requirement is not applicable to mobile devices (smartphones and tablets), where the use of the camera is a local AO decision. This requirement is not applicable to dedicated VTC suites located in approved VTC locations that are centrally managed. For an external camera, if there is not a method for the operator to manually disconnect camera at the end of collaborative computing sessions, this is a finding. For a built-in camera, the camera must be protected by a camera cover (e.g. laptop camera cover slide) when not in use. If the built-in camera is not protected with a camera cover, or is not physically disabled, this is a finding. If the camera is not disconnected, covered or physically disabled, the following configuration is required: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCamera If the result is “allowCamera = 1” and the collaborative computing device has not been authorized for use, this is a finding.

Fix: F-16053r397138_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

c
The macOS system must be configured to disable the system preference pane for iCloud.
CM-7 - High - CCI-001774 - V-214856 - SV-214856r609363_rule
RMF Control
CM-7
Severity
High
CCI
CCI-001774
Version
AOSX-13-000520
Vuln IDs
  • V-214856
  • V-81573
Rule IDs
  • SV-214856r609363_rule
  • SV-96287
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The system preference panes for iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16056r397140_chk

To check if the system has the correct setting in the configuration profile to disable access to the iCloud preference pane, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 DisabledPreferencePanes | grep icloud If the return is not “com.apple.preferences.icloud”, this is a finding.

Fix: F-16054r397141_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must be configured to disable the system preference pane for Internet Accounts.
CM-7 - Medium - CCI-000381 - V-214857 - SV-214857r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000521
Vuln IDs
  • V-214857
  • V-81575
Rule IDs
  • SV-214857r609363_rule
  • SV-96289
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The system preference panes for iCloud and Internet Accounts must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16057r397143_chk

To check if "Internet Accounts" has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 DisabledPreferencePanes | grep internetaccounts If the return is not "com.apple.preferences.internetaccounts", this is a finding.

Fix: F-16055r397144_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must be configured to disable the system preference pane for Siri.
CM-7 - Medium - CCI-001774 - V-214858 - SV-214858r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-001774
Version
AOSX-13-000522
Vuln IDs
  • V-214858
  • V-81577
Rule IDs
  • SV-214858r609363_rule
  • SV-96291
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The system preference panes for Siri and dictation must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16058r397146_chk

To check if "Siri" has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 DisabledPreferencePanes | grep speech If the return is not “com.apple.preference.speech”, this is a finding.

Fix: F-16056r397147_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must be configured to disable Siri and dictation.
CM-7 - Medium - CCI-000381 - V-214859 - SV-214859r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000523
Vuln IDs
  • V-214859
  • V-81579
Rule IDs
  • SV-214859r609363_rule
  • SV-96293
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The system preference panes for Siri and dictation must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16059r397149_chk

To check if Siri and dictation has been disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -E '(allowAssistant | IronwoodAllowed)’ If the return is null or not: “IronwoodAllowed = 0 allowAssistant = 0”, this is a finding.

Fix: F-16057r397150_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must be configured to disable sending diagnostic and usage data to Apple.
CM-7 - Medium - CCI-000382 - V-214860 - SV-214860r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000382
Version
AOSX-13-000530
Vuln IDs
  • V-214860
  • V-81599
Rule IDs
  • SV-214860r609363_rule
  • SV-96313
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Sending diagnostic and usage data to Apple must be disabled.
Checks: C-16060r397152_chk

Sending diagnostic and usage data to Apple must be disabled. To check if a configuration profile is configured to enforce this setting, run the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowDiagnosticSubmission If "allowDiagnosticSubmission" is not set to "0", this is a finding. Alternately, the setting is found in System Preferences &gt;&gt; Security &amp; Privacy &gt;&gt; Privacy &gt;&gt; Analytics. If the checkbox that says "Share Mac Analytics" is checked, this is a finding.

Fix: F-16058r397153_fix

This setting is enforced using the "Restrictions Policy" configuration profile. The setting "Share Mac Analytics" is found in System Preferences >> Security & Privacy >> Privacy >> Analytics. Uncheck the box that says "Share Mac Analytics". To apply the setting from the command line, run the following commands: /usr/bin/defaults read "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit /usr/bin/sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit -bool false /usr/bin/sudo /bin/chmod 644 /Library/Application\ Support/CrashReporter/DiagnosticMessagesHistory.plist /usr/bin/sudo /usr/bin/chgrp admin /Library/Application\ Support/CrashReporter/DiagnosticMessagesHistory.plist

b
The macOS system must be configured to disable the iCloud Find My Mac service.
CM-7 - Medium - CCI-000381 - V-214861 - SV-214861r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000531
Vuln IDs
  • V-214861
  • V-81601
Rule IDs
  • SV-214861r609363_rule
  • SV-96315
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality-of-life issues. Find My Mac must be disabled. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16061r397155_chk

To check if Find My Mac is disabled, use the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudFMM If the return is null or not “allowCloudFMM = 0”, this is a finding.

Fix: F-16059r397156_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must be configured to disable Location Services.
CM-7 - Medium - CCI-000381 - V-214862 - SV-214862r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000535
Vuln IDs
  • V-214862
  • V-81603
Rule IDs
  • SV-214862r609363_rule
  • SV-96317
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality-of-life issues. Location Services must be disabled.
Checks: C-16062r397158_chk

Location Services must be disabled. To check if a configuration profile is configured to enforce this setting, run the following command: /usr/bin/sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableLocationServices If the return is null or not “DisableLocationServices = 1”, this is a finding. The setting is found in System Preferences &gt;&gt; Security &amp; Privacy &gt;&gt; Privacy &gt;&gt; Location Services. If the box that says "Enable Location Services" is checked, this is a finding. To check if the setting was applied on the command line, run the following command: /usr/bin/sudo /usr/bin/defaults read /private/var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57` LocationServicesEnabled If the result is "1" this is a finding.

Fix: F-16060r397159_fix

This setting is enforced using the "Custom Policy" configuration profile. The setting "Enable Location Services" can be found in System Preferences >> Security & Privacy >> Privacy >> Location Services. Uncheck the box that says "Enable Location Services". It can also be set with the following command: /usr/bin/sudo /usr/bin/defaults write /private/var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57` LocationServicesEnabled -bool false

b
The macOS system must be configured to disable Bonjour multicast advertising.
CM-7 - Medium - CCI-000381 - V-214863 - SV-214863r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000545
Vuln IDs
  • V-214863
  • V-81605
Rule IDs
  • SV-214863r609363_rule
  • SV-96319
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Bonjour multicast advertising must be disabled on the system.
Checks: C-16063r397161_chk

To check if Bonjour multicast advertising has been disabled, run the following command: /usr/bin/sudo /usr/bin/defaults read /Library/Preferences/com.apple.mDNSResponder | /usr/bin/grep NoMulticastAdvertisements If an error is returned, nothing is returned, or "NoMulticastAdvertisements" is not set to "1", this is a finding.

Fix: F-16061r397162_fix

To configure Bonjour to disable multicast advertising, run the following command: /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool true The system will need to be restarted for the update to take effect.

b
The macOS system must be configured to disable the UUCP service.
CM-7 - Medium - CCI-000381 - V-214864 - SV-214864r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000550
Vuln IDs
  • V-214864
  • V-81607
Rule IDs
  • SV-214864r609363_rule
  • SV-96321
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. The system must not have the UUCP service active.
Checks: C-16064r397164_chk

To check if the UUCP service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.uucp If the results do not show the following, this is a finding: "com.apple.uucp" =&gt; true

Fix: F-16062r397165_fix

To disable the UUCP service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.uucp The system may need to be restarted for the update to take effect.

b
The macOS system must disable the Touch ID feature.
CM-6 - Medium - CCI-000366 - V-214865 - SV-214865r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000551
Vuln IDs
  • V-214865
  • V-81609
Rule IDs
  • SV-214865r609363_rule
  • SV-96323
The Touch ID feature permits users to add additional fingerprints to unlock the host. These fingerprints may be for the user or anyone else. Because unauthorized users may gain access to the system, the use of Touch ID must be limited.
Checks: C-16065r397167_chk

To view the setting for Touch ID configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowFingerprintForUnlock If the output is null, not "allowFingerprintForUnlock = 0" this is a finding.

Fix: F-16063r397168_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must obtain updates from a DoD-approved update server.
CM-6 - Medium - CCI-000366 - V-214866 - SV-214866r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000552
Vuln IDs
  • V-214866
  • V-81611
Rule IDs
  • SV-214866r609363_rule
  • SV-96325
Software update configuration. Point to DOD approved update server. Configure for automatic install of critical updates.
Checks: C-16066r397170_chk

To check if the CatalogURL is configured, run the following command: defaults read /Library/Preferences/com.apple.SoftwareUpdate.plist CatalogURL 2017-11-30 22:21:41.805 defaults[1205:9595] The domain/default pair of (/Library/Preferences/com.apple.SoftwareUpdate.plist, CatalogURL) does not exist. If the output is not an error indicating the item "does not exist" or the output is not a DoD-approved update server, this is a finding. Note: Updates are required to be applied with a frequency determined by the site or Program Management Office (PMO).

Fix: F-16064r397171_fix

To remove the Apple software list from the system configuration run the following command: sudo defaults delete /Library/Preferences/com.apple.SoftwareUpdate.plist CatalogURL

b
The macOS system must not have a root account.
CM-6 - Medium - CCI-000366 - V-214867 - SV-214867r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000553
Vuln IDs
  • V-214867
  • V-81613
Rule IDs
  • SV-214867r609363_rule
  • SV-96327
To assure individual accountability and prevent unauthorized access, organizational users must be individually identified and authenticated.
Checks: C-16067r397173_chk

To check if the root account is disabled, run the following command: defaults read /var/db/dslocal/nodes/Default/users/root.plist passwd ( "*" ) The output should be a single asterisk in quotes, as seen above. If the output is as follow, this is a finding: ( "********" )

Fix: F-16065r397174_fix

Disable the root account with the following command: /usr/sbin/dsenableroot -d

c
The macOS system must not have a guest account.
CM-5 - High - CCI-001813 - V-214868 - SV-214868r609363_rule
RMF Control
CM-5
Severity
High
CCI
CCI-001813
Version
AOSX-13-000554
Vuln IDs
  • V-214868
  • V-81615
Rule IDs
  • SV-214868r609363_rule
  • SV-96329
Only authorized individuals should be allowed to obtain access to operating system components. Permitting access via a guest account provides unauthenticated access to any person.
Checks: C-16068r397176_chk

To check if the guest user exists, run the following command: dscl . list /Users | grep -i Guest To verify that Guest user cannot unlock volume, run the following command: fdesetup list To check if the system is configured to prohibit user installation of software, first check to ensure the Parental Controls are enabled with the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -E '(DisableGuestAccount | EnableGuestAccount)’ If the result is null or not: DisableGuestAccount = 1; EnableGuestAccount = 0; This is a finding.

Fix: F-16066r397177_fix

Remove the guest user with the following command: sudo dscl . delete /Users/Guest "This can also be managed with "Login Window Policy" configuration profile.

c
The macOS system must unload tftpd.
IA-5 - High - CCI-000197 - V-214869 - SV-214869r609363_rule
RMF Control
IA-5
Severity
High
CCI
CCI-000197
Version
AOSX-13-000555
Vuln IDs
  • V-214869
  • V-81617
Rule IDs
  • SV-214869r609363_rule
  • SV-96331
The "tftp" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling ftp is one way to mitigate this risk. Administrators should be instructed to use an alternate service for data transmission that uses encryption, such as SFTP. Additionally, the "tftp" service uses UDP, which is not secure.
Checks: C-16069r397179_chk

To check if the "tfptd" service is disabled, run the following command: sudo launchctl print-disabled system | grep tftp If "com.apple.tftp" is not set to "true", this is a finding.

Fix: F-16067r397180_fix

To disable the "tfpd" service, run the following command: sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist

b
The macOS system must disable Siri pop-ups.
CM-7 - Medium - CCI-000381 - V-214870 - SV-214870r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000556
Vuln IDs
  • V-214870
  • V-81619
Rule IDs
  • SV-214870r609363_rule
  • SV-96333
Users (and any processes acting on behalf of users) need to be uniquely identified and authenticated for all accesses other than those accesses explicitly identified and documented by the organization, which outlines specific user actions that can be performed on the Ubuntu operating system without identification or authentication. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16070r397182_chk

To check if the "SkipSiriSetup" prompt is enabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep SkipSiriSetup If the output is null or "SkipSiriSetup" is not set to "1", this is a finding.

Fix: F-16068r397183_fix

This setting is enforced using the "Login Window" configuration profile.

b
The macOS system must disable iCloud Back to My Mac feature.
CM-7 - Medium - CCI-001774 - V-214871 - SV-214871r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-001774
Version
AOSX-13-000557
Vuln IDs
  • V-214871
  • V-81621
Rule IDs
  • SV-214871r609363_rule
  • SV-96335
The Back to My Mac is an iCloud feature permitting users to connect to a Mac, AirPort Disk, or Time Capsule using another Mac or another Internet connected device. When connected users can transfer data and see a live version of the screen content. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16071r397185_chk

To view the setting for the Back to My Mac configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudBTMM If the output is null or not "allowCloudBTMM = 0" this is a finding.

Fix: F-16069r397186_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must disable iCloud Keychain synchronization.
CM-7 - Medium - CCI-000381 - V-214872 - SV-214872r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000558
Vuln IDs
  • V-214872
  • V-81623
Rule IDs
  • SV-214872r609363_rule
  • SV-96337
Requiring individuals to be authenticated with an individual authenticator prior to using a group authenticator allows for traceability of actions, as well as adding an additional level of protection of the actions that can be taken with group account knowledge. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16072r397188_chk

To view the setting for the iCloud Keychain Synchronization configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudKeychainSync If the output is null or not "allowCloudKeychainSync = 0" this is a finding.

Fix: F-16070r397189_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must disable iCloud document synchronization.
CM-7 - Medium - CCI-001774 - V-214873 - SV-214873r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-001774
Version
AOSX-13-000559
Vuln IDs
  • V-214873
  • V-81625
Rule IDs
  • SV-214873r609363_rule
  • SV-96339
Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16073r397191_chk

To view the setting for the iCloud Document Synchronization configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudDocumentSync If the output is null or not "allowCloudDocumentSync = 0" this is a finding.

Fix: F-16071r397192_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must disable iCloud bookmark synchronization.
CM-7 - Medium - CCI-000381 - V-214874 - SV-214874r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000560
Vuln IDs
  • V-214874
  • V-81627
Rule IDs
  • SV-214874r609363_rule
  • SV-96341
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16074r397194_chk

To view the setting for the iCloud Bookmark Synchronization configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudBookmarks If the output is null or not "allowCloudBookmarks = 0" this is a finding.

Fix: F-16072r397195_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must disable iCloud Photo Library.
CM-7 - Medium - CCI-001774 - V-214875 - SV-214875r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-001774
Version
AOSX-13-000561
Vuln IDs
  • V-214875
  • V-81629
Rule IDs
  • SV-214875r609363_rule
  • SV-96343
To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality-of-life issues. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16075r569443_chk

To check if the system has the correct setting in the configuration profile to disable access to the iCloud preference pane, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 DisabledPreferencePanes | grep icloud If the return is not “com.apple.preferences.icloud”, this is a CAT I finding. To view the setting for the iCloud Photo Library configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudPhotoLibrary If the output is null or not "allowCloudPhotoLibrary = 0" this is a finding.

Fix: F-16073r569444_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must disable iCloud Desktop And Documents.
CM-7 - Medium - CCI-000381 - V-214876 - SV-214876r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-000562
Vuln IDs
  • V-214876
  • V-81631
Rule IDs
  • SV-214876r609363_rule
  • SV-96345
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000370-GPOS-00155
Checks: C-16076r397200_chk

To view the setting for the iCloud Desktop And Documents configuration, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowCloudDesktopAndDocuments If the output is null or not "allowCloudDesktopAndDocuments = 0" this is a finding.

Fix: F-16074r397201_fix

This setting is enforced using the "Restrictions" configuration profile.

b
The macOS system must require individuals to be authenticated with an individual authenticator prior to using a group authenticator.
IA-2 - Medium - CCI-000770 - V-214877 - SV-214877r609363_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-000770
Version
AOSX-13-000565
Vuln IDs
  • V-214877
  • V-81633
Rule IDs
  • SV-214877r609363_rule
  • SV-96347
Administrators must never log in directly as root. To assure individual accountability and prevent unauthorized access, logging in as root over a remote connection must be disabled. Administrators should only run commands as root after first authenticating with their individual user names and passwords.
Checks: C-16077r397203_chk

To check if SSH has root logins enabled, run the following command: /usr/bin/sudo /usr/bin/grep ^PermitRootLogin /etc/ssh/sshd_config If there is no result, or the result is set to "yes", this is a finding.

Fix: F-16075r397204_fix

To ensure that "PermitRootLogin" is disabled by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/^[\#]*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

b
The macOS system must implement NSA-approved cryptography to protect classified information in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.
IA-2 - Medium - CCI-001941 - V-214878 - SV-214878r609363_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-001941
Version
AOSX-13-000570
Vuln IDs
  • V-214878
  • V-81635
Rule IDs
  • SV-214878r609363_rule
  • SV-96349
Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated. Satisfies: SRG-OS-000112-GPOS-00057, SRG-OS-000113-GPOS-00058, SRG-OS-000396-GPOS-00176
Checks: C-16078r397206_chk

To check which protocol is configured for sshd, run the following: /usr/bin/sudo /usr/bin/grep ^Protocol /etc/ssh/sshd_config If there is no result or the result is not "Protocol 2", this is a finding.

Fix: F-16076r397207_fix

To ensure that "Protocol 2" is used by sshd, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*Protocol.*/Protocol 2/' /etc/ssh/sshd_config

b
The macOS system must enforce password complexity by requiring that at least one numeric character be used.
IA-5 - Medium - CCI-000194 - V-214879 - SV-214879r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000194
Version
AOSX-13-000585
Vuln IDs
  • V-214879
  • V-81637
Rule IDs
  • SV-214879r609363_rule
  • SV-96351
Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.
Checks: C-16079r397209_chk

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that passwords contain at least one numeric character: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep requireAlphanumeric If the result is null or is not “requireAlphanumeric = 1”, this is a finding. If password policy is set with the "pwpolicy utility", run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "&lt;key&gt;policyCategoryPasswordContent&lt;/key&gt;". If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a &lt;dict&gt; section that contains a check &lt;string&gt; that "matches" the variable "policyAttributePassword" to the regular expression "(.*[0-9].*){1,}+" or to a similar expression that will ensure the password contains a character in the range 0-9 one or more times. If this check allows users to create passwords without at least one numeric character, or if no such check exists, this is a finding.

Fix: F-16077r397210_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>; then insert the following text after the opening <dict> tag and before the closing </dict> tag. The same text can also be used if the line "<key>policyCategoryPasswordContent</key>" is not present. <key>policyCategoryPasswordContent</key> <array> <dict> <key>policyContent</key> <string>policyAttributePassword matches '(.*[0-9].*){1,}+'</string> <key>policyIdentifier</key> <string>com.apple.policy.legacy.requiresNumeric</string> <key>policyParameters</key> <dict> <key>minimumNumericCharacters</key> <integer>1</integer> </dict> </dict> </array> If the file does contain policy settings, and the line "<key>policyCategoryPasswordContent</key>" does exist, insert the following text after the opening <array> tag that comes right after it: <dict> <key>policyContent</key> <string>policyAttributePassword matches '(.*[0-9].*){1,}+'</string> <key>policyIdentifier</key> <string>com.apple.policy.legacy.requiresNumeric</string> <key>policyParameters</key> <dict> <key>minimumNumericCharacters</key> <integer>1</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

b
The macOS system must enforce password complexity by requiring that at least one special character be used.
IA-5 - Medium - CCI-001619 - V-214880 - SV-214880r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-001619
Version
AOSX-13-000587
Vuln IDs
  • V-214880
  • V-81639
Rule IDs
  • SV-214880r609363_rule
  • SV-96353
Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity or strength is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password complexity is one factor in determining how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised. Special characters are those characters that are not alphanumeric. Examples include: ~ ! @ # $ % ^ *.
Checks: C-16080r397212_chk

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that passwords contain at least one special character: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minComplexChars If the return is null or not ” minComplexChars = 1”, this is a finding. Run the following command to check if the system is configured to require that passwords not contain repeated sequential characters or characters in increasing and decreasing sequential order: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowSimple If "allowSimple" is not set to "0" or is undefined, this is a finding.

Fix: F-16078r397213_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service.

b
The macOS system must enforce a minimum 15-character password length.
IA-5 - Medium - CCI-000205 - V-214881 - SV-214881r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000205
Version
AOSX-13-000590
Vuln IDs
  • V-214881
  • V-81641
Rule IDs
  • SV-214881r609363_rule
  • SV-96355
The minimum password length must be set to 15 characters. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. The use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.
Checks: C-16081r397215_chk

To check the currently applied policies for passwords and accounts, use the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minLength If the return is null or not “minLength = 15”, this is a finding.

Fix: F-16079r397216_fix

This setting is enforced using the "Passcode Policy" configuration profile. Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

c
The macOS system must not use telnet.
IA-5 - High - CCI-000197 - V-214882 - SV-214882r609363_rule
RMF Control
IA-5
Severity
High
CCI
CCI-000197
Version
AOSX-13-000605
Vuln IDs
  • V-214882
  • V-81643
Rule IDs
  • SV-214882r609363_rule
  • SV-96357
The "telnet" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling telnet is one way to mitigate this risk. Administrators should be instructed to use an alternate service for remote access sessions, non-local maintenance sessions, and diagnostic communications that uses encryption, such as SSH. Satisfies: SRG-OS-000074-GPOS-00042, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174
Checks: C-16082r397218_chk

To check if the "telnet" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.telnetd If the results do not show the following, this is a finding: "com.apple.telnetd" =&gt; true

Fix: F-16080r397219_fix

To disable the "telnet" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.telnetd The system may need to be restarted for the update to take effect.

c
The macOS system must not use unencrypted FTP.
IA-5 - High - CCI-000197 - V-214883 - SV-214883r609363_rule
RMF Control
IA-5
Severity
High
CCI
CCI-000197
Version
AOSX-13-000606
Vuln IDs
  • V-214883
  • V-81645
Rule IDs
  • SV-214883r609363_rule
  • SV-96359
The "ftp" service must be disabled as it sends all data in a clear-text form that can be easily intercepted and read. The data needs to be protected at all times during transmission, and encryption is the standard method for protecting data in transit. If the data is not encrypted during transmission, it can be plainly read (i.e., clear text) and easily compromised. Disabling ftp is one way to mitigate this risk. Administrators should be instructed to use an alternate service for data transmission that uses encryption, such as SFTP.
Checks: C-16083r397221_chk

To check if the "ftp" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.ftpd If the results do not show the following, this is a finding: "com.apple.ftpd" =&gt; true

Fix: F-16081r397222_fix

To disable the "ftp" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.ftpd The system may need to be restarted for the update to take effect.

b
The macOS system must allow only applications that have a valid digital signature to run.
CM-5 - Medium - CCI-001749 - V-214884 - SV-214884r648720_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001749
Version
AOSX-13-000710
Vuln IDs
  • V-214884
  • V-81647
Rule IDs
  • SV-214884r648720_rule
  • SV-96361
Gatekeeper settings must be configured correctly to only allow the system to run applications signed with a valid Apple Developer ID code. Administrator users will still have the option to override these settings on a per-app basis. Gatekeeper is a security feature that ensures that applications must be digitally signed by an Apple-issued certificate in order to run. Digital signatures allow the macOS host to verify that the application has not been modified by a malicious third party.
Checks: C-16084r648719_chk

Identify any unsigned applications that have been installed on the system: /usr/sbin/system_profiler SPApplicationsDataType | /usr/bin/grep -B 3 -A 4 -e "Obtained from: Unknown" | /usr/bin/grep -v -e "Location: /Library/Application Support/Script Editor/Templates" -e "Location: /System/Library/" | /usr/bin/awk -F "Location: " '{print $2}' | /usr/bin/sort -u If any results are returned and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. Verify only applications with a valid digital signature are allowed to run: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -E '(EnableAssessment | AllowIdentifiedDevelopers)’ If the return is null, or is not: AllowIdentifiedDevelopers = 1; EnableAssessment = 1; This is a finding.

Fix: F-16082r397225_fix

This setting is enforced using the "Security and Privacy Policy" configuration profile.

b
The macOS system must be configured with the SSH daemon ClientAliveInterval option set to 900 or less.
SC-10 - Medium - CCI-001133 - V-214886 - SV-214886r609363_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
AOSX-13-000720
Vuln IDs
  • V-214886
  • V-81651
Rule IDs
  • SV-214886r609363_rule
  • SV-96365
SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out logon attempts. Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session or an incomplete logon attempt will also free up resources committed by the managed network element.
Checks: C-16086r397230_chk

The SSH daemon "ClientAliveInterval" option must be set correctly. To check the idle timeout setting for SSH sessions, run the following: /usr/bin/sudo /usr/bin/grep ^ClientAliveInterval /etc/ssh/sshd_config If the setting is not "900" or less, this is a finding.

Fix: F-16084r397231_fix

To ensure that "ClientAliveInterval" is set correctly, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*ClientAliveInterval.*/ClientAliveInterval 900/' /etc/ssh/sshd_config

b
The macOS system must be configured with the SSH daemon ClientAliveCountMax option set to 0.
SC-10 - Medium - CCI-001133 - V-214887 - SV-214887r609363_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
AOSX-13-000721
Vuln IDs
  • V-214887
  • V-81653
Rule IDs
  • SV-214887r609363_rule
  • SV-96367
SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out logon attempts. Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session or an incomplete logon attempt will also free up resources committed by the managed network element.
Checks: C-16087r397233_chk

The SSH daemon "ClientAliveCountMax" option must be set correctly. To verify the SSH idle timeout will occur when the "ClientAliveCountMax" is set, run the following command: /usr/bin/sudo /usr/bin/grep ^ClientAliveCountMax /etc/ssh/sshd_config If the setting is not "ClientAliveCountMax 0", this is a finding.

Fix: F-16085r397234_fix

To ensure that the SSH idle timeout occurs precisely when the "ClientAliveCountMax" is set, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*ClientAliveCountMax.*/ClientAliveCountMax 0/' /etc/ssh/sshd_config

b
The macOS system must be configured with the SSH daemon LoginGraceTime set to 30 or less.
SC-10 - Medium - CCI-001133 - V-214888 - SV-214888r609363_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
AOSX-13-000722
Vuln IDs
  • V-214888
  • V-81655
Rule IDs
  • SV-214888r609363_rule
  • SV-96369
SSH should be configured to log users out after a 15-minute interval of inactivity and to wait only 30 seconds before timing out logon attempts. Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session or an incomplete logon attempt will also free up resources committed by the managed network element.
Checks: C-16088r397236_chk

The SSH daemon "LoginGraceTime" must be set correctly. To check the amount of time that a user can log on through SSH, run the following command: /usr/bin/sudo /usr/bin/grep ^LoginGraceTime /etc/ssh/sshd_config If the value is not set to "30" or less, this is a finding.

Fix: F-16086r397237_fix

To ensure that "LoginGraceTime" is configured correctly, run the following command: /usr/bin/sudo /usr/bin/sed -i.bak 's/.*LoginGraceTime.*/LoginGraceTime 30/' /etc/ssh/sshd_config

b
The macOS system must issue or obtain public key certificates under an appropriate certificate policy from an approved service provider.
IA-5 - Medium - CCI-000185 - V-214889 - SV-214889r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000185
Version
AOSX-13-000750
Vuln IDs
  • V-214889
  • V-81657
Rule IDs
  • SV-214889r609363_rule
  • SV-96371
DoD-approved certificates must be installed to the System Keychain so they will be available to all users. For user certificates, each organization obtains certificates from an approved, shared service provider, as required by OMB policy. For federal agencies operating a legacy public key infrastructure cross-certified with the Federal Bridge Certification Authority at medium assurance or higher, this Certification Authority will suffice. This control focuses on certificates with a visibility external to the information system and does not include certificates related to internal system operations; for example, application-specific time services. Satisfies: SRG-OS-000066-GPOS-00034, SRG-OS-000478-GPOS-00223
Checks: C-16089r397239_chk

To view a list of installed certificates, run the following command: /usr/bin/sudo /usr/bin/security dump-keychain | /usr/bin/grep labl | awk -F\" '{ print $4 }' If this list does not contain approved certificates, this is a finding.

Fix: F-16087r397240_fix

Obtain the approved DOD certificates from the appropriate authority. Use Keychain Access from "/Applications/Utilities" to add certificates to the System Keychain.

b
The macOS system must implement cryptographic mechanisms to protect the confidentiality and integrity of all information at rest.
SC-28 - Medium - CCI-002475 - V-214890 - SV-214890r609363_rule
RMF Control
SC-28
Severity
Medium
CCI
CCI-002475
Version
AOSX-13-000780
Vuln IDs
  • V-214890
  • V-81659
Rule IDs
  • SV-214890r609363_rule
  • SV-96373
Information at rest refers to the state of information when it is located on a secondary storage device (e.g., disk drive and tape drive) within an organizational information system. Mobile devices, laptops, desktops, and storage devices can be lost or stolen, and the contents of their data storage (e.g., hard drives and non-volatile memory) can be read, copied, or altered. By encrypting the system hard drive, the confidentiality and integrity of any data stored on the system is ensured. FileVault Disk Encryption mitigates this risk. Satisfies: SRG-OS-000185-GPOS-00079, SRG-OS-000404-GPOS-00183, SRG-OS-000405-GPOS-00184
Checks: C-16090r397242_chk

To check if "FileVault 2" is enabled, run the following command: /usr/bin/sudo /usr/bin/fdesetup status If "FileVault" is "Off" and the device is a mobile device or the organization has determined that the drive must encrypt data at rest, this is a finding.

Fix: F-16088r397243_fix

Open System Preferences >> Security and Privacy and navigate to the "FileVault" tab. Use this panel to configure full-disk encryption. Alternately, from the command line, run the following command to enable "FileVault": /usr/bin/sudo /usr/bin/fdesetup enable After "FileVault" is initially set up, additional users can be added.

b
The macOS system must employ automated mechanisms to determine the state of system components with regard to flaw remediation using the following frequency: continuously where HBSS is used; 30 days for any additional internal network scans not covered by HBSS; and annually for external scans by Computer Network Defense Service Provider (CNDSP).
SI-2 - Medium - CCI-001233 - V-214891 - SV-214891r609363_rule
RMF Control
SI-2
Severity
Medium
CCI
CCI-001233
Version
AOSX-13-000835
Vuln IDs
  • V-214891
  • V-81661
Rule IDs
  • SV-214891r609363_rule
  • SV-96375
An approved tool for continuous network scanning must be installed and configured to run. Without the use of automated mechanisms to scan for security flaws on a continuous and/or periodic basis, the operating system or other system components may remain vulnerable to the exploits presented by undetected software flaws. To support this requirement, the operating system may have an integrated solution incorporating continuous scanning using HBSS and periodic scanning using other tools, as specified in the requirement.
Checks: C-16091r466228_chk

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved tool capable of continuous scanning is loaded on the system. The recommended system is the McAfee HBSS. If no such tool is installed on the system, this is a finding.

Fix: F-16089r466229_fix

Install an approved HBSS solution onto the system.

b
The macOS system must restrict the ability of individuals to use USB storage devices.
CM-6 - Medium - CCI-000366 - V-214892 - SV-214892r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000850
Vuln IDs
  • V-214892
  • V-81663
Rule IDs
  • SV-214892r609363_rule
  • SV-96377
External hard drives, such as USB, must be disabled for users. USB hard drives are a potential vector for malware and can be used to exfiltrate sensitive data if an approved data-loss prevention (DLP) solution is not installed.
Checks: C-16092r397248_chk

If an approved HBSS DCM/DLP solution is installed, this is not applicable. To verify external USB drives are disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 3 harddisk-external If the result is not “harddisk-external" = ( eject, alert );”, this is a finding.

Fix: F-16090r397249_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must be configured to not allow iTunes file sharing.
CM-6 - Medium - CCI-000366 - V-214893 - SV-214893r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000862
Vuln IDs
  • V-214893
  • V-81665
Rule IDs
  • SV-214893r609363_rule
  • SV-96379
Connections to unauthorized iOS devices (e.g., iPhones, iPods, and iPads) open the system to possible compromise via exfiltration of system data. Disabling the iTunes file sharing blocks connections to iOS devices.
Checks: C-16093r397251_chk

If iTunes file sharing is enabled, unauthorized disclosure could occur. To verify that iTunes file sharing is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep allowiTunesFileSharing If the result is null or is not “allowiTunesFileSharing = 0”, this is a finding

Fix: F-16091r397252_fix

This setting is enforced using the “Restrictions Policy" configuration profile.

b
The macOS system must not allow an unattended or automatic logon to the system.
CM-6 - Medium - CCI-000366 - V-214894 - SV-214894r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000925
Vuln IDs
  • V-214894
  • V-81667
Rule IDs
  • SV-214894r609363_rule
  • SV-96381
When automatic logons are enabled, the default user account is automatically logged on at boot time without prompting the user for a password. Even if the screen is later locked, a malicious user would be able to reboot the computer to log on. Disabling automatic logons mitigates this risk.
Checks: C-16094r397254_chk

To check if the system is configured to automatically log on, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableAutoLoginClient If "com.apple.login.mcx.DisableAutoLoginClient" is not set to "1", this is a finding.

Fix: F-16092r397255_fix

This setting is enforced using the "Login Window Policy" configuration profile.

b
The macOS system logon window must be configured to prompt for username and password, rather than show a list of users.
CM-6 - Medium - CCI-000366 - V-214895 - SV-214895r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000930
Vuln IDs
  • V-214895
  • V-81669
Rule IDs
  • SV-214895r609363_rule
  • SV-96383
The logon window must be configured to prompt all users for both a username and a password. By default, the system displays a list of known users at the logon screen. This gives an advantage to an attacker with physical access to the system, as the attacker would only have to guess the password for one of the listed accounts.
Checks: C-16095r397257_chk

To check if the logon window is configured to prompt for user name and password, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep SHOWFULLNAME If there is no result, or "SHOWFULLNAME" is not set to "1", this is a finding.

Fix: F-16093r397258_fix

This setting is enforced using the "Login Window Policy" configuration profile.

b
The macOS firewall must have logging enabled.
CM-6 - Medium - CCI-000366 - V-214896 - SV-214896r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000950
Vuln IDs
  • V-214896
  • V-81671
Rule IDs
  • SV-214896r609363_rule
  • SV-96385
Firewall logging must be enabled. This ensures that malicious network activity will be logged to the system.
Checks: C-16096r397260_chk

If HBSS is used, this is not applicable. To check if the macOS firewall has logging enabled, run the following command: /usr/libexec/ApplicationFirewall/socketfilterfw --getloggingmode | /usr/bin/grep on If the result does not show "on", this is a finding.

Fix: F-16094r397261_fix

To enable the firewall logging, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on

b
The macOS system must be configured so that Bluetooth devices are not allowed to wake the computer.
CM-6 - Medium - CCI-000366 - V-214897 - SV-214897r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000955
Vuln IDs
  • V-214897
  • V-81673
Rule IDs
  • SV-214897r609363_rule
  • SV-96387
A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence. The session lock is implemented at the point where session activity can be determined. Regardless of where the session lock is determined and implemented, once invoked, the session lock must remain in place until the user reauthenticates. No other activity aside from reauthentication must unlock the system.
Checks: C-16097r397263_chk

To check if the Bluetooth Remote Wake setting is disabled, run the following two commands as the primary user: /usr/bin/defaults -currentHost read com.apple.Bluetooth RemoteWakeEnabled /usr/bin/defaults read /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57`.plist RemoteWakeEnabled If there is an error or nothing is returned, or the return value is "1" for either command, this is a finding.

Fix: F-16095r397264_fix

Manually change this control on the computer by opening System Preferences >> Bluetooth. Click "Advanced" and ensure the "Allow Bluetooth devices to wake this computer" is not checked. This control is not necessary if Bluetooth has been completely disabled. The following can be run from the command line to disable "Remote Wake" for the current user: /usr/bin/defaults write /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57`.plist RemoteWakeEnabled 0

b
The macOS system must be configured with Bluetooth Sharing disabled.
CM-6 - Medium - CCI-000366 - V-214898 - SV-214898r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000965
Vuln IDs
  • V-214898
  • V-81675
Rule IDs
  • SV-214898r609363_rule
  • SV-96389
Bluetooth sharing allows users to wirelessly transmit files between the macOS host and Bluetooth-enabled devices, including personally owned cellphones and tablets. A malicious user might introduce viruses or malware onto the system or extract sensitive files. Disabling Bluetooth Sharing mitigates this risk.
Checks: C-16098r397266_chk

To check if Bluetooth Sharing is enabled, open System Preferences &gt;&gt; Sharing and verify that "Bluetooth Sharing" is not checked "ON". If it is "ON", this is a finding. The following command can be run from the command line: /usr/bin/defaults read /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57`.plist PrefKeyServicesEnabled If there is an error or nothing is returned, or the return value is "1", this is a finding.

Fix: F-16096r397267_fix

To disable Bluetooth Sharing, open System Preferences >> Sharing and uncheck the box next to "Bluetooth Sharing". This control is not necessary if Bluetooth has been completely disabled. The following can be run from the command line to disable "Bluetooth Sharing" for the current user: /usr/bin/defaults write /Users/`whoami`/Library/Preferences/ByHost/com.apple.Bluetooth.`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/grep "Hardware UUID" | /usr/bin/cut -c22-57`.plist PrefKeyServicesEnabled 0

b
The macOS system must be configured to disable Remote Apple Events.
CM-7 - Medium - CCI-000382 - V-214899 - SV-214899r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000382
Version
AOSX-13-000975
Vuln IDs
  • V-214899
  • V-81677
Rule IDs
  • SV-214899r609363_rule
  • SV-96391
It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). Examples of non-essential capabilities include but are not limited to games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission but that cannot be disabled. Remote Apple Events must be disabled.
Checks: C-16099r397269_chk

To check if Remote Apple Events is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.AEServer If the results do not show the following, this is a finding. "com.apple.AEServer" =&gt; true

Fix: F-16097r397270_fix

To disable Remote Apple Events, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.AEServer The system may need to be restarted for the update to take effect.

c
The macOS system must be configured with the sudoers file configured to authenticate users on a per -tty basis.
CM-6 - High - CCI-000366 - V-214900 - SV-214900r609363_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
AOSX-13-000995
Vuln IDs
  • V-214900
  • V-81679
Rule IDs
  • SV-214900r609363_rule
  • SV-96393
The "sudo" command must be configured to prompt for the administrator's password at least once in each newly opened Terminal window or remote logon session, as this prevents a malicious user from taking advantage of an unlocked computer or an abandoned logon session to bypass the normal password prompt requirement. Without the "tty_tickets" option, all open local and remote logon sessions would be authenticated to use sudo without a password for the duration of the configured password timeout window.
Checks: C-16100r397272_chk

To check if the "tty_tickets" option is set for "/usr/bin/sudo", run the following command: /usr/bin/sudo /usr/bin/grep tty_tickets /etc/sudoers If there is no result, this is a finding.

Fix: F-16098r397273_fix

Edit the "/etc/sudoers" file to contain the line: Defaults tty_tickets This line can be placed in the defaults section or at the end of the file.

b
The macOS Application Firewall must be enabled.
CM-6 - Medium - CCI-000366 - V-214901 - SV-214901r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001080
Vuln IDs
  • V-214901
  • V-81681
Rule IDs
  • SV-214901r609363_rule
  • SV-96395
The Application Firewall is the built-in firewall that comes with macOS and must be enabled. Firewalls protect computers from network attacks by blocking or limiting access to open network ports. Application firewalls limit which applications are allowed to communicate over the network.
Checks: C-16101r397275_chk

If an approved HBSS solution is installed, this is not applicable. To check if the macOS firewall has been enabled, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate If the result is "disabled", this is a finding.

Fix: F-16099r397276_fix

To enable the firewall, run the following command: /usr/bin/sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

b
The macOS system must be configured with all public directories owned by root or an application account.
CM-6 - Medium - CCI-000366 - V-214902 - SV-214902r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001110
Vuln IDs
  • V-214902
  • V-81683
Rule IDs
  • SV-214902r609363_rule
  • SV-96397
All public directories must be owned by "root", the local admin user, or an application account. Directory owners have permission to delete any files contained in that directory, even if the files are owned by other user accounts. By setting the owner to an administrator or application account, regular users will not be permitted to delete each other's files.
Checks: C-16102r397278_chk

To display all directories that are writable by all and not owned by "root", run the following command: /usr/bin/sudo find / -type d -perm +o+w -not -uid 0 If anything is returned, and those directories are not owned by root or application account, this is a finding.

Fix: F-16100r397279_fix

To change the ownership of any finding, run the following command: /usr/bin/sudo find / -type d -perm +o+w -not -uid 0 -exec chown root {} \;

b
The macOS system must be configured with the finger service disabled.
CM-6 - Medium - CCI-000366 - V-214903 - SV-214903r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001115
Vuln IDs
  • V-214903
  • V-81685
Rule IDs
  • SV-214903r609363_rule
  • SV-96399
The "finger" service has had several security vulnerabilities in the past and is not a necessary service. It is disabled by default; enabling it would increase the attack surface of the system.
Checks: C-16103r397281_chk

To check if the "finger" service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.fingerd If the results do not show the following, this is a finding: "com.apple.fingerd" =&gt; true

Fix: F-16101r397282_fix

To disable the "finger" service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.fingerd The system may need to be restarted for the update to take effect.

b
The macOS system must be configured with the sticky bit set on all public directories.
CM-6 - Medium - CCI-000366 - V-214904 - SV-214904r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001120
Vuln IDs
  • V-214904
  • V-81687
Rule IDs
  • SV-214904r609363_rule
  • SV-96401
The sticky bit must be set on all public directories, as it prevents users with write access to the directory from deleting or renaming files that belong to other users inside it.
Checks: C-16104r397284_chk

Run the following command to view all world-writable directories that do not have the "sticky bit" set: /usr/bin/sudo /usr/bin/find / -type d \( -perm -0002 -a ! -perm -1000 \) If anything is returned, this is a finding.

Fix: F-16102r397285_fix

Run the following command to set the "sticky bit" on all world-writable directories: /usr/bin/sudo /usr/bin/find / -type d \( -perm -0002 -a ! -perm -1000 \) -exec chmod +t {} \;

b
The macOS system must be configured with the prompt for Apple ID and iCloud disabled.
CM-6 - Medium - CCI-000366 - V-214905 - SV-214905r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001125
Vuln IDs
  • V-214905
  • V-81689
Rule IDs
  • SV-214905r609363_rule
  • SV-96403
The prompt for Apple ID and iCloud must be disabled, as it might mislead new users into creating unwanted Apple IDs and iCloud storage accounts upon their first logon.
Checks: C-16105r397287_chk

To check if the system is configured to skip cloud setup, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep SkipCloudSetup If “SkipCloudSetup" is not set to "1", this is a finding. To check if the prompt for "Apple ID" and "iCloud" are disabled for new users, run the following command: /usr/bin/sudo /usr/bin/defaults read /System/Library/User\ Template/English.lproj/Library/Preferences/com.apple.SetupAssistant If there is no result, if it prints out that the domain "does not exist", or the results do not include "DidSeeCloudSetup = 1 AND LastSeenCloudProductVersion = 10.12", this is a finding.

Fix: F-16103r397288_fix

This setting is enforced using the “Login Window Policy" configuration profile.

b
The macOS system must be configured so that users do not have Apple IDs signed into iCloud.
CM-6 - Medium - CCI-000366 - V-214906 - SV-214906r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001130
Vuln IDs
  • V-214906
  • V-81691
Rule IDs
  • SV-214906r609363_rule
  • SV-96405
Users should not sign into iCloud, as this leads to the possibility that sensitive data could be saved to iCloud storage or that users could inadvertently introduce viruses or malware previously saved to iCloud from other systems.
Checks: C-16106r397290_chk

To see if any user account has configured an Apple ID for iCloud usage, run the following command: /usr/bin/sudo find /Users/ -name 'MobileMeAccounts.plist' -exec /usr/bin/defaults read '{}' \; If the results show any accounts listed, this is a finding.

Fix: F-16104r397291_fix

This must be resolved manually. With the affected user logged on, open System Preferences >> iCloud. Choose "Sign Out".

a
The macOS system must be configured with iTunes Music Sharing disabled.
CM-6 - Low - CCI-000366 - V-214907 - SV-214907r609363_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
AOSX-13-001140
Vuln IDs
  • V-214907
  • V-81693
Rule IDs
  • SV-214907r609363_rule
  • SV-96407
When iTunes Music Sharing is enabled, the computer starts a network listening service that shares the contents of the user's music collection with other users in the same subnet. Unnecessary network services should always be disabled because they increase the attack surface of the system. Disabling iTunes Music Sharing mitigates this risk.
Checks: C-16107r397293_chk

To check if iTunes Music Sharing is disabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep disableSharedMusic If the return is null or does not contain “disableSharedMusic = 1” this is a finding.

Fix: F-16105r397294_fix

This setting is enforced using the "Custom Policy" configuration profile.

b
All setuid executables on the macOS system must be documented.
CM-6 - Medium - CCI-000366 - V-214908 - SV-214908r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001145
Vuln IDs
  • V-214908
  • V-81695
Rule IDs
  • SV-214908r609363_rule
  • SV-96409
Very few of the executables that come preinstalled on the macOS host have the "setuid" bit set, and administrators should never add the "setuid" bit to any executable that does not already have it set by the vendor. Executables with the "setuid" bit set allow anyone that executes them to be temporarily assigned the UID of the file owner. In practice, this almost always is the root account. While some vendors depend on this file attribute for proper operation, security problems can result if "setuid" is assigned to programs allowing reading and writing of files, or shell escapes, as this could lead to unprivileged users gaining privileged access to files and directories on the system.
Checks: C-16108r397296_chk

If available, provide a list of "setuids" provided by a vendor. To list all of the files with the "setuid" bit set, run the following command to send all results to a file named "suidfilelist": /usr/bin/sudo find / -perm -4000 -exec /bin/ls -ldb {} \; &gt; suidfilelist If any of the files listed are not documented as needing to have the "setuid" bit set by the vendor, this is a finding.

Fix: F-16106r397297_fix

Document all of the files with the "setuid" bit set. Remove any undocumented files.

b
The macOS system must not accept source-routed IPv4 packets.
CM-6 - Medium - CCI-000366 - V-214909 - SV-214909r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001195
Vuln IDs
  • V-214909
  • V-81697
Rule IDs
  • SV-214909r609363_rule
  • SV-96411
A source-routed packet attempts to specify the network path the packet should take. If the system is not configured to block the incoming source-routed packets, an attacker can redirect the system's network traffic. Configuring the system to drop incoming source-routed IPv4 packets mitigates this risk.
Checks: C-16109r397299_chk

To check if the system is configured to accept "source-routed" packets, run the following command: sysctl net.inet.ip.accept_sourceroute If the value is not "0", this is a finding.

Fix: F-16107r397300_fix

To configure the system to not accept "source-routed" packets, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.accept_sourceroute=0

b
The macOS system must ignore IPv4 ICMP redirect messages.
CM-6 - Medium - CCI-000366 - V-214910 - SV-214910r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001200
Vuln IDs
  • V-214910
  • V-81699
Rule IDs
  • SV-214910r609363_rule
  • SV-96413
ICMP redirects are broadcast to reshape network traffic. A malicious user could craft fake redirect packets and try to force all network traffic to pass through a network sniffer. If the system is not configured to ignore these packets, it could be susceptible to this kind of attack.
Checks: C-16110r397302_chk

To check if the system is configured to ignore "ICMP redirect" messages, run the following command: sysctl net.inet.icmp.drop_redirect If the value is not "1", this is a finding.

Fix: F-16108r397303_fix

To configure the system to ignore "ICMP redirect" messages, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.icmp.drop_redirect=1

b
The macOS system must not have IP forwarding for IPv4 enabled.
CM-6 - Medium - CCI-000366 - V-214911 - SV-214911r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001205
Vuln IDs
  • V-214911
  • V-81701
Rule IDs
  • SV-214911r609363_rule
  • SV-96415
IP forwarding for IPv4 must not be enabled, as only authorized systems should be permitted to operate as routers.
Checks: C-16111r397305_chk

To check if "IP forwarding" is enabled, run the following command: sysctl net.inet.ip.forwarding If the values are not "0", this is a finding.

Fix: F-16109r397306_fix

To configure the system to disable "IP forwarding", add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.forwarding=0

b
The macOS system must not have IP forwarding for IPv6 enabled.
CM-6 - Medium - CCI-000366 - V-214912 - SV-214912r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001206
Vuln IDs
  • V-214912
  • V-81703
Rule IDs
  • SV-214912r609363_rule
  • SV-96417
IP forwarding for IPv6 must not be enabled, as only authorized systems should be permitted to operate as routers.
Checks: C-16112r397308_chk

To check if "IP forwarding" is enabled, run the following command: sysctl net.inet6.ip6.forwarding If the values are not "0", this is a finding.

Fix: F-16110r397309_fix

To configure the system to disable "IP forwarding", add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet6.ip6.forwarding=0

b
The macOS system must not send IPv4 ICMP redirects by default.
CM-6 - Medium - CCI-000366 - V-214913 - SV-214913r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001210
Vuln IDs
  • V-214913
  • V-81705
Rule IDs
  • SV-214913r609363_rule
  • SV-96419
ICMP redirects are broadcast to reshape network traffic. A malicious user could use the system to send fake redirect packets and try to force all network traffic to pass through a network sniffer. Disabling ICMP redirect broadcasts mitigates this risk.
Checks: C-16113r397311_chk

To check if the system is configured to send ICMP redirects, run the following command: sysctl net.inet.ip.redirect If the values are not set to "0", this is a finding.

Fix: F-16111r397312_fix

To configure the system to not send ICMP redirects, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.redirect=0

b
The macOS system must not send IPv6 ICMP redirects by default.
CM-6 - Medium - CCI-000366 - V-214914 - SV-214914r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001211
Vuln IDs
  • V-214914
  • V-81707
Rule IDs
  • SV-214914r609363_rule
  • SV-96421
ICMP redirects are broadcast to reshape network traffic. A malicious user could use the system to send fake redirect packets and try to force all network traffic to pass through a network sniffer. Disabling ICMP redirect broadcasts mitigates this risk.
Checks: C-16114r397314_chk

To check if the system is configured to send ICMP redirects, run the following command: sysctl net.inet6.ip6.redirect If the values are not set to "0", this is a finding.

Fix: F-16112r397315_fix

To configure the system to not send ICMP redirects, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet6.ip6.redirect=0

b
The macOS system must prevent local applications from generating source-routed packets.
CM-6 - Medium - CCI-000366 - V-214915 - SV-214915r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001215
Vuln IDs
  • V-214915
  • V-81711
Rule IDs
  • SV-214915r609363_rule
  • SV-96425
A source-routed packet attempts to specify the network path that the system should take. If the system is not configured to block the sending of source-routed packets, an attacker can redirect the system's network traffic.
Checks: C-16115r397317_chk

To check if the system is configured to forward source-routed packets, run the following command: sysctl net.inet.ip.sourceroute If the value is not set to "0", this is a finding.

Fix: F-16113r397318_fix

To configure the system to not forward source-routed packets, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.ip.sourceroute=0

b
The macOS system must not process Internet Control Message Protocol [ICMP] timestamp requests.
CM-6 - Medium - CCI-000366 - V-214916 - SV-214916r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001220
Vuln IDs
  • V-214916
  • V-81713
Rule IDs
  • SV-214916r609363_rule
  • SV-96427
ICMP timestamp requests reveal information about the system and can be used to determine which operating system is installed. Precise time data can also be used to launch time-based attacks against the system. Configuring the system to drop incoming ICMPv4 timestamp requests mitigates these risks.
Checks: C-16116r397320_chk

To check if the system is configured to process ICMP timestamp requests, run the following command: sysctl net.inet.icmp.timestamp If the value is not set to "0", this is a finding.

Fix: F-16114r397321_fix

To disable ICMP timestamp responses, add the following line to "/etc/sysctl.conf", creating the file if necessary: net.inet.icmp.timestamp=0

b
The macOS system must have unused network devices disabled.
CM-6 - Medium - CCI-000366 - V-214917 - SV-214917r609363_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-001235
Vuln IDs
  • V-214917
  • V-81715
Rule IDs
  • SV-214917r609363_rule
  • SV-96429
If an unused network device is left enabled, a user might be able to activate it at a later time. Unused network devices should be disabled.
Checks: C-16117r397323_chk

To list the network devices that are enabled on the system, run the following command: /usr/bin/sudo /usr/sbin/networksetup -listallnetworkservices A disabled device will have an asterisk in front of its name. If any listed device that is not in use is missing this asterisk, this is a finding.

Fix: F-16115r397324_fix

To disable a network device, run the following command, substituting the name of the device in place of "'<networkservice>'": /usr/bin/sudo /usr/sbin/networksetup -setnetworkserviceenabled '<networkservice>' off

b
The macOS system must be configured to disable Internet Sharing.
CM-7 - Medium - CCI-000381 - V-214918 - SV-214918r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-001270
Vuln IDs
  • V-214918
  • V-81717
Rule IDs
  • SV-214918r609363_rule
  • SV-96431
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Internet Sharing must be disabled.
Checks: C-16118r397326_chk

To check if Internet Sharing is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.NetworkSharing If the results do not show the following, this is a finding: "com.apple.NetworkSharing" =&gt; true

Fix: F-16116r397327_fix

To disable Internet Sharing, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.NetworkSharing The system may need to be restarted for the update to take effect.

b
The macOS system must be configured to disable Web Sharing.
CM-7 - Medium - CCI-000381 - V-214919 - SV-214919r609363_rule
RMF Control
CM-7
Severity
Medium
CCI
CCI-000381
Version
AOSX-13-001275
Vuln IDs
  • V-214919
  • V-81719
Rule IDs
  • SV-214919r609363_rule
  • SV-96433
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. Web Sharing is non-essential and must be disabled.
Checks: C-16119r397329_chk

To check if Web Sharing is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep org.apache.httpd If the results do not show the following, this is a finding: "org.apache.httpd" =&gt; true

Fix: F-16117r397330_fix

To disable Web Sharing, run the following command: /usr/bin/sudo /bin/launchctl disable system/org.apache.httpd The system may need to be restarted for the update to take effect.

b
The macOS system must enforce an account lockout time period of 15 minutes in which a user makes three consecutive invalid logon attempts.
AC-7 - Medium - CCI-002238 - V-214920 - SV-214920r609363_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-002238
Version
AOSX-13-001324
Vuln IDs
  • V-214920
  • V-81721
Rule IDs
  • SV-214920r609363_rule
  • SV-96435
Setting a lockout time period of 15 minutes is an effective deterrent against brute forcing that also makes allowances for legitimate mistakes by users. When three invalid logon attempts are made, the account will be locked.
Checks: C-16120r397332_chk

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system has the correct setting for the logon reset timer: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep minutesUntilFailedLoginReset If the return is null or not “minutesUntilFailedLoginReset = 15”, this is a finding. If password policy is set with the "pwpolicy" utility, the variable names may vary depending on how the policy was set. To check if the password policy is configured to disable an account for 15 minutes after 3 unsuccessful logon attempts, run the following command to output the password policy to the screen: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "&lt;key&gt;policyCategoryAuthentication&lt;/key&gt;". If this does not exist, and password policy is not controlled by a directory service, this is a finding. In the array that follows, there should be one or more &lt;dict&gt; sections that describe policy checks. One should contain a &lt;string&gt; that allows users to log on if "policyAttributeFailedAuthentications" is less than "policyAttributeMaximumFailedAuthentications". Under policyParameters, "policyAttributeMaximumFailedAuthentications" should be set to "3". If "policyAttributeMaximumFailedAuthentications" is not set to "3", this is a finding. In the same check or in another &lt;dict&gt; section, there should be a &lt;string&gt; that allows users to log on if the "policyAttributeCurrentTime" is greater than the result of adding "15" minutes (900 seconds) to "policyAttributeLastFailedAuthenticationTime". 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, this is a finding.

Fix: F-16118r397333_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. The following two lines within the configuration enforce lockout expiration to "15" minutes: <key>autoEnableInSeconds</key> <integer>900</integer> To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor and ensure it contains the following text after the opening <dict> tag and before the closing </dict> tag. Replace <dict/> first with <dict></dict> if necessary. <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line "<key>policyCategoryAuthentication</key>" already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

b
The macOS system must enforce account lockout after the limit of three consecutive invalid logon attempts by a user.
AC-7 - Medium - CCI-000044 - V-214921 - SV-214921r609363_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
AOSX-13-001325
Vuln IDs
  • V-214921
  • V-81723
Rule IDs
  • SV-214921r609363_rule
  • SV-96437
By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute forcing, is reduced. Limits are imposed by locking the account.
Checks: C-16121r397335_chk

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system has the correct setting for the number of permitted failed logon attempts: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep maxFailedAttempts If the return is null, or not, “maxFailedAttempts = 3”, this is a finding. If password policy is set with the "pwpolicy" utility, the variable names may vary depending on how the policy was set. To check if the password policy is configured to disable an account for 15 minutes after 3 unsuccessful logon attempts, run the following command to output the password policy to the screen: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "&lt;key&gt;policyCategoryAuthentication&lt;/key&gt;". If this does not exist, and password policy is not controlled by a directory service, this is a finding. In the array that follows, there should be one or more &lt;dict&gt; sections that describe policy checks. One should contain a &lt;string&gt; that allows users to log on if "policyAttributeFailedAuthentications" is less than "policyAttributeMaximumFailedAuthentications". Under policyParameters, "policyAttributeMaximumFailedAuthentications" should be set to "3". If "policyAttributeMaximumFailedAuthentications" is not set to "3", this is a finding. In the same check or in another &lt;dict&gt; section, there should be a &lt;string&gt; that allows users to log on if the "policyAttributeCurrentTime" is greater than the result of adding "15" minutes (900 seconds) to "policyAttributeLastFailedAuthenticationTime". 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, this is a finding.

Fix: F-16119r397336_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor and ensure it contains the following text after the opening <dict> tag and before the closing </dict> tag. Replace <dict/> first with <dict></dict> if necessary. <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line "<key>policyCategoryAuthentication</key>" already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line <key>policyCategoryAuthentication</key> already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration or bugs in OS X may block password change and local user creation operations, as well as lock out all local users, including administrators.

b
The macOS system must enforce the limit of three consecutive invalid logon attempts by a user before the user account is locked.
AC-7 - Medium - CCI-002238 - V-214922 - SV-214922r609363_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-002238
Version
AOSX-13-001327
Vuln IDs
  • V-214922
  • V-81725
Rule IDs
  • SV-214922r609363_rule
  • SV-96439
By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute forcing, is reduced. Limits are imposed by locking the account. Setting a lockout expiration of 15 minutes is an effective deterrent against brute forcing that also makes allowances for legitimate mistakes by users.
Checks: C-16122r397338_chk

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system has the correct setting for the number of permitted failed logon attempts and the logon reset timer: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep 'maxFailedAttempts\|minutesUntilFailedLoginReset' If "maxFailedAttempts" is not set to "3" and "minutesUntilFailedLoginReset" is not set to "15", this is a finding. If password policy is set with the "pwpolicy" utility, the variable names may vary depending on how the policy was set. To check if the password policy is configured to disable an account for 15 minutes after 3 unsuccessful logon attempts, run the following command to output the password policy to the screen: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "&lt;key&gt;policyCategoryAuthentication&lt;/key&gt;". If this does not exist, and password policy is not controlled by a directory service, this is a finding. In the array that follows, there should be one or more &lt;dict&gt; sections that describe policy checks. One should contain a &lt;string&gt; that allows users to log on if "policyAttributeFailedAuthentications" is less than "policyAttributeMaximumFailedAuthentications". Under policyParameters, "policyAttributeMaximumFailedAuthentications" should be set to "3". If "policyAttributeMaximumFailedAuthentications" is not set to "3", this is a finding. In the same check or in another &lt;dict&gt; section, there should be a &lt;string&gt; that allows users to log on if the "policyAttributeCurrentTime" is greater than the result of adding "15" minutes (900 seconds) to "policyAttributeLastFailedAuthenticationTime". 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, this is a finding.

Fix: F-16120r397339_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor and ensure it contains the following text after the opening <dict> tag and before the closing </dict> tag. Replace <dict/> first with <dict></dict> if necessary. <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> </array> If the line "<key>policyCategoryAuthentication</key>" already exists, the following text should be used instead and inserted after the first <array> tag that follows it: <dict> <key>policyContent</key> <string>(policyAttributeFailedAuthentications < policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime > (policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds))</string> <key>policyIdentifier</key> <string>Authentication Lockout</string> <key>policyParameters</key> <dict> <key>autoEnableInSeconds</key> <integer>900</integer> <key>policyAttributeMaximumFailedAuthentications</key> <integer>3</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration or bugs in OS X may block password change and local user creation operations, as well as lock out all local users, including administrators.

b
The macOS system must shut down by default upon audit failure (unless availability is an overriding concern).
AU-5 - Medium - CCI-000140 - V-214923 - SV-214923r609363_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-000140
Version
AOSX-13-001355
Vuln IDs
  • V-214923
  • V-81727
Rule IDs
  • SV-214923r609363_rule
  • SV-96441
The audit service should shut down the computer if it is unable to audit system events. Once audit failure occurs, user and system activity is no longer recorded and malicious activity could go undetected. Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. Responses to audit failure depend on the nature of the failure mode. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: (i) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner. (ii) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.
Checks: C-16123r397341_chk

To view the setting for the audit control system, run the following command: sudo /usr/bin/grep ^policy /etc/security/audit_control | /usr/bin/grep ahlt If there is no result, this is a finding.

Fix: F-16121r397342_fix

Edit the "/etc/security/audit_control file" and change the value for policy to include the setting "ahlt". To do this programmatically, run the following command: sudo /usr/bin/sed -i.bak '/^policy/ s/$/,ahlt/' /etc/security/audit_control; sudo /usr/sbin/audit -s

c
The macOS system must use a DoD antivirus program.
CM-6 - High - CCI-000366 - V-214924 - SV-214924r609363_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
AOSX-13-001465
Vuln IDs
  • V-214924
  • V-81729
Rule IDs
  • SV-214924r609363_rule
  • SV-96443
An approved antivirus product must be installed and configured to run. Malicious software can establish a base on individual desktops and servers. Employing an automated mechanism to detect this type of software will aid in elimination of the software from the operating system.
Checks: C-16124r397344_chk

Ask the System Administrator (SA) or Information System Security Officer (ISSO) if an approved antivirus solution is loaded on the system. The antivirus solution may be bundled with an approved host-based security solution. If there is no local antivirus solution installed on the system, this is a finding.

Fix: F-16122r397345_fix

Install an approved antivirus solution onto the system.

a
The macOS system must be configured to disable AirDrop.
CM-7 - Low - CCI-000381 - V-214925 - SV-214925r609363_rule
RMF Control
CM-7
Severity
Low
CCI
CCI-000381
Version
AOSX-13-002050
Vuln IDs
  • V-214925
  • V-81731
Rule IDs
  • SV-214925r609363_rule
  • SV-96445
To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues. AirDrop must be disabled.
Checks: C-16125r397347_chk

To check if AirDrop has been disabled, run the following command: sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep DisableAirDrop If the result is not "DisableAirDrop = 1", this is a finding.

Fix: F-16123r397348_fix

Disabling AirDrop is enforced using the "Restrictions Policy" configuration profile.

c
The macOS system must be integrated into a directory services infrastructure.
CM-6 - High - CCI-000366 - V-214926 - SV-214926r609363_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
AOSX-13-002060
Vuln IDs
  • V-214926
  • V-81733
Rule IDs
  • SV-214926r609363_rule
  • SV-96447
Distinct user account databases on each separate system cause problems with username and password policy enforcement. Most approved directory services infrastructure solutions allow centralized management of users and passwords.
Checks: C-16126r397350_chk

To determine if the system is integrated to a directory service, ask the System Administrator (SA) or Information System Security Officer (ISSO) or run the following command: /usr/bin/sudo dscl localhost -list . | /usr/bin/grep -vE '(Contact | Search | Local)' If nothing is returned, or if the system is not integrated into a directory service infrastructure, this is a finding.

Fix: F-16124r397351_fix

Integrate the system into an existing directory services infrastructure.

b
The macOS system must enforce a 60-day maximum password lifetime restriction.
IA-5 - Medium - CCI-000199 - V-214927 - SV-214927r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000199
Version
AOSX-13-002085
Vuln IDs
  • V-214927
  • V-81735
Rule IDs
  • SV-214927r609363_rule
  • SV-96449
Any password, no matter how complex, can eventually be cracked. Therefore, passwords need to be changed periodically. One method of minimizing this risk is to use complex passwords and periodically change them. If the operating system does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the operating system passwords could be compromised.
Checks: C-16127r397353_chk

Password policy can be set with a configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require users to change their passwords every 60 days: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep maxPINAgeInDays If the return is null, or is not “maxPINAgeInDays = 60” or set to a smaller value, this is a finding. If password policy is set with the "pwpolicy" utility, run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line &lt;key&gt;policyCategoryPasswordChange&lt;/key&gt;. If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a &lt;dict&gt; section that contains a check &lt;string&gt; that compares the variable "policyAttributeLastPasswordChangeTime" to the variable "policyAttributeCurrentTime". It may contain additional variables defined in the "policyParameters" section that follows it. All comparisons are done in seconds. If this check allows users to log in with passwords older than "60" days, or if no such check exists, this is a finding.

Fix: F-16125r397354_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>. If there already is a policy block that refers to password expiration, ensure it is set to "60" days. If the line "<key>policyCategoryPasswordChange</key>" is not present in the file, add the following text immediately after the opening <dict> tag in the file: <key>policyCategoryPasswordChange</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime > policyAttributeLastPasswordChangeTime + (policyAttributeExpiresEveryNDays * 24 * 60 * 60)</string> <key>policyIdentifier</key> <string>Password Change Interval</string> <key>policyParameters</key> <dict> <key>policyAttributeExpiresEveryNDays</key> <integer>60</integer> </dict> </dict> </array> If the line "<key>policyCategoryPasswordChange</key>" is already present in the file, the following text should be added just after the opening <array> tag that follows the line instead: <dict> <key>policyContent</key> <string>policyAttributeCurrentTime > policyAttributeLastPasswordChangeTime + (policyAttributeExpiresEveryNDays * 24 * 60 * 60)</string> <key>policyIdentifier</key> <string>Password Change Interval</string> <key>policyParameters</key> <dict> <key>policyAttributeExpiresEveryNDays</key> <integer>60</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

b
The macOS system must prohibit password reuse for a minimum of five generations.
IA-5 - Medium - CCI-000200 - V-214928 - SV-214928r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000200
Version
AOSX-13-002090
Vuln IDs
  • V-214928
  • V-81737
Rule IDs
  • SV-214928r609363_rule
  • SV-96451
Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. If the information system or application allows the user to consecutively reuse their password when that password has exceeded its defined lifetime, the end result is a password that is not changed as per policy requirements.
Checks: C-16128r397356_chk

Password policy can be set with the "Password Policy" configuration profile or the "pwpolicy" utility. If password policy is set with a configuration profile, run the following command to check if the system is configured to require that users cannot reuse one of their five previously used passwords: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep pinHistory If the return in null or not “pinHistory = 5” or greater, this is a finding. If password policy is set with the "pwpolicy" utility, run the following command instead: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies Look for the line "&lt;key&gt;policyCategoryPasswordContent&lt;/key&gt;". If it does not exist, and password policy is not controlled by a directory service, this is a finding. Otherwise, in the array section that follows it, there should be a &lt;dict&gt; section that contains a check &lt;string&gt; such as "&lt;string&gt;none policyAttributePasswordHashes in policyAttributePasswordHistory&lt;/string&gt;". This searches for the hash of the user-entered password in the list of previous password hashes. In the "policyParameters" section that follows it, "policyAttributePasswordHistoryDepth" must be set to "5" or greater. If this parameter is not set to "5" or greater, or if no such check exists, this is a finding.

Fix: F-16126r397357_fix

This setting may be enforced using the "Passcode Policy" configuration profile or by a directory service. To set the password policy without a configuration profile, run the following command to save a copy of the current "pwpolicy" account policy file: /usr/bin/sudo /usr/bin/pwpolicy getaccountpolicies | tail -n +2 > pwpolicy.plist Open the generated file in a text editor. If the file does not yet contain any policy settings, replace <dict/> with <dict></dict>. If there already is a policy block that refers to password history, ensure it is set to "5". If the line "<key>policyCategoryPasswordContent</key>" is not present in the file, add the following text immediately after the opening <dict> tag in the file: <key>policyCategoryPasswordContent</key> <array> <dict> <key>policyContent</key> <string>none policyAttributePasswordHashes in policyAttributePasswordHistory</string> <key>policyIdentifier</key> <string>Password History</string> <key>policyParameters</key> <dict> <key>policyAttributePasswordHistoryDepth</key> <integer>5</integer> </dict> </dict> </array> If the line "<key>policyCategoryPasswordContent</key>" is already present in the file, the following text should be added just after the opening <array> tag that follows the line instead: <dict> <key>policyContent</key> <string>none policyAttributePasswordHashes in policyAttributePasswordHistory</string> <key>policyIdentifier</key> <string>Password History</string> <key>policyParameters</key> <dict> <key>policyAttributePasswordHistoryDepth</key> <integer>5</integer> </dict> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file: /usr/bin/sudo /usr/bin/pwpolicy setaccountpolicies pwpolicy.plist Note: Updates to password restrictions must be thoroughly evaluated in a test environment. Mistakes in configuration may block password change and local user creation operations, as well as lock out all local users, including administrators.

b
The macOS system must be configured with system log files owned by root and group-owned by wheel or admin.
SI-11 - Medium - CCI-001314 - V-214929 - SV-214929r609363_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
AOSX-13-002105
Vuln IDs
  • V-214929
  • V-81739
Rule IDs
  • SV-214929r609363_rule
  • SV-96453
System logs should only be readable by root or admin users. System logs frequently contain sensitive information that could be used by an attacker. Setting the correct owner mitigates this risk.
Checks: C-16129r397359_chk

Log files are controlled by "newsyslog" and "aslmanager". These commands check for log files that exist on the system and print out the log with corresponding ownership. Run them from inside "/var/log": /usr/bin/sudo stat -f '%Su:%Sg:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2&gt; /dev/null /usr/bin/sudo stat -f '%Su:%Sg:%N' $(/usr/bin/grep -e '^&gt;' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2&gt; /dev/null If there are any system log files that are not owned by "root" and group-owned by "wheel" or admin, this is a finding. Service logs may be owned by the service user account or group.

Fix: F-16127r397360_fix

For any log file that returns an incorrect owner or group value, run the following command: /usr/bin/sudo chown root:wheel [log file] [log file] is the full path to the log file in question. If the file is managed by "newsyslog", find the configuration line in the directory "/etc/newsyslog.d/" or the file "/etc/newsyslog.conf" and ensure that the owner:group column is set to "root:wheel" or the appropriate service user account and group. If the file is managed by "aslmanager", find the configuration line in the directory "/etc/asl/" or the file "/etc/asl.conf" and ensure that "uid" and "gid" options are either not present or are set to a service user account and group respectively.

b
The macOS system must be configured with system log files set to mode 640 or less permissive.
SI-11 - Medium - CCI-001314 - V-214930 - SV-214930r609363_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
AOSX-13-002106
Vuln IDs
  • V-214930
  • V-81741
Rule IDs
  • SV-214930r609363_rule
  • SV-96455
System logs should only be readable by root or admin users. System logs frequently contain sensitive information that could be used by an attacker. Setting the correct permissions mitigates this risk.
Checks: C-16130r397362_chk

These commands check for log files that exist on the system and print out the log with corresponding permissions. Run them from inside "/var/log": /usr/bin/sudo stat -f '%A:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2&gt; /dev/null /usr/bin/sudo stat -f '%A:%N' $(/usr/bin/grep -e '^&gt;' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2&gt; /dev/null The correct permissions on log files should be "640" or less permissive for system logs. Any file with more permissive settings is a finding.

Fix: F-16128r397363_fix

For any log file that returns an incorrect permission value, run the following command: /usr/bin/sudo chmod 640 [log file] [log file] is the full path to the log file in question. If the file is managed by "newsyslog", find the configuration line in the directory "/etc/newsyslog.d/" or the file "/etc/newsyslog.conf" and edit the mode column to be "640" or less permissive. If the file is managed by "aslmanager", find the configuration line in the directory "/etc/asl/" or the file "/etc/asl.conf" and add or edit the mode option to be "mode=0640" or less permissive.

b
The macOS system must be configured with access control lists (ACLs) for system log files to be set correctly.
SI-11 - Medium - CCI-001314 - V-214931 - SV-214931r609363_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
AOSX-13-002107
Vuln IDs
  • V-214931
  • V-81743
Rule IDs
  • SV-214931r609363_rule
  • SV-96457
System logs should only be readable by root or admin users. System logs frequently contain sensitive information that could be used by an attacker. Setting the correct ACLs mitigates this risk.
Checks: C-16131r397365_chk

These commands check for log files that exist on the system and print out the list of ACLs if there are any. /usr/bin/sudo ls -ld@ $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | awk '{ print $1 }') 2&gt; /dev/null /usr/bin/sudo ls -ld@ $(/usr/bin/grep -e '^&gt;' /etc/asl.conf /etc/asl/* | awk '{ print $2 }') 2&gt; /dev/null ACLs will be listed under any file that may contain them (i.e., "0: group:admin allow list,readattr,reaadextattr,readsecurity"). If any system log file contains this information, this is a finding.

Fix: F-16129r397366_fix

For any log file that returns an ACL, run the following command: /usr/bin/sudo chmod -N [log file] [log file] is the full path to the log file in question.

b
The macOS system must audit the enforcement actions used to restrict access associated with changes to the system.
AU-12 - Medium - CCI-000172 - V-214932 - SV-214932r609363_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000172
Version
AOSX-13-002110
Vuln IDs
  • V-214932
  • V-81745
Rule IDs
  • SV-214932r609363_rule
  • SV-96459
By auditing access restriction enforcement, changes to application and OS configuration files can be audited. Without auditing the enforcement of access restrictions, it will be difficult to identify attempted attacks and an audit trail will not be available for forensic investigation. Enforcement actions are the methods or mechanisms used to prevent unauthorized changes to configuration settings. Enforcement action methods may be as simple as denying access to a file based on the application of file permissions (access restriction). Audit items may consist of lists of actions blocked by access restrictions or changes identified after the fact. Satisfies: SRG-OS-000365-GPOS-00152, SRG-OS-000458-GPOS-00203, SRG-OS-000461-GPOS-00205, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209, SRG-OS-000466-GPOS-00210, SRG-OS-000467-GPOS-00211, SRG-OS-000468-GPOS-00212, SRG-OS-000474-GPOS-00219
Checks: C-16132r397368_chk

To view the currently configured flags for the audit daemon, run the following command: /usr/bin/sudo /usr/bin/grep ^flags /etc/security/audit_control Enforcement actions are logged by way of the "fm" flag, which audits permission changes, and "-fr" and "-fw", which denote failed attempts to read or write to a file. If "fm", "-fr", and "-fw" are not listed in the result of the check, this is a finding.

Fix: F-16130r397369_fix

To set the audit flags to the recommended setting, run the following command to add the flags "fm", "-fr", and "-fw" all at once: /usr/bin/sudo /usr/bin/sed -i.bak '/^flags/ s/$/,fm,-fr,-fw/' /etc/security/audit_control; /usr/bin/sudo /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.

b
The macOS system must be configured to lock the user session when a smart token is removed.
AC-11 - Medium - CCI-000058 - V-214933 - SV-214933r609363_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000058
Version
AOSX-13-030014
Vuln IDs
  • V-214933
  • V-81747
Rule IDs
  • SV-214933r609363_rule
  • SV-96461
A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, operating systems need to provide users with the ability to manually invoke a session lock so users may secure their session should they need to temporarily vacate the immediate physical vicinity.
Checks: C-16133r397371_chk

To check if support for session locking with removal of a token is enabled, run the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep "tokenRemovalAction = 1;" If there is no result, this is a finding.

Fix: F-16131r397372_fix

This is now in the smartcard payload. <key>tokenRemovalAction</key> <integer>1</integer>

b
The macOS system must enable certificate for smartcards.
IA-5 - Medium - CCI-000186 - V-214934 - SV-214934r609363_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000186
Version
AOSX-13-067035
Vuln IDs
  • V-214934
  • V-81749
Rule IDs
  • SV-214934r609363_rule
  • SV-96463
To prevent untrusted certificates the certificates on a smartcard card must be valid in these ways: its issuer is system-trusted, the certificate is not expired, its "valid-after" date is in the past, and it passes CRL and OCSP checking.
Checks: C-16134r397374_chk

To view the setting for the smartcard certification configuration, run the following command: sudo /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep checkCertificateTrust If the output is null or not "checkCertificateTrust = 1;" this is a finding.

Fix: F-16132r397375_fix

This setting is enforced using the "Smartcard" configuration profile.

b
The macOS system must prohibit user installation of software without explicit privileged status.
CM-11 - Medium - CCI-001812 - V-214935 - SV-214935r609363_rule
RMF Control
CM-11
Severity
Medium
CCI
CCI-001812
Version
AOSX-13-362149
Vuln IDs
  • V-214935
  • V-81751
Rule IDs
  • SV-214935r609363_rule
  • SV-96465
Allowing regular users to install software, without explicit privileges, creates the risk that untested or potentially malicious software will be installed on the system. Explicit privileges (escalated or administrative privileges) provide the regular user with explicit capabilities and control that exceeds the rights of a regular user. Operating system functionality will vary, and while users are not permitted to install unapproved software, there may be instances where the organization allows the user to install approved software packages, such as from an approved software repository. The operating system or software configuration management utility must enforce control of software installation by users based upon what types of software installations are permitted (e.g., updates and security patches to existing software) and what types of installations are prohibited (e.g., software whose pedigree with regard to being potentially malicious is unknown or suspect) by the organization.
Checks: C-16135r397377_chk

To check if the system is configured to prohibit user installation of software, first check to ensure the Parental Controls are enabled with the following command: /usr/sbin/system_profiler SPConfigurationProfileDataType | /usr/bin/grep -A 5 familyControlsEnabled | grep “/Users" If the result is null, or does not contain “/Users/“, this is a finding

Fix: F-16133r397378_fix

This setting is enforced using the "Restrictions Policy" configuration profile.

b
The macOS system must implement approved Ciphers to protect the confidentiality of SSH connections.
MA-4 - Medium - CCI-003123 - V-233625 - SV-233625r609363_rule
RMF Control
MA-4
Severity
Medium
CCI
CCI-003123
Version
AOSX-13-000054
Vuln IDs
  • V-233625
Rule IDs
  • SV-233625r609363_rule
Unapproved mechanisms for authentication to the cryptographic module are not verified, and therefore cannot be relied upon to provide confidentiality or integrity, resulting in the compromise of DoD data. Operating systems using encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. The implementation of OpenSSH that is included with macOS does not utilize a FIPS 140-2 validated cryptographic module. While the listed ciphers are FIPS 140-2 approved algorithms, the module implementing them has not been validated. By specifying a cipher list with the order of ciphers being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest cipher for securing SSH connections. Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174
Checks: C-33607r591063_chk

If SSH is not being used, this is Not Applicable. Inspect the "Ciphers" configuration with the following command: Note: The location of the "sshd_config" file may vary if a different daemon is in use. # /usr/bin/grep "^Ciphers" /etc/ssh/sshd_config Ciphers aes256-ctr,aes192-ctr,aes128-ctr If any ciphers other than "aes256-ctr", "aes192-ctr", or "aes128-ctr" are listed, the order differs from the example above, or the "Ciphers" keyword is missing, this is a finding.

Fix: F-36783r621603_fix

Configure SSH to use secure cryptographic algorithms. To ensure that "Ciphers" set correctly, run the following command: /usr/bin/sudo /usr/bin/grep -q '^Ciphers' /etc/ssh/sshd_config && /usr/bin/sudo /usr/bin/sed -i.bak 's/^Ciphers.*/Ciphers aes256-ctr,aes192-ctr,aes128-ctr/' /etc/ssh/sshd_config || /usr/bin/sudo /usr/bin/sed -i.bak '/.*Ciphers and keying.*/a\'$'\n''Ciphers aes256-ctr,aes192-ctr,aes128-ctr'$'\n' /etc/ssh/sshd_config The SSH service must be restarted for changes to take effect.

b
The macOS system must use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms.
MA-4 - Medium - CCI-000877 - V-233626 - SV-233626r609363_rule
RMF Control
MA-4
Severity
Medium
CCI
CCI-000877
Version
AOSX-13-000055
Vuln IDs
  • V-233626
Rule IDs
  • SV-233626r609363_rule
Unapproved mechanisms for authentication to the cryptographic module are not verified, and therefore cannot be relied upon to provide confidentiality or integrity, resulting in the compromise of DoD data. Operating systems using encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. The implementation of OpenSSH that is included with macOS does not utilize a FIPS 140-2 validated cryptographic module. While the listed MACs are FIPS 140-2 approved algorithms, the module implementing them has not been validated. By specifying a Keyed-Hash Message Authentication Code list with the order of hashes being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest hash for securing SSH connections. Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174
Checks: C-33608r591066_chk

If SSH is not being used, this is Not Applicable. Inspect the "MACs" configuration with the following command: Note: The location of the "sshd_config" file may vary if a different daemon is in use. /usr/bin/grep "^Macs" /etc/ssh/sshd_config MACs hmac-sha2-512,hmac-sha2-256 If any hashes other than "hmac-sha2-512" and/or "hmac-sha2-256" are listed, the order differs from the example above, or the "MACs" keyword is missing, this is a finding.

Fix: F-36784r621606_fix

Configure SSH to use secure Keyed-Hash Message Authentication Codes. To ensure that "MACs" set correctly, run the following command: /usr/bin/sudo /usr/bin/grep -q '^MACs' /etc/ssh/sshd_config && /usr/bin/sudo /usr/bin/sed -i.bak 's/^MACs.*/MACs hmac-sha2-256,hmac-sha2-512/' /etc/ssh/sshd_config || /usr/bin/sudo /usr/bin/sed -i.bak '/.*Ciphers and keying.*/a\'$'\n''MACs hmac-sha2-512,hmac-sha2-256'$'\n' /etc/ssh/sshd_config The SSH service must be restarted for changes to take effect.

b
The macOS system must implement an approved Key Exchange Algorithm.
MA-4 - Medium - CCI-003123 - V-233627 - SV-233627r609363_rule
RMF Control
MA-4
Severity
Medium
CCI
CCI-003123
Version
AOSX-13-000056
Vuln IDs
  • V-233627
Rule IDs
  • SV-233627r609363_rule
Unapproved mechanisms for authentication to the cryptographic module are not verified, and therefore cannot be relied upon to provide confidentiality or integrity, resulting in the compromise of DoD data. Operating systems using encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. The implementation of OpenSSH that is included with macOS does not utilize a FIPS 140-2 validated cryptographic module. While the listed Key Exchange Algorithms are FIPS 140-2 approved, the module implementing them has not been validated. By specifying a Key Exchange Algorithm list with the order of hashes being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest Key Exchange Algorithm for securing SSH connections. Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173,SRG-OS-000394-GPOS-00174
Checks: C-33609r591069_chk

If SSH is not being used, this is Not Applicable. Inspect the "KexAlgorithms" configuration with the following command: Note: The location of the "sshd_config" file may vary if a different daemon is in use. /usr/bin/grep "^KexAlgorithms" /etc/ssh/sshd_config KexAlgorithms diffie-hellman-group-exchange-sha256 If any algorithm other than "diffie-hellman-group-exchange-sha256" is listed or the "KexAlgorithms" keyword is missing, this is a finding.

Fix: F-33582r591070_fix

Configure SSH to use a secure Key Exchange Algorithm. To ensure that "KexAlgorithms" set correctly, run the following command: /usr/bin/sudo /usr/bin/grep -q '^KexAlgorithms' /etc/ssh/sshd_config && /usr/bin/sudo /usr/bin/sed -i.bak 's/^KexAlgorithms.*

b
The macOS system must enforce requirements for remote connections to the information
CM-6 - Medium - CCI-000366 - V-237767 - SV-237767r648733_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
AOSX-13-000057
Vuln IDs
  • V-237767
  • V-81481
Rule IDs
  • SV-237767r648733_rule
  • SV-96195
The Screen Sharing feature allows remote users to view or control the desktop of the current user. A malicious user can take advantage of screen sharing to gain full access to the system remotely, either with stolen credentials or by guessing the username and password. Disabling Screen Sharing mitigates this risk.
Checks: C-40981r648732_chk

To check if the Screen Sharing service is disabled, use the following command: /usr/bin/sudo /bin/launchctl print-disabled system | /usr/bin/grep com.apple.screensharing If the results do not show the following, this is a finding: "com.apple.screensharing" =&gt; true

Fix: F-33737r607345_fix

To disable the Screen Sharing service, run the following command: /usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing The system may need to be restarted for the update to take effect.