Apple macOS 15 (Sequoia) Security Technical Implementation Guide
Pick two releases to diff their requirements.
Open a previous version of this STIG.
Digest of Updates ✎ 24
Comparison against the immediately-prior release (V1R4). Rule matching uses the Group Vuln ID. Content-change detection compares the rule’s description, check, and fix text after stripping inline markup — cosmetic-only edits aren’t flagged.
Content changes 24
- V-268427 Medium fix The macOS system must enforce time synchronization.
- V-268428 Medium checkfix The macOS system must limit consecutive failed login attempts to three.
- V-268431 Medium check The macOS system must display the Standard Mandatory DOD Notice and Consent Banner at the login window.
- V-268435 Medium description The macOS system must configure SSHD ClientAliveInterval to 900.
- V-268438 High descriptionfix The macOS system must limit SSHD to FIPS-compliant connections.
- V-268439 High description The macOS system must limit SSH to FIPS-compliant connections.
- V-268440 Medium descriptioncheckfix The macOS system must set account lockout time to 15 minutes.
- V-268442 Medium description The macOS system must disable login to other users' active and locked sessions.
- V-268444 Medium description The macOS system must configure the SSH ServerAliveInterval to 900.
- V-268447 Medium description The macOS system must set SSH Active Server Alive Maximum to 0.
- V-268451 Medium fix The macOS system must configure sudo to log events.
- V-268452 Medium descriptioncheck The macOS system must be configured to audit all administrative action events.
- V-268494 Medium fix The macOS system must disable sending diagnostic and usage data to Apple.
- V-268508 High checkfix The macOS system must apply gatekeeper settings to block applications from unidentified developers.
- V-268511 High descriptioncheckfix The macOS system must enable gatekeeper.
- V-268517 Medium descriptioncheck The macOS system must disable Media Sharing.
- V-268518 Medium checkfix The macOS system must disable Bluetooth Sharing.
- V-268525 Medium fix The macOS system must disable Find My service.
- V-268538 Medium descriptioncheck The macOS system must require that passwords contain a minimum of one special character.
- V-268548 Medium descriptionfix The macOS system must set minimum password lifetime to 24 hours.
- V-268549 Medium fix The macOS system must disable accounts after 35 days of inactivity.
- V-268556 High fix The macOS system must enforce FileVault.
- V-268575 Medium descriptioncheckfix The macOS system must install security-relevant software updates within 30 days unless the time period is directed by an authoritative source (e.g., IAVM, CTOs, DTMs, STIGs).
- V-269093 Medium description The macOS system must enforce SSH to display a policy banner.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-15-000001
- Vuln IDs
-
- V-268420
- Rule IDs
-
- SV-268420r1034200_rule
Checks: C-72450r1034198_chk
Verify the macOS system is configured to prevent Apple Watch from terminating a session lock with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAutoUnlock').js EOS If the result is not "false", this is a finding.
Fix: F-72351r1034199_fix
Configure the macOS system to prevent Apple Watch from terminating a session lock by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-15-000002
- Vuln IDs
-
- V-268421
- Rule IDs
-
- SV-268421r1034203_rule
Checks: C-72451r1034201_chk
Verify the macOS system is configured to prompt users to enter a password to unlock the screen saver with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.screensaver')\ .objectForKey('askForPassword').js EOS If the result is not "true", this is a finding.
Fix: F-72352r1034202_fix
Configure the macOS system to prompt users to enter a password to unlock the screen saver by installing the "com.apple.screensaver" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-15-000003
- Vuln IDs
-
- V-268422
- Rule IDs
-
- SV-268422r1131177_rule
Checks: C-72452r1131176_chk
Verify the macOS system is configured to initiate a session lock within five seconds of the screen saver starting with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let delay = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.screensaver')\ .objectForKey('askForPasswordDelay')) if ( delay <= 5 ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72353r1034205_fix
Configure the macOS system to initiate a session lock within five seconds of the screen saver starting by installing the "com.apple.screensaver" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000057
- Version
- APPL-15-000005
- Vuln IDs
-
- V-268423
- Rule IDs
-
- SV-268423r1034209_rule
Checks: C-72453r1034207_chk
Verify the macOS system is configured to lock the user session when a smart token is removed with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('tokenRemovalAction').js EOS If the result is not "1", this is a finding.
Fix: F-72354r1034208_fix
Configure the macOS system to lock the user session when a smart token is removed by installing the "com.apple.security.smartcard" configuration profile. NOTE: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000060
- Version
- APPL-15-000007
- Vuln IDs
-
- V-268424
- Rule IDs
-
- SV-268424r1034212_rule
Checks: C-72454r1034210_chk
Verify the macOS system is configured to disable hot corners with the following command: /usr/bin/profiles -P -o stdout | /usr/bin/grep -Ec '"wvous-bl-corner" = 0|"wvous-br-corner" = 0|"wvous-tl-corner" = 0|"wvous-tr-corner" = 0' If the result is not "4", this is a finding.
Fix: F-72355r1034211_fix
Configure the macOS system to disable hot corners by installing the "com.apple.ManagedClient.preferences" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000060
- Version
- APPL-15-000009
- Vuln IDs
-
- V-268425
- Rule IDs
-
- SV-268425r1034215_rule
Checks: C-72455r1034213_chk
Verify the macOS system is configured to prevent AdminHostInfo from being available at LoginWindow with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectIsForcedForKey('AdminHostInfo') EOS If the result is not "false", this is a finding.
Fix: F-72356r1034214_fix
Configure the macOS system to prevent AdminHostInfo from being available at LoginWindow by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- AC-2
- Severity
- M
- CCI
- CCI-000016
- Version
- APPL-15-000012
- Vuln IDs
-
- V-268426
- Rule IDs
-
- SV-268426r1034218_rule
Checks: C-72456r1034216_chk
Verify that a password policy is enforced by a directory service by asking the system administrator (SA) or information system security officer (ISSO). If no policy is enforced by a directory service, a password policy can be set with the "pwpolicy" utility. The variable names may vary depending on how the policy was set. If no temporary or emergency accounts are defined on the system, this is not applicable. To check if the password policy is configured to disable a temporary or emergency account after 72 hours, run the following command to output the password policy to the screen, substituting the correct user name in place of username: /usr/bin/pwpolicy -u username getaccountpolicies | tail -n +2 If there is no output, and password policy is not controlled by a directory service, this is a finding. Otherwise, look for the line "<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-72357r1034217_fix
This setting may be enforced using local policy or by a directory service. To set local policy to disable a temporary or emergency user, create a plain text file containing the following: <dict> <key>policyCategoryAuthentication</key> <array> <dict> <key>policyContent</key> <string>policyAttributeCurrentTime < policyAttributeCreationTime+259299</string> <key>policyIdentifier</key> <string>Disable Tmp Accounts </string> </dict> </array> </dict> After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the correct user name in place of "username" and the path to the file in place of "/path/to/file". /usr/bin/pwpolicy -u username setaccountpolicies /path/to/file
- RMF Control
- Severity
- M
- CCI
- CCI-004923
- Version
- APPL-15-000014
- Vuln IDs
-
- V-268427
- Rule IDs
-
- SV-268427r1131179_rule
Checks: C-72457r1034219_chk
Verify the macOS system is configured to enforce time synchronization with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.timed')\ .objectForKey('TMAutomaticTimeOnlyEnabled').js EOS If the result is not "true", this is a finding.
Fix: F-72358r1131178_fix
Configure the macOS system to enforce time synchronization by installing the "com.apple.ManagedClient.preferences" configuration profile.
- RMF Control
- AC-7
- Severity
- M
- CCI
- CCI-000044
- Version
- APPL-15-000022
- Vuln IDs
-
- V-268428
- Rule IDs
-
- SV-268428r1131182_rule
Checks: C-72458r1131180_chk
Verify the macOS system is configured to limit consecutive failed login attempts to three with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeMaximumFailedAuthentications"]/following-sibling::integer[1]/text()' - | /usr/bin/awk '{ if ($1 <= 3) {print "yes"} else {print "no"}}' | /usr/bin/uniq If the result is not "yes", this is a finding.
Fix: F-72359r1131181_fix
Configure the macOS system to limit consecutive failed login attempts to three by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APPL-15-000023
- Vuln IDs
-
- V-268429
- Rule IDs
-
- SV-268429r1034227_rule
Checks: C-72459r1034225_chk
Verify the macOS system is configured to display the Standard Mandatory DOD Notice and Consent Banner before granting remote access to the operating system. Verify the operating system has the correct text listed in the "/etc/banner" file with the following command: /usr/bin/more /etc/banner The command must 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 login banner before granting remote access 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-72360r1034226_fix
Configure the macOS system to display the Standard Mandatory DOD Notice and Consent Banner before granting remote access to the operating system by creating a text file containing the required DOD text. Name the file "banner" and place it in "/etc/".
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APPL-15-000025
- Vuln IDs
-
- V-268431
- Rule IDs
-
- SV-268431r1131186_rule
Checks: C-72461r1131185_chk
Verify the macOS system is configured to display a policy banner with the following command: /bin/ls -ld /Library/Security/PolicyBanner.rtf* | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the command does not return "1", 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-72362r1034232_fix
Configure the macOS system to display a policy banner by creating an RTF file containing the required text. Name the file "PolicyBanner.rtfd" and place it in "/Library/Security/". Update the permissions of the "/Library/Security/PolicyBanner.rtfd" file with the following command: /usr/bin/sudo /bin/chmod 644 /Library/Security/PolicyBanner.rtfd
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-000030
- Vuln IDs
-
- V-268432
- Rule IDs
-
- SV-268432r1034236_rule
Checks: C-72462r1034234_chk
Verify the macOS system is configured without ACLs applied to log files with the following command: /bin/ls -le $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{print $1}' | /usr/bin/grep -c ":" If the result is not "0", this is a finding.
Fix: F-72363r1034235_fix
Configure the macOS system without ACLs applied to log files with the following command: /bin/chmod -RN /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-000031
- Vuln IDs
-
- V-268433
- Rule IDs
-
- SV-268433r1034239_rule
Checks: C-72463r1034237_chk
Verify the macOS system is configured without ACLs applied to log folders with the following command: /bin/ls -lde /var/audit | /usr/bin/awk '{print $1}' | /usr/bin/grep -c ":" If the result is not "0", this is a finding.
Fix: F-72364r1034238_fix
Configure the macOS system without ACLs applied to log folders with the following command: /bin/chmod -N /var/audit
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-000033
- Vuln IDs
-
- V-268434
- Rule IDs
-
- SV-268434r1117265_rule
Checks: C-72464r1034240_chk
Verify the macOS system is configured to disable FileVault automatic login with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('DisableFDEAutoLogin').js EOS If the result is not "true", this is a finding.
Fix: F-72365r1034241_fix
Configure the macOS system to disable FileVault automatic login by installing the "com.apple.loginwindow" configuration profile. NOTE: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000051
- Vuln IDs
-
- V-268435
- Rule IDs
-
- SV-268435r1131188_rule
Checks: C-72465r1034243_chk
Verify the macOS system is configured to set the SSHD ClientAliveInterval to 900 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/clientaliveinterval/{print $2}' If the result is not "900", this is a finding.
Fix: F-72366r1131187_fix
Configure the macOS system to set the SSHD ClientAliveInterval to 900 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'clientaliveinterval 900' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "clientaliveinterval 900" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000052
- Vuln IDs
-
- V-268436
- Rule IDs
-
- SV-268436r1034780_rule
Checks: C-72466r1034246_chk
Verify the macOS system is configured to set the SSHD ClientAliveCountMax to 1 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/clientalivecountmax/{print $2}' If the result is not "1", this is a finding.
Fix: F-72367r1034247_fix
Configure the macOS system to set the SSHD ClientAliveCountMax to 1 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'clientalivecountmax 1' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "clientalivecountmax 1" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000053
- Vuln IDs
-
- V-268437
- Rule IDs
-
- SV-268437r1034251_rule
Checks: C-72467r1034249_chk
Verify the macOS system is configured to set Login Grace Time to 30 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/logingracetime/{print $2}' If the result is not "30", this is a finding.
Fix: F-72368r1034250_fix
Configure the macOS system to set Login Grace Time to 30 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'logingracetime 30' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "logingracetime 30" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- AC-17
- Severity
- H
- CCI
- CCI-000068
- Version
- APPL-15-000054
- Vuln IDs
-
- V-268438
- Rule IDs
-
- SV-268438r1131191_rule
Checks: C-72468r1131189_chk
Verify the macOS system is configured to limit SSHD to FIPS-compliant connections with the following command: fips_sshd_config=("Ciphers aes128-gcm@openssh.com" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "HostKeyAlgorithms ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com" "KexAlgorithms ecdh-sha2-nistp256" "MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" "CASignatureAlgorithms ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com") total=0 for config in $fips_sshd_config; do total=$(expr $(/usr/sbin/sshd -G | /usr/bin/grep -i -c "$config") + $total) done echo $total If the result is not "7", this is a finding.
Fix: F-72369r1131190_fix
Configure the macOS system to limit SSHD to FIPS-compliant connections with the following command: if [ -f /etc/ssh/crypto.conf ] && /usr/bin/grep -q "Include /etc/ssh/crypto.conf" /etc/ssh/sshd_config.d/100-macos.conf 2>/bin/null; then /bin/ln -fs /etc/ssh/crypto/fips.conf /etc/ssh/crypto.conf fi include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi fips_sshd_config=("Ciphers aes128-gcm@openssh.com" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "HostKeyAlgorithms ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com" "KexAlgorithms ecdh-sha2-nistp256" "MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" "CASignatureAlgorithms ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com") sshd_config=$(/usr/sbin/sshd -G) for config in $fips_sshd_config; do if ! echo $sshd_config | /usr/bin/grep -q -i "$config" 2>/dev/null; then /usr/bin/grep -qxF "$config" "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "$config" >> "${include_dir}01-mscp-sshd.conf" fi done for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- AC-17
- Severity
- H
- CCI
- CCI-000068
- Version
- APPL-15-000057
- Vuln IDs
-
- V-268439
- Rule IDs
-
- SV-268439r1131194_rule
Checks: C-72469r1131192_chk
Verify the macOS system is configured to limit SSH to FIPS-compliant connections with the following command: fips_ssh_config=("Ciphers aes128-gcm@openssh.com" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "HostKeyAlgorithms ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com" "KexAlgorithms ecdh-sha2-nistp256" "MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" "CASignatureAlgorithms ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com") total=0 ret="pass" for config in $fips_ssh_config; do if [[ "$ret" == "fail" ]]; then break fi for u in $(/usr/bin/dscl . list /users shell | /usr/bin/egrep -v '(^_)|(root)|(/usr/bin/false)' | /usr/bin/awk '{print $1}'); do sshCheck=$(/usr/bin/sudo -u $u /usr/bin/ssh -G . | /usr/bin/grep -ci "$config") if [[ "$sshCheck" == "0" ]]; then ret="fail" break fi done done echo $ret If the result is not "pass", this is a finding.
Fix: F-72370r1131193_fix
Configure the macOS system to limit SSH to FIPS-compliant connections with the following command: if [ -f /etc/ssh/crypto.conf ] && /usr/bin/grep -q "Include /etc/ssh/crypto.conf" /etc/ssh/ssh_config.d/100-macos.conf 2>/dev/null; then /bin/ln -fs /etc/ssh/crypto/fips.conf /etc/ssh/crypto.conf fi include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/ssh_config | /usr/bin/tr -d '*') fips_ssh_config=("Ciphers aes128-gcm@openssh.com" "HostbasedAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com" "HostKeyAlgorithms ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com" "KexAlgorithms ecdh-sha2-nistp256" "MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-256" "PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" "CASignatureAlgorithms ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com") for ssh_config in $fips_ssh_config; do ssh_setting=$(echo $ssh_config | /usr/bin/cut -d " " -f1) /usr/bin/grep -qEi "^$ssh_setting" "${include_dir}01-mscp-ssh.conf" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/" "${include_dir}01-mscp-ssh.conf" || echo "$ssh_config" >> "${include_dir}01-mscp-ssh.conf" for u in $(/usr/bin/dscl . list /users shell | /usr/bin/egrep -v '(^_)|(root)|(/usr/bin/false)' | /usr/bin/awk '{print $1}'); do config=$(/usr/bin/sudo -u $u /usr/bin/ssh -Gv . 2>&1) configfiles=$(echo "$config" | /usr/bin/awk '/Reading configuration data/ {print $NF}'| /usr/bin/tr -d '\r') configarray=( ${(f)configfiles} ) if ! echo $config | /usr/bin/grep -q -i "$ssh_config" ; then for c in $configarray; do if [[ "$c" == "/etc/ssh/crypto.conf" ]]; then continue fi /usr/bin/sudo -u $u /usr/bin/grep -qEi "^$ssh_setting" "$c" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/I" "$c" if [[ "$c" =~ ".ssh/config" ]]; then if /usr/bin/grep -qEi "$ssh_setting" "$c" 2> /dev/null; then old_file=$(cat ~$u/.ssh/config) echo "$ssh_config" > ~$u/.ssh/config echo "$old_file" >> ~$u/.ssh/config fi fi done fi done done
- RMF Control
- AC-7
- Severity
- M
- CCI
- CCI-000044
- Version
- APPL-15-000060
- Vuln IDs
-
- V-268440
- Rule IDs
-
- SV-268440r1131197_rule
Checks: C-72470r1131195_chk
Verify the macOS system is configured to set account lockout time to 15 minutes with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="autoEnableInSeconds"]/following-sibling::integer[1]/text()' - | /usr/bin/awk '{ if ($1/60 >= 15 ) {print "yes"} else {print "no"}}' | /usr/bin/uniq If the result is not "yes", this is a finding.
Fix: F-72371r1131196_fix
Configure the macOS system to set account lockout time to 15 minutes by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000057
- Version
- APPL-15-000070
- Vuln IDs
-
- V-268441
- Rule IDs
-
- SV-268441r1131199_rule
Checks: C-72471r1131198_chk
Verify the macOS system is configured to initiate the screen saver timeout after 15 minutes of inactivity with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let timeout = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.screensaver')\ .objectForKey('idleTime')) if ( timeout <= 900 ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72372r1034262_fix
Configure the macOS system to initiate the screen saver after 15 minutes of inactivity by installing the "com.apple.screensaver" configuration profile.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- APPL-15-000090
- Vuln IDs
-
- V-268442
- Rule IDs
-
- SV-268442r1131200_rule
Checks: C-72472r1034264_chk
Verify the macOS system is configured to disable login to other users' active and locked sessions with the following command: /usr/bin/security authorizationdb read system.login.screensaver 2>&1 | /usr/bin/grep -c '<string>authenticate-session-owner</string>' If the result is not "1", this is a finding.
Fix: F-72373r1034265_fix
Configure the macOS system to disable login to other users' active and locked sessions with the following command: /usr/bin/security authorizationdb write system.login.screensaver "authenticate-session-owner"
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- APPL-15-000100
- Vuln IDs
-
- V-268443
- Rule IDs
-
- SV-268443r1034269_rule
Checks: C-72473r1034267_chk
Verify the macOS system is configured to disable root login with the following command: /usr/bin/dscl . -read /Users/root UserShell 2>&1 | /usr/bin/grep -c "/usr/bin/false" If the result is not "1", this is a finding.
Fix: F-72374r1034268_fix
Configure the macOS system to disable root login with the following command: /usr/bin/dscl . -create /Users/root UserShell /usr/bin/false
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000110
- Vuln IDs
-
- V-268444
- Rule IDs
-
- SV-268444r1131203_rule
Checks: C-72474r1131201_chk
Verify the macOS system is configured to set the SSH ServerAliveInterval to 900 with the following command: ret="pass" for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do sshCheck=$(/usr/bin/sudo -u $u /usr/bin/ssh -G . | /usr/bin/grep -c "^serveraliveinterval 900") if [[ "$sshCheck" == "0" ]]; then ret="fail" break fi done /bin/echo $ret If the result is not "pass", this is a finding.
Fix: F-72375r1131202_fix
Configure the macOS system to set the SSH ServerAliveInterval to 900 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/ssh_config | /usr/bin/tr -d '*') ssh_config_string=("ServerAliveInterval 900") for ssh_config in $ssh_config_string; do ssh_setting=$(echo $ssh_config | /usr/bin/cut -d " " -f1) /usr/bin/grep -qEi "^$ssh_setting" "${include_dir}01-mscp-ssh.conf" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/" "${include_dir}01-mscp-ssh.conf" || echo "$ssh_config" >> "${include_dir}01-mscp-ssh.conf" for u in $(/usr/bin/dscl . list /users shell | /usr/bin/egrep -v '(^_)|(root)|(/usr/bin/false)' | /usr/bin/awk '{print $1}'); do config=$(/usr/bin/sudo -u $u /usr/bin/ssh -Gv . 2>&1) configfiles=$(echo "$config" | /usr/bin/awk '/Reading configuration data/ {print $NF}'| /usr/bin/tr -d '\r') configarray=( ${(f)configfiles} ) if ! echo $config | /usr/bin/grep -q -i "$ssh_config" ; then for c in $configarray; do if [[ "$c" == "/etc/ssh/crypto.conf" ]]; then continue fi /usr/bin/sudo -u $u /usr/bin/grep -qEi "^$ssh_setting" "$c" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/I" "$c" if [[ "$c" =~ ".ssh/config" ]]; then if /usr/bin/grep -qEi "$ssh_setting" "$c" 2> /dev/null; then old_file=$(cat ~$u/.ssh/config) echo "$ssh_config" > ~$u/.ssh/config echo "$old_file" >> ~$u/.ssh/config fi fi done fi done done
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000120
- Vuln IDs
-
- V-268445
- Rule IDs
-
- SV-268445r1034275_rule
Checks: C-72475r1034273_chk
Verify the macOS system is configured to set the SSHD Channel Timeout to 900 with the following command: /usr/sbin/sshd -G | /usr/bin/awk -F "=" '/channeltimeout session:*/{print $2}' If the result is not "900", this is a finding.
Fix: F-72376r1034274_fix
Configure the macOS system to set the SSHD ChannelTimeout to 900 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'channeltimeout session:*=900' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "channeltimeout session:*=900" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000130
- Vuln IDs
-
- V-268446
- Rule IDs
-
- SV-268446r1034278_rule
Checks: C-72476r1034276_chk
Verify the macOS system is configured to set the SSHD unused connection timeout to 900 with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/unusedconnectiontimeout/{print $2}' If the result is not "900", this is a finding.
Fix: F-72377r1034277_fix
Configure the macOS system to set the SSHD unused connection timeout to 900 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'unusedconnectiontimeout 900' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "unusedconnectiontimeout 900" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- SC-10
- Severity
- M
- CCI
- CCI-001133
- Version
- APPL-15-000140
- Vuln IDs
-
- V-268447
- Rule IDs
-
- SV-268447r1131206_rule
Checks: C-72477r1131204_chk
Verify the macOS system is configured to set SSH Active Server Alive Maximum to 0 with the following command: ret="pass" for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do sshCheck=$(/usr/bin/sudo -u $u /usr/bin/ssh -G . | /usr/bin/grep -c "^serveralivecountmax 0") if [[ "$sshCheck" == "0" ]]; then ret="fail" break fi done /bin/echo $ret If the result is not "pass", this is a finding.
Fix: F-72378r1131205_fix
Configure the macOS system to set SSH Active Server Alive Maximum to 0 with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/ssh_config | /usr/bin/tr -d '*') ssh_config=("ServerAliveCountMax 0") ssh_setting=$(echo $ssh_config | /usr/bin/cut -d " " -f1) /usr/bin/grep -qEi "^$ssh_setting" "${include_dir}01-mscp-ssh.conf" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/" "${include_dir}01-mscp-ssh.conf" || echo "$ssh_config" >> "${include_dir}01-mscp-ssh.conf" for u in $(/usr/bin/dscl . list /users shell | /usr/bin/egrep -v '(^_)|(root)|(/usr/bin/false)' | /usr/bin/awk '{print $1}'); do config=$(/usr/bin/sudo -u $u /usr/bin/ssh -Gv . 2>&1) configfiles=$(echo "$config" | /usr/bin/awk '/Reading configuration data/ {print $NF}'| /usr/bin/tr -d '\r') configarray=( ${(f)configfiles} ) if ! echo $config | /usr/bin/grep -q -i "$ssh_config" ; then for c in $configarray; do if [[ "$c" == "/etc/ssh/crypto.conf" ]]; then continue fi /usr/bin/sudo -u $u /usr/bin/grep -qEi "^$ssh_setting" "$c" && /usr/bin/sed -i "" "s/^$ssh_setting.*/${ssh_config}/I" "$c" if [[ "$c" =~ ".ssh/config" ]]; then if /usr/bin/grep -qEi "$ssh_setting" "$c" 2> /dev/null; then old_file=$(cat ~$u/.ssh/config) echo "$ssh_config" > ~$u/.ssh/config echo "$old_file" >> ~$u/.ssh/config fi fi done fi done
- RMF Control
- AC-12
- Severity
- M
- CCI
- CCI-002361
- Version
- APPL-15-000160
- Vuln IDs
-
- V-268448
- Rule IDs
-
- SV-268448r1034284_rule
Checks: C-72478r1034282_chk
Verify the macOS system is configured to enforce auto logout after 86400 seconds of inactivity with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('.GlobalPreferences')\ .objectForKey('com.apple.autologout.AutoLogOutDelay').js EOS If the result is not "86400", this is a finding.
Fix: F-72379r1034283_fix
Configure the macOS system to enforce auto logout after 86400 seconds of inactivity by installing the "com.apple.GlobalPreferences" configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004923
- Version
- APPL-15-000170
- Vuln IDs
-
- V-268449
- Rule IDs
-
- SV-268449r1038944_rule
Checks: C-72479r1034285_chk
Verify the macOS system is configured to use an authorized time server with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('timeServer').js EOS If the result is not an authoritative time server that is synchronized with redundant USNO time servers as designated for the appropriate DOD network, this is a finding.
Fix: F-72380r1034286_fix
Configure the macOS system to use an authorized time server by installing the "com.apple.MCX" configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004923
- Version
- APPL-15-000180
- Vuln IDs
-
- V-268450
- Rule IDs
-
- SV-268450r1038944_rule
Checks: C-72480r1034288_chk
Verify the macOS system is configured to enable the time synchronization daemon with the following command: /bin/launchctl list | /usr/bin/grep -c com.apple.timed If the result is not "1", this is a finding.
Fix: F-72381r1034289_fix
Configure the macOS system to enable the time synchronization daemon with the following command: /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.timed.plist NOTE: The service "timed" cannot be unloaded or loaded while System Integrity Protection (SIP) is enabled.
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000172
- Version
- APPL-15-000190
- Vuln IDs
-
- V-268451
- Rule IDs
-
- SV-268451r1131208_rule
Checks: C-72481r1034291_chk
Verify the macOS system is configured to log privilege escalation with the following command: /usr/bin/sudo /usr/bin/sudo -V | /usr/bin/grep -c "Log when a command is allowed by sudoers" If the result is not "1", this is a finding.
Fix: F-72382r1131207_fix
Configure the macOS system to log privilege escalation with the following command: /usr/bin/find /etc/sudoers* -type f -exec sed -i '' '/^Defaults[[:blank:]]*\!log_allowed/s/^/# /' '{}' \; /bin/echo "Defaults log_allowed" >> /etc/sudoers.d/mscp
- RMF Control
- AC-2
- Severity
- M
- CCI
- CCI-000018
- Version
- APPL-15-001001
- Vuln IDs
-
- V-268452
- Rule IDs
-
- SV-268452r1131210_rule
Checks: C-72482r1131209_chk
Verify the macOS system is configured to audit privileged access with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec 'ad' If the result is not "1", this is a finding.
Fix: F-72383r1034295_fix
Configure the macOS system to audit privileged access with the following command: /usr/bin/grep -qE "^flags.*[^-]ad" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,ad/' /etc/security/audit_control; /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.
- RMF Control
- AC-17
- Severity
- M
- CCI
- CCI-000067
- Version
- APPL-15-001002
- Vuln IDs
-
- V-268453
- Rule IDs
-
- SV-268453r1034299_rule
Checks: C-72483r1034297_chk
Verify the macOS system is configured to audit all login and logout events with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '^lo' If the result is not "1", this is a finding.
Fix: F-72384r1034298_fix
Configure the macOS system to audit all login and logout events with the following command: /usr/bin/grep -qE "^flags.*[^-]lo" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,lo/' /etc/security/audit_control; /usr/sbin/audit -s A text editor may also be used to implement the required updates to the "/etc/security/audit_control" file.
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000130
- Version
- APPL-15-001003
- Vuln IDs
-
- V-268454
- Rule IDs
-
- SV-268454r1034302_rule
Checks: C-72484r1034300_chk
Verify the macOS system is configured to enable the auditd service with the following command: LAUNCHD_RUNNING=$(/bin/launchctl list | /usr/bin/grep -c com.apple.auditd) AUDITD_RUNNING=$(/usr/sbin/audit -c | /usr/bin/grep -c "AUC_AUDITING") if [[ $LAUNCHD_RUNNING == 1 ]] && [[ -e /etc/security/audit_control ]] && [[ $AUDITD_RUNNING == 1 ]]; then echo "pass" else echo "fail" fi If the result is not "pass", this is a finding.
Fix: F-72385r1034301_fix
Configure the macOS system to enable the auditd service with the following command: if [[ ! -e /etc/security/audit_control ]] && [[ -e /etc/security/audit_control.example ]];then /bin/cp /etc/security/audit_control.example /etc/security/audit_control fi /bin/launchctl enable system/com.apple.auditd /bin/launchctl bootstrap system /System/Library/LaunchDaemons/com.apple.auditd.plist /usr/sbin/audit -i
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- APPL-15-001010
- Vuln IDs
-
- V-268455
- Rule IDs
-
- SV-268455r1038966_rule
Checks: C-72485r1034303_chk
Verify the macOS system is configured to shut down upon audit failure with the following command: /usr/bin/awk -F':' '/^policy/ {print $NF}' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec 'ahlt' If the result is not "1", this is a finding.
Fix: F-72386r1034304_fix
Configure the macOS system to shut down upon audit failure with the following command: /usr/bin/sed -i.bak 's/^policy.*/policy: ahlt,argv/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001012
- Vuln IDs
-
- V-268456
- Rule IDs
-
- SV-268456r1034308_rule
Checks: C-72486r1034306_chk
Verify the macOS system is configured with audit log files owned by root with the following command: /bin/ls -n $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{s+=$3} END {print s}' If the result is not "0", this is a finding.
Fix: F-72387r1034307_fix
Configure the macOS system with audit log files owned by root with the following command: /usr/sbin/chown -R root /var/audit/*
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001013
- Vuln IDs
-
- V-268457
- Rule IDs
-
- SV-268457r1034311_rule
Checks: C-72487r1034309_chk
Verify the macOS system is configured with audit log folders owned by root with the following command: /bin/ls -dn $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{print $3}' If the result is not "0", this is a finding.
Fix: F-72388r1034310_fix
Configure the macOS system with audit log folders owned by root with the following command: /usr/sbin/chown root /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001014
- Vuln IDs
-
- V-268458
- Rule IDs
-
- SV-268458r1034314_rule
Checks: C-72488r1034312_chk
Verify the macOS system is configured with audit log files group-owned by wheel with the following command: /bin/ls -n $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{s+=$4} END {print s}' If the result is not "0", this is a finding.
Fix: F-72389r1034313_fix
Configure the macOS system with audit log files group-owned by wheel with the following command: /usr/bin/chgrp -R wheel /var/audit/*
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001015
- Vuln IDs
-
- V-268459
- Rule IDs
-
- SV-268459r1034317_rule
Checks: C-72489r1034315_chk
Verify the macOS system is configured with audit log folders group-owned by wheel with the following command: /bin/ls -dn $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '{print $4}' If the result is not "0", this is a finding.
Fix: F-72390r1034316_fix
Configure the macOS system with audit log folders group-owned by wheel with the following command: /usr/bin/chgrp wheel /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001016
- Vuln IDs
-
- V-268460
- Rule IDs
-
- SV-268460r1034320_rule
Checks: C-72490r1034318_chk
Verify the macOS system is configured with audit log files set to mode 440 or less with the following command: /bin/ls -l $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') | /usr/bin/awk '!/-r--r-----|current|total/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-72391r1034319_fix
Configure the macOS system with audit log files set to mode 440 with the following command: /bin/chmod 440 /var/audit/*
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001017
- Vuln IDs
-
- V-268461
- Rule IDs
-
- SV-268461r1034323_rule
Checks: C-72491r1034321_chk
Verify the macOS system is configured with audit log folders set to mode 700 or less permissive with the following command: /usr/bin/stat -f %A $(/usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') If the result is not a mode of 700 or less permissive, this is a finding.
Fix: F-72392r1034322_fix
Configure the macOS system with audit log folders set to mode 700 with the following command: /bin/chmod 700 /var/audit
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001020
- Vuln IDs
-
- V-268462
- Rule IDs
-
- SV-268462r1034326_rule
Checks: C-72492r1034324_chk
Verify the macOS system is configured to audit all deletions of object attributes with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-fd' If the result is not "1", this is a finding.
Fix: F-72393r1034325_fix
Configure the macOS system to audit all deletions of object attributes with the following command: /usr/bin/grep -qE "^flags.*-fd" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-fd/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001021
- Vuln IDs
-
- V-268463
- Rule IDs
-
- SV-268463r1034329_rule
Checks: C-72493r1034327_chk
Verify the macOS system is configured to audit all changes of object attributes with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '^fm' If the result is not "1", this is a finding.
Fix: F-72394r1034328_fix
Configure the macOS system to audit all changes of object attributes with the following command: /usr/bin/grep -qE "^flags.*fm" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,fm/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001022
- Vuln IDs
-
- V-268464
- Rule IDs
-
- SV-268464r1034332_rule
Checks: C-72494r1034330_chk
Verify the macOS system is configured to audit all failed read actions on the system with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-fr' If the result is not "1", this is a finding.
Fix: F-72395r1034331_fix
Configure the macOS system to audit all failed read actions on the system with the following command: /usr/bin/grep -qE "^flags.*-fr" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-fr/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001023
- Vuln IDs
-
- V-268465
- Rule IDs
-
- SV-268465r1034335_rule
Checks: C-72495r1034333_chk
Verify the macOS system is configured to audit all failed write actions on the system with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-fw' If the result is not "1", this is a finding.
Fix: F-72396r1034334_fix
Configure the macOS system to audit all failed write actions on the system with the following command: /usr/bin/grep -qE "^flags.*-fw" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-fw/' /etc/security/audit_control;/usr/sbin/audit -s
- RMF Control
- AU-4
- Severity
- L
- CCI
- CCI-001849
- Version
- APPL-15-001029
- Vuln IDs
-
- V-268467
- Rule IDs
-
- SV-268467r1034341_rule
Checks: C-72497r1034339_chk
Verify the macOS system is configured to set audit retention to seven days with the following command: /usr/bin/awk -F: '/expire-after/{print $2}' /etc/security/audit_control If the result is not "7d", this is a finding.
Fix: F-72398r1034340_fix
Configure the macOS system to set audit retention to seven days with the following command: /usr/bin/sed -i.bak 's/^expire-after.*/expire-after:7d/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000139
- Version
- APPL-15-001030
- Vuln IDs
-
- V-268468
- Rule IDs
-
- SV-268468r1034344_rule
Checks: C-72498r1034342_chk
Verify the macOS system is configured to require a minimum of 25 percent free disk space for audit record storage with the following command: /usr/bin/awk -F: '/^minfree/{print $2}' /etc/security/audit_control If the result is not "25", this is a finding.
Fix: F-72399r1034343_fix
Configure the macOS system to require a minimum of 25 percent free disk space for audit record storage with the following command: /usr/bin/sed -i.bak 's/.*minfree.*/minfree:25/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- APPL-15-001031
- Vuln IDs
-
- V-268469
- Rule IDs
-
- SV-268469r1038966_rule
Checks: C-72499r1034345_chk
Verify the macOS system is configured to produce audit failure notification with the following command: /usr/bin/grep -c "logger -s -p" /etc/security/audit_warn If the result is not "1", this is a finding.
Fix: F-72400r1034346_fix
Configure the macOS system to produce audit failure notification with the following command: /usr/bin/sed -i.bak 's/logger -p/logger -s -p/' /etc/security/audit_warn; /usr/sbin/audit -s
- RMF Control
- Severity
- M
- CCI
- CCI-003938
- Version
- APPL-15-001044
- Vuln IDs
-
- V-268470
- Rule IDs
-
- SV-268470r1034350_rule
Checks: C-72500r1034348_chk
Verify the macOS system is configured to audit login events with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec 'aa' If the result is not "1", this is a finding.
Fix: F-72401r1034349_fix
Configure the macOS system to audit login events with the following command: /usr/bin/grep -qE "^flags.*[^-]aa" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,aa/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000185
- Version
- APPL-15-001060
- Vuln IDs
-
- V-268471
- Rule IDs
-
- SV-268471r1034353_rule
Checks: C-72501r1034351_chk
Verify the macOS system is configured to check the revocation status of user certificates with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('checkCertificateTrust').js EOS If the result is not "2", this is a finding.
Fix: F-72402r1034352_fix
Configure the macOS system to check the revocation status of user certificates by installing the "com.apple.security.smartcard" configuration profile. NOTE: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004045
- Version
- APPL-15-001100
- Vuln IDs
-
- V-268472
- Rule IDs
-
- SV-268472r1034356_rule
Checks: C-72502r1034354_chk
Verify the macOS system is configured to disable root login for SSH with the following command: /usr/sbin/sshd -G | /usr/bin/awk '/permitrootlogin/{print $2}' If the result is not "no", this is a finding.
Fix: F-72403r1034355_fix
Configure the macOS system to disable root login for SSH with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'permitrootlogin no' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "permitrootlogin no" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001110
- Vuln IDs
-
- V-268473
- Rule IDs
-
- SV-268473r1034359_rule
Checks: C-72503r1034357_chk
Verify the macOS system is configured with the audit_control group to wheel with the following command: /bin/ls -dn /etc/security/audit_control | /usr/bin/awk '{print $4}' If the result is not "0", this is a finding.
Fix: F-72404r1034358_fix
Configure the macOS system with the audit_control group to wheel with the following command: /usr/bin/chgrp wheel /etc/security/audit_control
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001120
- Vuln IDs
-
- V-268474
- Rule IDs
-
- SV-268474r1034362_rule
Checks: C-72504r1034360_chk
Verify the macOS system is configured with the audit_control owner to root with the following command: /bin/ls -dn /etc/security/audit_control | /usr/bin/awk '{print $3}' If the result is not "0", this is a finding.
Fix: F-72405r1034361_fix
Configure the macOS system with the audit_control owner to root with the following command: /usr/sbin/chown root /etc/security/audit_control
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001130
- Vuln IDs
-
- V-268475
- Rule IDs
-
- SV-268475r1034365_rule
Checks: C-72505r1034363_chk
Verify the macOS system is configured with the audit_control to mode 440 or less with the following command: /bin/ls -l /etc/security/audit_control | /usr/bin/awk '!/-r--[r-]-----|current|total/{print $1}' | /usr/bin/wc -l | /usr/bin/xargs If the result is not "0", this is a finding.
Fix: F-72406r1034364_fix
Configure the macOS system with the audit_control to mode 440 with the following command: /bin/chmod 440 /etc/security/audit_control
- RMF Control
- IA-5
- Severity
- H
- CCI
- CCI-000186
- Version
- APPL-15-001150
- Vuln IDs
-
- V-268477
- Rule IDs
-
- SV-268477r1034371_rule
Checks: C-72507r1034369_chk
Verify the macOS system is configured to disable password authentication for SSH with the following command: /usr/sbin/sshd -G | /usr/bin/grep -Ec '^(passwordauthentication\s+no|kbdinteractiveauthentication\s+no)' If the result is not "2", this is a finding.
Fix: F-72408r1034370_fix
Configure the macOS system to disable password authentication for SSH with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi echo "passwordauthentication no" >> "${include_dir}01-mscp-sshd.conf" echo "kbdinteractiveauthentication no" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002001
- Vuln IDs
-
- V-268478
- Rule IDs
-
- SV-268478r1117265_rule
Checks: C-72508r1034372_chk
Verify the macOS system is configured to disable SMB sharing with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.smbd" => disabled' If the result is not "1", this is a finding.
Fix: F-72409r1034373_fix
Configure the macOS system to disable SMB sharing with the following command: /bin/launchctl disable system/com.apple.smbd The system may need to be restarted for the update to take effect.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002003
- Vuln IDs
-
- V-268479
- Rule IDs
-
- SV-268479r1117265_rule
Checks: C-72509r1034375_chk
Verify the macOS system is configured to disable NFS service with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.nfsd" => disabled' If the result is not "1", this is a finding.
Fix: F-72410r1034376_fix
Configure the macOS system to disable NFS service with the following command: /bin/launchctl disable system/com.apple.nfsd The system may need to be restarted for the update to take effect.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002004
- Vuln IDs
-
- V-268480
- Rule IDs
-
- SV-268480r1034380_rule
Checks: C-72510r1034378_chk
Verify the macOS system is configured to disable Location Services with the following command: /usr/bin/sudo -u _locationd /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.locationd')\ .objectForKey('LocationServicesEnabled').js EOS If the result is not "false", this is a finding.
Fix: F-72411r1034379_fix
Configure the macOS system to disable Location Services with the following command: /usr/bin/defaults write /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd LocationServicesEnabled -bool false; pid=$(/bin/launchctl list | /usr/bin/awk '/com.apple.locationd/ { print $1 }') kill -9 $pid
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002005
- Vuln IDs
-
- V-268481
- Rule IDs
-
- SV-268481r1034383_rule
Checks: C-72511r1034381_chk
Verify the macOS system is configured to disable Bonjour multicast with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.mDNSResponder')\ .objectForKey('NoMulticastAdvertisements').js EOS If the result is not "true", this is a finding.
Fix: F-72412r1034382_fix
Configure the macOS system to disable Bonjour multicast by installing the "com.apple.mDNSResponder" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002006
- Vuln IDs
-
- V-268482
- Rule IDs
-
- SV-268482r1117265_rule
Checks: C-72512r1034384_chk
Verify the macOS system is configured to disable UUCP service with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.uucp" => disabled' If the result is not "1", this is a finding.
Fix: F-72413r1034385_fix
Configure the macOS system to disable UUCP service with the following command: /bin/launchctl disable system/com.apple.uucp The system may need to be restarted for the update to take effect.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002007
- Vuln IDs
-
- V-268483
- Rule IDs
-
- SV-268483r1034389_rule
Checks: C-72513r1034387_chk
Verify the macOS system is configured to disable Internet Sharing with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('forceInternetSharingOff').js EOS If the result is not "true", this is a finding.
Fix: F-72414r1034388_fix
Configure the macOS system to disable Internet Sharing by installing the "com.apple.MCX" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002008
- Vuln IDs
-
- V-268484
- Rule IDs
-
- SV-268484r1117265_rule
Checks: C-72514r1034390_chk
Verify the macOS system is configured to disable the built-in web server with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"org.apache.httpd" => disabled' If the result is not "1", this is a finding.
Fix: F-72415r1034391_fix
Configure the macOS system to disable the built-in web server with the following command: /bin/launchctl disable system/org.apache.httpd The system may need to be restarted for the update to take effect.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002009
- Vuln IDs
-
- V-268485
- Rule IDs
-
- SV-268485r1117265_rule
Checks: C-72515r1034393_chk
Verify the macOS system is configured to disable AirDrop with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAirDrop').js EOS If the result is not "false", this is a finding.
Fix: F-72416r1034394_fix
Configure the macOS system to disable AirDrop by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002010
- Vuln IDs
-
- V-268486
- Rule IDs
-
- SV-268486r1034398_rule
Checks: C-72516r1034396_chk
Verify the macOS system is configured to disable FaceTime.app with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('familyControlsEnabled')) let pathlist = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('pathBlackList').js for ( let app in pathlist ) { if ( ObjC.unwrap(pathlist[app]) == "/Applications/FaceTime.app" && pref1 == true ){ return("true") } } return("false") } EOS If the result is not "true", this is a finding.
Fix: F-72417r1034397_fix
Configure the macOS system to disable FaceTime.app by installing the "com.apple.applicationaccess.new" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002012
- Vuln IDs
-
- V-268487
- Rule IDs
-
- SV-268487r1034401_rule
Checks: C-72517r1034399_chk
Verify the macOS system is configured to disable iCloud Calendar services with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudCalendar').js EOS If the result is not "false", this is a finding.
Fix: F-72418r1034400_fix
Configure the macOS system to disable iCloud Calendar services by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002013
- Vuln IDs
-
- V-268488
- Rule IDs
-
- SV-268488r1034404_rule
Checks: C-72518r1034402_chk
Verify the macOS system is configured to disable iCloud Reminders with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudReminders').js EOS If the result is not "false", this is a finding.
Fix: F-72419r1034403_fix
Configure the macOS system to disable iCloud Reminders by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002014
- Vuln IDs
-
- V-268489
- Rule IDs
-
- SV-268489r1034407_rule
Checks: C-72519r1034405_chk
Verify the macOS system is configured to disable iCloud Address Book with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudAddressBook').js EOS If the result is not "false", this is a finding.
Fix: F-72420r1034406_fix
Configure the macOS system to disable iCloud Address Book by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002015
- Vuln IDs
-
- V-268490
- Rule IDs
-
- SV-268490r1034410_rule
Checks: C-72520r1034408_chk
Verify the macOS system is configured to disable iCloud Mail with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudMail').js EOS If the result is not "false", this is a finding.
Fix: F-72421r1034409_fix
Configure the macOS system to disable iCloud Mail by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002016
- Vuln IDs
-
- V-268491
- Rule IDs
-
- SV-268491r1034413_rule
Checks: C-72521r1034411_chk
Verify the macOS system is configured to disable iCloud Notes with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudNotes').js EOS If the result is not "false", this is a finding.
Fix: F-72422r1034412_fix
Configure the macOS system to disable iCloud Notes by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002017
- Vuln IDs
-
- V-268492
- Rule IDs
-
- SV-268492r1034416_rule
Checks: C-72522r1034414_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 authorizing official (AO) decision. This requirement is not applicable to dedicated video teleconference (VTC) suites 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, verify the macOS system is configured to disable the camera with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCamera').js EOS If the result is not "false", this is a finding.
Fix: F-72423r1034415_fix
Configure the macOS system to disable the camera by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002020
- Vuln IDs
-
- V-268493
- Rule IDs
-
- SV-268493r1034419_rule
Checks: C-72523r1034417_chk
Verify the macOS system is configured to disable Siri with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAssistant').js EOS If the result is not "false", this is a finding.
Fix: F-72424r1034418_fix
Configure the macOS system to disable Siri by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-15-002021
- Vuln IDs
-
- V-268494
- Rule IDs
-
- SV-268494r1131212_rule
Checks: C-72524r1034420_chk
Verify the macOS system is configured to disable sending diagnostic and usage data to Apple with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SubmitDiagInfo')\ .objectForKey('AutoSubmit').js let pref2 = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowDiagnosticSubmission').js if ( pref1 == false && pref2 == false ){ return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72425r1131211_fix
Configure the macOS system to disable sending diagnostic and usage data to Apple by installing the "com.apple.SubmitDiagInfo" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002022
- Vuln IDs
-
- V-268495
- Rule IDs
-
- SV-268495r1117265_rule
Checks: C-72525r1034423_chk
Verify the macOS system is configured to disable Remote Apple Events with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.AEServer" => disabled' If the result is not "1", this is a finding.
Fix: F-72426r1034424_fix
Configure the macOS system to disable Remote Apple Events with the following commands: /usr/sbin/systemsetup -setremoteappleevents off /bin/launchctl disable system/com.apple.AEServer NOTE: Systemsetup with -setremoteappleevents flag will fail unless Full Disk Access to systemsetup or its parent process is granted. This requires supervision.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002035
- Vuln IDs
-
- V-268496
- Rule IDs
-
- SV-268496r1034428_rule
Checks: C-72526r1034426_chk
Verify the macOS system is configured to disable Apple ID setup during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipCloudSetup').js EOS If the result is not "true", this is a finding.
Fix: F-72427r1034427_fix
Configure the macOS system to disable Apple ID setup during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002036
- Vuln IDs
-
- V-268497
- Rule IDs
-
- SV-268497r1034431_rule
Checks: C-72527r1034429_chk
Verify the macOS system is configured to disable Privacy Setup services during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipPrivacySetup').js EOS If the result is not "true", this is a finding.
Fix: F-72428r1034430_fix
Configure the macOS system to disable Privacy Setup services during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002037
- Vuln IDs
-
- V-268498
- Rule IDs
-
- SV-268498r1034434_rule
Checks: C-72528r1034432_chk
Verify the macOS system is configured to disable iCloud storage setup during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipiCloudStorageSetup').js EOS If the result is not "true", this is a finding.
Fix: F-72429r1034433_fix
Configure the macOS system to disable iCloud storage setup during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- IA-5
- Severity
- H
- CCI
- CCI-000197
- Version
- APPL-15-002038
- Vuln IDs
-
- V-268499
- Rule IDs
-
- SV-268499r1034437_rule
Checks: C-72529r1034435_chk
Verify the macOS system is configured to disable TFTP service with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.tftpd" => disabled' If the result is not "1", this is a finding.
Fix: F-72430r1034436_fix
Configure the macOS system to disable TFTP service with the following command: /bin/launchctl disable system/com.apple.tftpd The system may need to be restarted for the update to take effect.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002039
- Vuln IDs
-
- V-268500
- Rule IDs
-
- SV-268500r1034440_rule
Checks: C-72530r1034438_chk
Verify the macOS system is configured to disable Siri Setup during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipSiriSetup').js EOS If the result is not "true", this is a finding.
Fix: F-72431r1034439_fix
Configure the macOS system to disable Siri Setup during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002040
- Vuln IDs
-
- V-268501
- Rule IDs
-
- SV-268501r1034443_rule
Checks: C-72531r1034441_chk
Verify the macOS system is configured to disable iCloud Keychain Sync with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudKeychainSync').js EOS If the result is not "false", this is a finding.
Fix: F-72432r1034442_fix
Configure the macOS system to disable iCloud Keychain Sync by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002041
- Vuln IDs
-
- V-268502
- Rule IDs
-
- SV-268502r1034446_rule
Checks: C-72532r1034444_chk
Verify the macOS system is configured to disable iCloud Document Sync with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudDocumentSync').js EOS If the result is not "false", this is a finding.
Fix: F-72433r1034445_fix
Configure the macOS system to disable iCloud Document Sync by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002042
- Vuln IDs
-
- V-268503
- Rule IDs
-
- SV-268503r1034449_rule
Checks: C-72533r1034447_chk
Verify the macOS system is configured to disable iCloud Bookmarks with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudBookmarks').js EOS If the result is not "false", this is a finding.
Fix: F-72434r1034448_fix
Configure the macOS system to disable iCloud Bookmarks by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002043
- Vuln IDs
-
- V-268504
- Rule IDs
-
- SV-268504r1034452_rule
Checks: C-72534r1034450_chk
Verify the macOS system is configured to disable the iCloud Photo Library with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudPhotoLibrary').js EOS If the result is not "false", this is a finding.
Fix: F-72435r1034451_fix
Configure the macOS system to disable the iCloud Photo Library by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002050
- Vuln IDs
-
- V-268505
- Rule IDs
-
- SV-268505r1117265_rule
Checks: C-72535r1034453_chk
Verify the macOS system is configured to disable Screen Sharing and Apple Remote Desktop with the following command: /bin/launchctl print-disabled system | /usr/bin/grep -c '"com.apple.screensharing" => disabled' If the result is not "1", this is a finding.
Fix: F-72436r1034454_fix
Configure the macOS system to disable Screen Sharing and Apple Remote Desktop with the following command: /bin/launchctl disable system/com.apple.screensharing The system may need to be restarted for the update to take effect. NOTE: This will apply to the whole system.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002052
- Vuln IDs
-
- V-268506
- Rule IDs
-
- SV-268506r1034458_rule
Checks: C-72536r1034456_chk
Verify the macOS system is configured to disable the System Settings pane for Wallet and Apple Pay with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c "com.apple.WalletSettingsExtension" If the result is not "1", this is a finding.
Fix: F-72437r1034457_fix
Configure the macOS system to disable the System Settings pane for Wallet and Apple Pay by installing the "com.apple.systempreferences" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002053
- Vuln IDs
-
- V-268507
- Rule IDs
-
- SV-268507r1034461_rule
Checks: C-72537r1034459_chk
Verify the macOS system is configured to disable the system settings pane for Siri with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c com.apple.Siri-Settings.extension If the result is not "1", this is a finding.
Fix: F-72438r1034460_fix
Configure the macOS system to disable the system settings pane for Siri by installing the "com.apple.systempreferences" configuration profile.
- RMF Control
- Severity
- H
- CCI
- CCI-003992
- Version
- APPL-15-002060
- Vuln IDs
-
- V-268508
- Rule IDs
-
- SV-268508r1131219_rule
Checks: C-72538r1131217_chk
Verify the macOS system is configured to apply gatekeeper settings to block applications from unidentified developers with the following commands: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.systempolicy.control')\ .objectForKey('AllowIdentifiedDevelopers')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.systempolicy.control')\ .objectForKey('EnableAssessment')) if ( pref1 == true && pref2 == true ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72439r1131218_fix
Configure the macOS system to apply gatekeeper settings to block applications from unidentified developers by installing the "com.apple.systempolicy.control" configuration profile.
- RMF Control
- SC-8
- Severity
- H
- CCI
- CCI-002418
- Version
- APPL-15-002062
- Vuln IDs
-
- V-268509
- Rule IDs
-
- SV-268509r1034467_rule
Checks: C-72539r1034465_chk
Verify the macOS system is configured to disable Bluetooth with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCXBluetooth')\ .objectForKey('DisableBluetooth').js EOS If the result is not "true", this is a finding.
Fix: F-72440r1034466_fix
Configure the macOS system to disable Bluetooth by installing the "com.apple.MCXBluetooth" configuration profile.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001813
- Version
- APPL-15-002063
- Vuln IDs
-
- V-268510
- Rule IDs
-
- SV-268510r1131221_rule
Checks: C-72540r1131220_chk
Verify the macOS system is configured to disable the guest account with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('DisableGuestAccount')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('EnableGuestAccount')) if ( pref1 == true && pref2 == false ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72441r1034469_fix
Configure the macOS system to disable the guest account by installing the "com.apple.MCX" configuration profile.
- RMF Control
- Severity
- H
- CCI
- CCI-003992
- Version
- APPL-15-002064
- Vuln IDs
-
- V-268511
- Rule IDs
-
- SV-268511r1131224_rule
Checks: C-72541r1131222_chk
Verify the macOS system is configured to enable gatekeeper with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.systempolicy.control')\ .objectForKey('EnableAssessment').js EOS If the result is not "true", this is a finding.
Fix: F-72442r1131223_fix
Configure the macOS system to enable gatekeeper by installing the "com.apple.systempolicy.control" configuration profile.
- RMF Control
- IA-2
- Severity
- H
- CCI
- CCI-000764
- Version
- APPL-15-002066
- Vuln IDs
-
- V-268512
- Rule IDs
-
- SV-268512r1034476_rule
Checks: C-72542r1034474_chk
Verify the macOS system is configured to disable unattended or automatic login to the system with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('com.apple.login.mcx.DisableAutoLoginClient').js EOS If the result is not "true", this is a finding.
Fix: F-72443r1034475_fix
Configure the macOS system to disable unattended or automatic login to the system by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-15-002068
- Vuln IDs
-
- V-268513
- Rule IDs
-
- SV-268513r1131226_rule
Checks: C-72543r1034477_chk
Verify the macOS system is configured so that permissions are set correctly on user home directories with the following command: /usr/bin/find /System/Volumes/Data/Users -mindepth 1 -maxdepth 1 -type d ! \( -perm 700 -o -perm 711 \) | /usr/bin/grep -v "Shared" | /usr/bin/grep -v "Guest" | /usr/bin/wc -l | /usr/bin/xargs If the result is not "0", this is a finding.
Fix: F-72444r1131225_fix
Configure the macOS system to set the appropriate permissions for each user on the system with the following command: IFS=$'\n' for userDirs in $( /usr/bin/find /System/Volumes/Data/Users -mindepth 1 -maxdepth 1 -type d ! \( -perm 700 -o -perm 711 \) | /usr/bin/grep -v "Shared" | /usr/bin/grep -v "Guest" ); do /bin/chmod og-rwx "$userDirs" done unset IFS
- RMF Control
- AC-6
- Severity
- H
- CCI
- CCI-002235
- Version
- APPL-15-002069
- Vuln IDs
-
- V-268514
- Rule IDs
-
- SV-268514r1131229_rule
Checks: C-72544r1131227_chk
Verify the macOS system is configured to require administrator privileges to modify systemwide settings with the following command: authDBs=("system.preferences" "system.preferences.energysaver" "system.preferences.network" "system.preferences.printing" "system.preferences.sharing" "system.preferences.softwareupdate" "system.preferences.startupdisk" "system.preferences.timemachine") result="1" for section in ${authDBs[@]}; do if [[ $(/usr/bin/security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath 'name(//*[contains(text(), "shared")]/following-sibling::*[1])' -) != "false" ]]; then result="0" fi if [[ $(security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath '//*[contains(text(), "group")]/following-sibling::*[1]/text()' - ) != "admin" ]]; then result="0" fi if [[ $(/usr/bin/security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath 'name(//*[contains(text(), "authenticate-user")]/following-sibling::*[1])' -) != "true" ]]; then result="0" fi if [[ $(/usr/bin/security -q authorizationdb read "$section" | /usr/bin/xmllint -xpath 'name(//*[contains(text(), "session-owner")]/following-sibling::*[1])' -) != "false" ]]; then result="0" fi done echo $result If the result is not "1", this is a finding.
Fix: F-72445r1131228_fix
Configure the macOS system to require administrator privileges to modify systemwide settings with the following command: authDBs=("system.preferences" "system.preferences.energysaver" "system.preferences.network" "system.preferences.printing" "system.preferences.sharing" "system.preferences.softwareupdate" "system.preferences.startupdisk" "system.preferences.timemachine") for section in ${authDBs[@]}; do /usr/bin/security -q authorizationdb read "$section" > "/tmp/$section.plist" class_key_value=$(usr/libexec/PlistBuddy -c "Print :class" "/tmp/$section.plist" 2>&1) if [[ "$class_key_value" == *"Does Not Exist"* ]]; then /usr/libexec/PlistBuddy -c "Add :class string user" "/tmp/$section.plist" else /usr/libexec/PlistBuddy -c "Set :class user" "/tmp/$section.plist" fi key_value=$(/usr/libexec/PlistBuddy -c "Print :shared" "/tmp/$section.plist" 2>&1) if [[ "$key_value" == *"Does Not Exist"* ]]; then /usr/libexec/PlistBuddy -c "Add :shared bool false" "/tmp/$section.plist" else /usr/libexec/PlistBuddy -c "Set :shared false" "/tmp/$section.plist" fi auth_user_key=$(/usr/libexec/PlistBuddy -c "Print :authenticate-user" "/tmp/$section.plist" 2>&1) if [[ "$auth_user_key" == *"Does Not Exist"* ]]; then /usr/libexec/PlistBuddy -c "Add :authenticate-user bool true" "/tmp/$section.plist" else /usr/libexec/PlistBuddy -c "Set :authenticate-user true" "/tmp/$section.plist" fi session_owner_key=$(/usr/libexec/PlistBuddy -c "Print :session-owner" "/tmp/$section.plist" 2>&1) if [[ "$session_owner_key" == *"Does Not Exist"* ]]; then /usr/libexec/PlistBuddy -c "Add :session-owner bool false" "/tmp/$section.plist" else /usr/libexec/PlistBuddy -c "Set :session-owner false" "/tmp/$section.plist" fi group_key=$(usr/libexec/PlistBuddy -c "Print :group" "/tmp/$section.plist" 2>&1) if [[ "$group_key" == *"Does Not Exist"* ]]; then /usr/libexec/PlistBuddy -c "Add :group string admin" "/tmp/$section.plist" else /usr/libexec/PlistBuddy -c "Set :group admin" "/tmp/$section.plist" fi /usr/bin/security -q authorizationdb write "$section" < "/tmp/$section.plist" done
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002080
- Vuln IDs
-
- V-268515
- Rule IDs
-
- SV-268515r1034485_rule
Checks: C-72545r1034483_chk
Verify the macOS system is configured to disable Airplay Receiver with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAirPlayIncomingRequests').js EOS If the result is not "false", this is a finding.
Fix: F-72446r1034484_fix
Configure the macOS system to disable Airplay Receiver by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-11
- Severity
- M
- CCI
- CCI-000056
- Version
- APPL-15-002090
- Vuln IDs
-
- V-268516
- Rule IDs
-
- SV-268516r1034488_rule
Checks: C-72546r1034486_chk
Verify the macOS system is configured to disable TouchID for unlocking the device with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowFingerprintForUnlock').js EOS If the result is not "false", this is a finding.
Fix: F-72447r1034487_fix
Configure the macOS system to disable TouchID for unlocking the device by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002100
- Vuln IDs
-
- V-268517
- Rule IDs
-
- SV-268517r1131231_rule
Checks: C-72547r1131230_chk
Verify the macOS system is configured to disable Media Sharing with the following commands: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowMediaSharing')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowMediaSharingModification')) if ( pref1 == false && pref2 == false ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72448r1034490_fix
Configure the macOS system to disable Media Sharing by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002110
- Vuln IDs
-
- V-268518
- Rule IDs
-
- SV-268518r1131234_rule
Checks: C-72548r1131232_chk
Verify the macOS system is configured to disable Bluetooth sharing with the following commands: CURRENT_USER=$( /usr/sbin/scutil <<< "show State:/Users/ConsoleUser" | /usr/bin/awk '/Name :/ && ! /loginwindow/ { print $3 }' ) /usr/bin/sudo -u "$CURRENT_USER" /usr/bin/defaults -currentHost read com.apple.Bluetooth PrefKeyServicesEnabled If the result is not "0", this is a finding.
Fix: F-72449r1131233_fix
Configure the macOS system to disable Bluetooth sharing with the following commands: CURRENT_USER=$( /usr/sbin/scutil <<< "show State:/Users/ConsoleUser" | /usr/bin/awk '/Name :/ && ! /loginwindow/ { print $3 }' ) /usr/bin/sudo -u "$CURRENT_USER" /usr/bin/defaults -currentHost write com.apple.Bluetooth PrefKeyServicesEnabled -bool false
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002120
- Vuln IDs
-
- V-268519
- Rule IDs
-
- SV-268519r1034497_rule
Checks: C-72549r1034495_chk
Verify the macOS system is configured to disable account modification with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowAccountModification').js EOS If the result is not "false", this is a finding.
Fix: F-72450r1034496_fix
Configure the macOS system to disable Account Modification by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002130
- Vuln IDs
-
- V-268520
- Rule IDs
-
- SV-268520r1034500_rule
Checks: C-72550r1034498_chk
Verify the macOS system is configured to disable CD/DVD Sharing with the following command: /usr/bin/pgrep -q ODSAgent; /bin/echo $? If the result is not "1", this is a finding.
Fix: F-72451r1034499_fix
Configure the macOS system to disable CD/DVD Sharing with the following command: /bin/launchctl unload /System/Library/LaunchDaemons/com.apple.ODSAgent.plist
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002140
- Vuln IDs
-
- V-268521
- Rule IDs
-
- SV-268521r1034503_rule
Checks: C-72551r1034501_chk
Verify the macOS system is configured to disable Content Caching service with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowContentCaching').js EOS If the result is not "false", this is a finding.
Fix: F-72452r1034502_fix
Configure the macOS system to disable Content Caching service by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002150
- Vuln IDs
-
- V-268522
- Rule IDs
-
- SV-268522r1034506_rule
Checks: C-72552r1034504_chk
Verify the macOS system is configured to disable iCloud Desktop and Document folder synchronization with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudDesktopAndDocuments').js EOS If the result is not "false", this is a finding.
Fix: F-72453r1034505_fix
Configure the macOS system to disable iCloud Desktop and Document folder synchronization by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002160
- Vuln IDs
-
- V-268523
- Rule IDs
-
- SV-268523r1034509_rule
Checks: C-72553r1034507_chk
Verify the macOS system is configured to disable iCloud Game Center with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowGameCenter').js EOS If the result is not "false", this is a finding.
Fix: F-72454r1034508_fix
Configure the macOS system to disable iCloud Game Center by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002170
- Vuln IDs
-
- V-268524
- Rule IDs
-
- SV-268524r1034512_rule
Checks: C-72554r1034510_chk
Verify the macOS system is configured to disable the iCloud Private Relay with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudPrivateRelay').js EOS If the result is not "false", this is a finding.
Fix: F-72455r1034511_fix
Configure the macOS system to disable the iCloud Private Relay by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002180
- Vuln IDs
-
- V-268525
- Rule IDs
-
- SV-268525r1131237_rule
Checks: C-72555r1131235_chk
Verify the macOS system is configured to disable Find My service with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowFindMyDevice')) let pref2 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowFindMyFriends')) let pref3 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.icloud.managed')\ .objectForKey('DisableFMMiCloudSetting')) if ( pref1 == false && pref2 == false && pref3 == true ) { return("true") } else { return("false") } } EOS If the result is not "true", this is a finding.
Fix: F-72456r1131236_fix
Configure the macOS system to disable Find My service by installing the "com.apple.applicationaccess" and "com.apple.icloud.managed" configuration profiles.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002200
- Vuln IDs
-
- V-268526
- Rule IDs
-
- SV-268526r1034518_rule
Checks: C-72556r1034516_chk
Verify the macOS system is configured to disable Personalized Advertising with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowApplePersonalizedAdvertising').js EOS If the result is not "false", this is a finding.
Fix: F-72457r1034517_fix
Configure the macOS system to disable Personalized Advertising by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002210
- Vuln IDs
-
- V-268527
- Rule IDs
-
- SV-268527r1034521_rule
Checks: C-72557r1034519_chk
Verify the macOS system is configured to disable sending Siri and Dictation information to Apple with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.assistant.support')\ .objectForKey('Siri Data Sharing Opt-In Status').js EOS If the result is not "2", this is a finding.
Fix: F-72458r1034520_fix
Configure the macOS system to disable sending Siri and Dictation information to Apple by installing the "com.apple.assistant.support" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002220
- Vuln IDs
-
- V-268528
- Rule IDs
-
- SV-268528r1034524_rule
Checks: C-72558r1034522_chk
For Intel-based systems, this is not applicable. Verify the macOS system is configured to enforce On Device Only Dictation with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('forceOnDeviceOnlyDictation').js EOS If the result is not "true", this is a finding.
Fix: F-72459r1034523_fix
Configure the macOS system to enforce On Device Only Dictation by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002230
- Vuln IDs
-
- V-268529
- Rule IDs
-
- SV-268529r1034527_rule
Checks: C-72559r1034525_chk
For Apple Silicon-based systems, this is not applicable. Verify the macOS system is configured to disable Dictation with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowDictation').js EOS If the result is not "false", this is a finding.
Fix: F-72460r1034526_fix
Configure the macOS system to disable Dictation by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002240
- Vuln IDs
-
- V-268530
- Rule IDs
-
- SV-268530r1034530_rule
Checks: C-72560r1034528_chk
Verify the macOS system is configured to disable Printer Sharing with the following command: /usr/sbin/cupsctl | /usr/bin/grep -c "_share_printers=0" If the result is not "1", this is a finding.
Fix: F-72461r1034529_fix
Configure the macOS system to disable Printer Sharing with the following commands: /usr/sbin/cupsctl --no-share-printers /usr/bin/lpstat -p | awk '{print $2}'| /usr/bin/xargs -I{} lpadmin -p {} -o printer-is-shared=false
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002250
- Vuln IDs
-
- V-268531
- Rule IDs
-
- SV-268531r1034533_rule
Checks: C-72561r1034531_chk
Verify the macOS system is configured to disable Remote Management with the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "RemoteDesktopEnabled = 0" If the result is not "1", this is a finding.
Fix: F-72462r1034532_fix
Configure the macOS system to disable Remote Management with the following commands: /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002260
- Vuln IDs
-
- V-268532
- Rule IDs
-
- SV-268532r1034536_rule
Checks: C-72562r1034534_chk
Verify the macOS system is configured to disable the Bluetooth System Settings pane with the following command: /usr/bin/profiles show -output stdout-xml | /usr/bin/xmllint --xpath '//key[text()="DisabledSystemSettings"]/following-sibling::*[1]' - | /usr/bin/grep -c com.apple.BluetoothSettings If the result is not "1", this is a finding.
Fix: F-72463r1034535_fix
Configure the macOS system to disable the Bluetooth System Settings pane by installing the "com.apple.systempreferences" configuration profiles.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002270
- Vuln IDs
-
- V-268533
- Rule IDs
-
- SV-268533r1034539_rule
Checks: C-72563r1034537_chk
Verify the macOS system is configured to disable iCloud Freeform services with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowCloudFreeform').js EOS If the result is not "false", this is a finding.
Fix: F-72464r1034538_fix
Configure the macOS system to disable iCloud Freeform services by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SC-23
- Severity
- M
- CCI
- CCI-002470
- Version
- APPL-15-003001
- Vuln IDs
-
- V-268534
- Rule IDs
-
- SV-268534r1034542_rule
Checks: C-72564r1034540_chk
Verify the macOS system is configured to issue or obtain public key certificates from an approved service provider with the following command: /usr/bin/security dump-keychain /Library/Keychains/System.keychain | /usr/bin/awk -F'"' '/labl/ {print $4}' If the result does not contain a list of approved certificate authorities, this is a finding.
Fix: F-72465r1034541_fix
Configure the macOS system to issue or obtain public key certificates from an approved service provider by obtaining the approved certificates from the appropriate authority and install them to the System Keychain.
- RMF Control
- Severity
- M
- CCI
- CCI-004066
- Version
- APPL-15-003007
- Vuln IDs
-
- V-268535
- Rule IDs
-
- SV-268535r1034545_rule
Checks: C-72565r1034543_chk
Verify the macOS system is configured to require that passwords contain a minimum of one numeric character with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyIdentifier"]/following-sibling::*[1]/text()' - | /usr/bin/grep "requireAlphanumeric" -c If the result is not "1", this is a finding.
Fix: F-72466r1034544_fix
Configure the macOS system to require that passwords contain a minimum of one numeric character by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004066
- Version
- APPL-15-003008
- Vuln IDs
-
- V-268536
- Rule IDs
-
- SV-268536r1038967_rule
Checks: C-72566r1034546_chk
Verify the macOS system is configured to restrict maximum password lifetime to 60 days with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeExpiresEveryNDays"]/following-sibling::*[1]/text()' - If the result is not "60" or less, this is a finding.
Fix: F-72467r1034547_fix
Configure the macOS system to restrict maximum password lifetime to 60 days by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004066
- Version
- APPL-15-003010
- Vuln IDs
-
- V-268537
- Rule IDs
-
- SV-268537r1034551_rule
Checks: C-72567r1034549_chk
Verify the macOS system is configured to enforce a minimum 14-character password length with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath 'boolean(//*[contains(text(),"policyAttributePassword matches '\''.{14,}'\''")])' - If the result is not "true", this is a finding.
Fix: F-72468r1034550_fix
Configure the macOS system to enforce a 14-character password length by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004066
- Version
- APPL-15-003011
- Vuln IDs
-
- V-268538
- Rule IDs
-
- SV-268538r1131239_rule
Checks: C-72568r1131238_chk
Verify the macOS system is configured to require passwords contain a minimum of one special character with the following command: /usr/bin/pwpolicy -getaccountpolicies 2>/dev/null | /usr/bin/tail -n +2 | /usr/bin/xmllint --xpath "//string[contains(text(), \"policyAttributePassword matches '(.*[^a-zA-Z0-9].*){\")]" - 2>/dev/null | /usr/bin/awk -F"{|}" '{if ($2 >= 1) {print "true"} else {print "false"}}' If the result is not "true", this is a finding.
Fix: F-72469r1034553_fix
Configure the macOS system to require that passwords contain a minimum of one special character by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- IA-6
- Severity
- M
- CCI
- CCI-000206
- Version
- APPL-15-003012
- Vuln IDs
-
- V-268539
- Rule IDs
-
- SV-268539r1034557_rule
Checks: C-72569r1034555_chk
Verify the macOS system is configured to disable password hints with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('RetriesUntilHint').js EOS If the result is not "0", this is a finding.
Fix: F-72470r1034556_fix
Configure the macOS system to disable password hints by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-15-003013
- Vuln IDs
-
- V-268540
- Rule IDs
-
- SV-268540r1034560_rule
Checks: C-72570r1034558_chk
For Apple Silicon systems, this is not applicable. Verify the macOS system is configured with a firmware password with the following command: /usr/sbin/firmwarepasswd -check | /usr/bin/grep -c "Password Enabled: Yes" If the result is not "1", this is a finding.
Fix: F-72471r1034559_fix
Configure the macOS system with a firmware password with the following command: /usr/sbin/firmwarepasswd -setpasswd NOTE: If firmware password or passcode is forgotten, the only way to reset the forgotten password is through a machine-specific binary generated and provided by Apple. Users must schedule a support call and provide proof of purchase before the firmware binary will be generated.
- RMF Control
- IA-6
- Severity
- M
- CCI
- CCI-000206
- Version
- APPL-15-003014
- Vuln IDs
-
- V-268541
- Rule IDs
-
- SV-268541r1131242_rule
Checks: C-72571r1131240_chk
Verify the macOS system is configured to remove password hints from user accounts with the following command: HINT=$(/usr/bin/dscl . -list /Users hint | /usr/bin/awk '{ print $2 }') if [ -z "$HINT" ]; then echo "PASS" else echo "FAIL" fi If the result is not "PASS", this is a finding.
Fix: F-72472r1131241_fix
Configure the macOS system to remove password hints from user accounts with the following command: for u in $(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk '$2 > 500 {print $1}'); do /usr/bin/dscl . -delete /Users/$u hint done
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000186
- Version
- APPL-15-003020
- Vuln IDs
-
- V-268542
- Rule IDs
-
- SV-268542r1034566_rule
Checks: C-72572r1034564_chk
Verify the macOS system is configured to enforce multifactor authentication with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('enforceSmartCard').js EOS If the result is not "true", this is a finding.
Fix: F-72473r1034565_fix
Configure the macOS system to enforce multifactor authentication by installing the "com.apple.security.smartcard" configuration profile. NOTE: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000187
- Version
- APPL-15-003030
- Vuln IDs
-
- V-268543
- Rule IDs
-
- SV-268543r1034569_rule
Checks: C-72573r1034567_chk
Verify the macOS system is configured to allow smart card authentication with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.smartcard')\ .objectForKey('allowSmartCard').js EOS If the result is not "true", this is a finding.
Fix: F-72474r1034568_fix
Configure the macOS system to enforce multifactor authentication by installing the "com.apple.security.smartcard" configuration profile. NOTE: To ensure continued access to the operating system, consult the supplemental guidance provided with the STIG before applying the configuration profile.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000765
- Version
- APPL-15-003050
- Vuln IDs
-
- V-268544
- Rule IDs
-
- SV-268544r1034572_rule
Checks: C-72574r1034570_chk
Verify the macOS system is configured to enforce multifactor authentication for login with the following command: /usr/bin/grep -Ec '^(auth\s+sufficient\s+pam_smartcard.so|auth\s+required\s+pam_deny.so)' /etc/pam.d/login If the result is not "2", this is a finding.
Fix: F-72475r1034571_fix
Configure the macOS system to enforce multifactor authentication for login with the following commands: /bin/cat > /etc/pam.d/login << LOGIN_END # login: auth account password session auth sufficient pam_smartcard.so auth optional pam_krb5.so use_kcminit auth optional pam_ntlm.so try_first_pass auth optional pam_mount.so try_first_pass auth required pam_opendirectory.so try_first_pass auth required pam_deny.so account required pam_nologin.so account required pam_opendirectory.so password required pam_opendirectory.so session required pam_launchd.so session required pam_uwtmp.so session optional pam_mount.so LOGIN_END /bin/chmod 644 /etc/pam.d/login /usr/sbin/chown root:wheel /etc/pam.d/login
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000765
- Version
- APPL-15-003051
- Vuln IDs
-
- V-268545
- Rule IDs
-
- SV-268545r1034575_rule
Checks: C-72575r1034573_chk
Verify the macOS system is configured to enforce multifactor authentication for the su command with the following command: /usr/bin/grep -Ec '^(auth\s+sufficient\s+pam_smartcard.so|auth\s+required\s+pam_rootok.so)' /etc/pam.d/su If the result is not "2", this is a finding.
Fix: F-72476r1034574_fix
Configure the macOS system to enforce multifactor authentication for the su command with the following commands: /bin/cat > /etc/pam.d/su << SU_END # su: auth account password session auth sufficient pam_smartcard.so auth required pam_rootok.so auth required pam_group.so no_warn group=admin,wheel ruser root_only fail_safe account required pam_permit.so account required pam_opendirectory.so no_check_shell password required pam_opendirectory.so session required pam_launchd.so SU_END # Fix new file ownership and permissions /bin/chmod 644 /etc/pam.d/su /usr/sbin/chown root:wheel /etc/pam.d/su
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000765
- Version
- APPL-15-003052
- Vuln IDs
-
- V-268546
- Rule IDs
-
- SV-268546r1034578_rule
Checks: C-72576r1034576_chk
Verify the macOS system is configured to enforce multifactor authentication for privilege escalation through the sudo command with the following command: /usr/bin/grep -Ec '^(auth\s+sufficient\s+pam_smartcard.so|auth\s+required\s+pam_deny.so)' /etc/pam.d/sudo If the result is not "2", this is a finding.
Fix: F-72477r1034577_fix
Configure the macOS system to enforce multifactor authentication for privilege escalation through the sudo command with the following commands: /bin/cat > /etc/pam.d/sudo << SUDO_END # sudo: auth account password session auth sufficient pam_smartcard.so auth required pam_opendirectory.so auth required pam_deny.so account required pam_permit.so password required pam_deny.so session required pam_permit.so SUDO_END /bin/chmod 444 /etc/pam.d/sudo /usr/sbin/chown root:wheel /etc/pam.d/sudo
- RMF Control
- Severity
- M
- CCI
- CCI-004066
- Version
- APPL-15-003060
- Vuln IDs
-
- V-268547
- Rule IDs
-
- SV-268547r1034581_rule
Checks: C-72577r1034579_chk
Verify the macOS system is configured to require that passwords contain a minimum of one lowercase character and one uppercase character with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath 'boolean(//*[contains(text(),"policyAttributePassword matches '\''^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$'\''")])' - If the result is not "true", this is a finding.
Fix: F-72478r1034580_fix
Configure the macOS system to require at least one lowercase character and one uppercase character in password complexity by installing the "com.apple.mobiledevice.passwordpolicy" configuration profile.
- RMF Control
- Severity
- M
- CCI
- CCI-004066
- Version
- APPL-15-003070
- Vuln IDs
-
- V-268548
- Rule IDs
-
- SV-268548r1131244_rule
Checks: C-72578r1034582_chk
Verify the macOS system is configured to set minimum password lifetime to 24 hours with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeMinimumLifetimeHours"]/following-sibling::integer[1]/text()' - | /usr/bin/awk '{ if ($1 >= 24 ) {print "yes"} else {print "no"}}' If the result is not "yes", this is a finding.
Fix: F-72479r1131243_fix
Configure the macOS system to set minimum password lifetime to 24 hours. This setting may be enforced using local policy. To set local policy to require a minimum password lifetime, edit the current password policy to contain the following <dict> within the "policyCategoryPasswordContent": [source,xml] ---- <dict> <key>policyContent</key> <string>policyAttributeLastPasswordChangeTime < policyAttributeCurrentTime - (policyAttributeMinimumLifetimeHours * 60 * 60)</string> <key>policyIdentifier</key> <string>Minimum Password Lifetime</string> <key>policyParameters</key> <dict> <key>policyAttributeMinimumLifetimeHours</key> <integer>24</integer> </dict> </dict> ---- After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the path to the file in place of "$pwpolicy_file". [source,bash] ---- /usr/bin/pwpolicy setaccountpolicies $pwpolicy_file ----
- RMF Control
- Severity
- M
- CCI
- CCI-003627
- Version
- APPL-15-003080
- Vuln IDs
-
- V-268549
- Rule IDs
-
- SV-268549r1131246_rule
Checks: C-72579r1034585_chk
Verify the macOS system is configured to disable accounts after 35 days of inactivity with the following command: /usr/bin/pwpolicy -getaccountpolicies 2> /dev/null | /usr/bin/tail +2 | /usr/bin/xmllint --xpath '//dict/key[text()="policyAttributeInactiveDays"]/following-sibling::integer[1]/text()' - If the result is not "35", this is a finding.
Fix: F-72480r1131245_fix
Configure the macOS system to disable accounts after 35 days of inactivity with the following command: This setting may be enforced using local policy. To set local policy to disable an inactive user after 35 days, edit the current password policy to contain the following <dict> within the "policyCategoryAuthentication": [source,xml] ---- <dict> <key>policyContent</key> <string>policyAttributeLastAuthenticationTime > policyAttributeCurrentTime - (policyAttributeInactiveDays * 24 * 60 * 60)</string> <key>policyIdentifier</key> <string>Inactive Account</string> <key>policyParameters</key> <dict> <key>policyAttributeInactiveDays</key> <integer>35</integer> </dict> </dict> ---- After saving the file and exiting to the command prompt, run the following command to load the new policy file, substituting the path to the file in place of "$pwpolicy_file". [source,bash] ---- /usr/bin/pwpolicy setaccountpolicies $pwpolicy_file ----
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-15-004001
- Vuln IDs
-
- V-268550
- Rule IDs
-
- SV-268550r1034590_rule
Checks: C-72580r1034588_chk
Verify the macOS system is configured with ASL files owned by root and group to wheel with the following command: /usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk '!/^root:wheel:/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-72481r1034589_fix
Configure the macOS system with ASL files owned by root and group to wheel with the following command: /usr/sbin/chown root:wheel $(/usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk '!/^root:wheel:/{print $1}' | /usr/bin/awk -F":" '!/^root:wheel:/{print $3}')
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-15-004002
- Vuln IDs
-
- V-268551
- Rule IDs
-
- SV-268551r1034593_rule
Checks: C-72581r1034591_chk
Verify the macOS system is configured with ASL files to mode 640 or less permissive with the following command: /usr/bin/stat -f '%A:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk '!/640/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-72482r1034592_fix
Configure the macOS system with ASL files to mode 640 with the following command: /bin/chmod 640 $(/usr/bin/stat -f '%A:%N' $(/usr/bin/grep -e '^>' /etc/asl.conf /etc/asl/* | /usr/bin/awk '{ print $2 }') 2> /dev/null | /usr/bin/awk -F":" '!/640/{print $2}')
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-15-004030
- Vuln IDs
-
- V-268552
- Rule IDs
-
- SV-268552r1034596_rule
Checks: C-72582r1034594_chk
Verify the macOS system is configured with system log files owned by root and group to wheel with the following command: /usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk '!/^root:wheel:/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-72483r1034595_fix
Configure the macOS system with system log files owned by root and group to wheel with the following command: /usr/sbin/chown root:wheel $(/usr/bin/stat -f '%Su:%Sg:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk -F":" '!/^root:wheel:/{print $3}')
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- APPL-15-004040
- Vuln IDs
-
- V-268553
- Rule IDs
-
- SV-268553r1034599_rule
Checks: C-72583r1034597_chk
Verify the macOS system is configured with system log files set to mode 640 or less permissive with the following command: /usr/bin/stat -f '%A:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk '!/640/{print $1}' | /usr/bin/wc -l | /usr/bin/tr -d ' ' If the result is not "0", this is a finding.
Fix: F-72484r1034598_fix
Configure the macOS system with system log files set to mode 640 or less permissive with the following command: /bin/chmod 640 $(/usr/bin/stat -f '%A:%N' $(/usr/bin/grep -v '^#' /etc/newsyslog.conf | /usr/bin/awk '{ print $1 }') 2> /dev/null | /usr/bin/awk '!/640/{print $1}' | awk -F":" '!/640/{print $2}')
- RMF Control
- AU-4
- Severity
- L
- CCI
- CCI-001849
- Version
- APPL-15-004050
- Vuln IDs
-
- V-268554
- Rule IDs
-
- SV-268554r1034602_rule
Checks: C-72584r1034600_chk
Verify the macOS system is configured with install.log retention to 365 with the following command: /usr/sbin/aslmanager -dd 2>&1 | /usr/bin/awk '/\/var\/log\/install.log$/ {count++} /Processing module com.apple.install/,/Finished/ { for (i=1;i<=NR;i++) { if ($i == "TTL" && $(i+2) >= 365) { ttl="True" }; if ($i == "MAX") {max="True"}}} END{if (count > 1) { print "Multiple config files for /var/log/install, manually remove the extra files"} else if (max == "True") { print "all_max setting is configured, must be removed" } if (ttl != "True") { print "TTL not configured" } else { print "Yes" }}' If the result is not "yes", this is a finding.
Fix: F-72485r1034601_fix
Configure the macOS system with install.log retention to 365 with the following command: /usr/bin/sed -i '' "s/\* file \/var\/log\/install.log.*/\* file \/var\/log\/install.log format='\$\(\(Time\)\(JZ\)\) \$Host \$\(Sender\)\[\$\(PID\\)\]: \$Message' rotate=utc compress file_max=50M size_only ttl=365/g" /etc/asl/com.apple.install NOTE: If multiple configuration files in /etc/asl are set to process the file /var/log/install.log, these files must be manually removed.
- RMF Control
- AU-6
- Severity
- H
- CCI
- CCI-000154
- Version
- APPL-15-005001
- Vuln IDs
-
- V-268555
- Rule IDs
-
- SV-268555r1034605_rule
Checks: C-72585r1034603_chk
Verify the macOS system is configured to enable System Integrity Protection with the following command: /usr/bin/csrutil status | /usr/bin/grep -c 'System Integrity Protection status: enabled.' If the result is not "1", this is a finding.
Fix: F-72486r1034604_fix
Configure the macOS system to enable System Integrity Protection by booting into "Recovery" mode, launching "Terminal" from the "Utilities" menu, and running the following command: /usr/bin/csrutil enable
- RMF Control
- SC-28
- Severity
- H
- CCI
- CCI-001199
- Version
- APPL-15-005020
- Vuln IDs
-
- V-268556
- Rule IDs
-
- SV-268556r1131248_rule
Checks: C-72586r1034606_chk
Verify the macOS system is configured to enforce FileVault with the following command: dontAllowDisable=$(/usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.MCX')\ .objectForKey('dontAllowFDEDisable').js EOS ) fileVault=$(/usr/bin/fdesetup status | /usr/bin/grep -c "FileVault is On.") if [[ "$dontAllowDisable" == "true" ]] && [[ "$fileVault" == 1 ]]; then echo "1" else echo "0" fi If the result is not "1", this is a finding.
Fix: F-72487r1131247_fix
Refer to the FileVault supplemental to implement this rule. Configure the macOS system to enforce FileVault by installing the "com.apple.MCX" configuration profile.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-15-005050
- Vuln IDs
-
- V-268557
- Rule IDs
-
- SV-268557r1034611_rule
Checks: C-72587r1034609_chk
Verify the macOS system is configured to enable the Application Firewall with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.security.firewall')\ .objectForKey('EnableFirewall').js EOS If the result is not "true", this is a finding.
Fix: F-72488r1034610_fix
Configure the macOS system to enable the Application Firewall by installing the "com.apple.security.firewall" configuration profile.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- APPL-15-005052
- Vuln IDs
-
- V-268558
- Rule IDs
-
- SV-268558r1034614_rule
Checks: C-72588r1034612_chk
Verify the macOS system is configured to prompt for username and password at the login window with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.loginwindow')\ .objectForKey('SHOWFULLNAME').js EOS If the result is not "true", this is a finding.
Fix: F-72489r1034613_fix
Configure the macOS system to prompt for username and password at the login window by installing the "com.apple.loginwindow" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005054
- Vuln IDs
-
- V-268559
- Rule IDs
-
- SV-268559r1034617_rule
Checks: C-72589r1034615_chk
Verify the macOS system is configured to disable the TouchID prompt during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipTouchIDSetup').js EOS If the result is not "true", this is a finding.
Fix: F-72490r1034616_fix
Configure the macOS system to disable the TouchID prompt during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005055
- Vuln IDs
-
- V-268560
- Rule IDs
-
- SV-268560r1034620_rule
Checks: C-72590r1034618_chk
Verify the macOS system is configured to disable the Screen Time prompt during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipScreenTime').js EOS If the result is not "true", this is a finding.
Fix: F-72491r1034619_fix
Configure the macOS system to disable the Screen Time prompt during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005056
- Vuln IDs
-
- V-268561
- Rule IDs
-
- SV-268561r1034623_rule
Checks: C-72591r1034621_chk
Verify the macOS system is configured to disable Unlock with Apple Watch during Setup Assistant with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SetupAssistant.managed')\ .objectForKey('SkipUnlockWithWatch').js EOS If the result is not "true", this is a finding.
Fix: F-72492r1034622_fix
Configure the macOS system to disable Unlock with Apple Watch during Setup Assistant by installing the "com.apple.SetupAssistant.managed" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-005058
- Vuln IDs
-
- V-268562
- Rule IDs
-
- SV-268562r1117265_rule
Checks: C-72592r1034624_chk
Verify the macOS system is configured to disable Handoff with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowActivityContinuation').js EOS If the result is not "false", this is a finding.
Fix: F-72493r1034625_fix
Configure the macOS system to disable Handoff by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005060
- Vuln IDs
-
- V-268563
- Rule IDs
-
- SV-268563r1034629_rule
Checks: C-72593r1034627_chk
Verify the macOS system is configured to disable proximity-based password sharing requests with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowPasswordProximityRequests').js EOS If the result is not "false", this is a finding.
Fix: F-72494r1034628_fix
Configure the macOS system to disable proximity-based password sharing requests by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005061
- Vuln IDs
-
- V-268564
- Rule IDs
-
- SV-268564r1034632_rule
Checks: C-72594r1034630_chk
Verify the macOS system is configured to disable Erase Content and Settings with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowEraseContentAndSettings').js EOS If the result is not "false", this is a finding.
Fix: F-72495r1034631_fix
Configure the macOS system to disable Erase Content and Settings by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-005070
- Vuln IDs
-
- V-268565
- Rule IDs
-
- SV-268565r1117265_rule
Checks: C-72595r1034633_chk
Verify the macOS system is configured to enable authenticated root with the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "AuthenticatedRootVolumeEnabled = 1;" If the result is not "1", this is a finding.
Fix: F-72496r1034634_fix
Configure the macOS system to enable authenticated root with the following command: /usr/bin/csrutil authenticated-root enable NOTE: To reenable "Authenticated Root", boot the affected system into "Recovery" mode, launch "Terminal" from the "Utilities" menu, and run the command.
- RMF Control
- Severity
- M
- CCI
- CCI-003980
- Version
- APPL-15-005080
- Vuln IDs
-
- V-268566
- Rule IDs
-
- SV-268566r1131250_rule
Checks: C-72596r1131249_chk
Verify the macOS system is configured to prohibit user installation of software into /users/ with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('familyControlsEnabled')) let pathlist = $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess.new')\ .objectForKey('pathBlackList').js for ( let app in pathlist ) { if ( ObjC.unwrap(pathlist[app]) == "/Users/" && pref1 == true ){ return("true") } } return("false") } EOS If the result is not "true", this is a finding.
Fix: F-72497r1034637_fix
Configure the macOS system to prohibit user installation of software into /users/ by installing the "com.apple.applicationaccess.new" configuration profile.
- RMF Control
- IA-3
- Severity
- M
- CCI
- CCI-001958
- Version
- APPL-15-005090
- Vuln IDs
-
- V-268567
- Rule IDs
-
- SV-268567r1131252_rule
Checks: C-72597r1131251_chk
Verify the macOS system is configured to authorize USB devices before allowing connection with the following command: /usr/bin/osascript -l JavaScript << EOS function run() { let pref1 = ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowUSBRestrictedMode')) if ( pref1 == false ) { return("false") } else { return("true") } } EOS If the result is not "true", this is a finding.
Fix: F-72498r1034640_fix
Configure the macOS system to authorize USB devices before allowing connection by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SI-6
- Severity
- M
- CCI
- CCI-002696
- Version
- APPL-15-005100
- Vuln IDs
-
- V-268568
- Rule IDs
-
- SV-268568r1034644_rule
Checks: C-72598r1034642_chk
Verify the macOS system is configured to ensure Secure Boot level is set to "full" using the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "SecureBootLevel = full" If the result is not "1", this is a finding.
Fix: F-72499r1034643_fix
Configure the macOS system to ensure Secure Boot level is set to "full" by booting into Recovery Mode and enabling Full Secure Boot.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-15-005110
- Vuln IDs
-
- V-268569
- Rule IDs
-
- SV-268569r1034647_rule
Checks: C-72599r1034645_chk
Verify the macOS system is configured to enforce enrollment in mobile device management with the following command: /usr/bin/profiles status -type enrollment | /usr/bin/awk -F: '/MDM enrollment/ {print $2}' | /usr/bin/grep -c "Yes (User Approved)" If the result is not "1", this is a finding.
Fix: F-72500r1034646_fix
Configure the macOS system by ensuring that the system is enrolled via UAMDM.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-15-005120
- Vuln IDs
-
- V-268570
- Rule IDs
-
- SV-268570r1034650_rule
Checks: C-72600r1034648_chk
For non-Apple Silicon systems, this is not applicable. Verify the macOS system is configured with Recovery Lock with the following command: /usr/libexec/mdmclient QuerySecurityInfo | /usr/bin/grep -c "IsRecoveryLockEnabled = 1" If the result is not "1", this is a finding.
Fix: F-72501r1034649_fix
Configure the macOS system with Recovery Lock with the SetRecoveryLock command. This can be used to set a Recovery Lock password and must be from the MDM.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- APPL-15-005130
- Vuln IDs
-
- V-268571
- Rule IDs
-
- SV-268571r1034653_rule
Checks: C-72601r1034651_chk
Verify the macOS system is configured to enforce installation of XProtect Remediator and Gatekeeper updates automatically with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.SoftwareUpdate')\ .objectForKey('ConfigDataInstall').js EOS If the result is not "true", this is a finding.
Fix: F-72502r1034652_fix
Configure the macOS system to enforce installation of XProtect Remediator and Gatekeeper updates automatically by installing the "com.apple.SoftwareUpdate" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005140
- Vuln IDs
-
- V-268572
- Rule IDs
-
- SV-268572r1034656_rule
Checks: C-72602r1034654_chk
Verify the macOS system is configured to disable Genmoji with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowGenmoji').js EOS If the result is not "false", this is a finding.
Fix: F-72503r1034655_fix
Configure the macOS system to disable Genmoji by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005150
- Vuln IDs
-
- V-268573
- Rule IDs
-
- SV-268573r1034659_rule
Checks: C-72603r1034657_chk
Verify the macOS system is configured to disable Apple Intelligence Image Generation with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowImagePlayground').js EOS If the result is not "false", this is a finding.
Fix: F-72504r1034658_fix
Configure the macOS system to disable Apple Intelligence Image Generation by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-005160
- Vuln IDs
-
- V-268574
- Rule IDs
-
- SV-268574r1034662_rule
Checks: C-72604r1034660_chk
Verify the macOS system is configured to disable Apple Intelligence Writing Tools with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowWritingTools').js EOS If the result is not "false", this is a finding.
Fix: F-72505r1034661_fix
Configure the macOS system to disable Apple Intelligence Writing Tools by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- SI-2
- Severity
- M
- CCI
- CCI-002605
- Version
- APPL-15-999999
- Vuln IDs
-
- V-268575
- Rule IDs
-
- SV-268575r1131255_rule
Checks: C-72605r1131253_chk
Verify security-relevant software updates are installed on the operating system within 30 days unless the time period is directed by an authoritative source (e.g., IAVM, CTOs, DTMs, STIGs). Click the Apple icon on the menu at the top left corner of the screen. Select the "About This Mac" option. Select the "More Info..." button. Under the macOS section, there are details about the update version. Compare this to the latest available macOS update version. If the installed updates are not the latest and the latest updates have been available for 30 days or more, this is a finding.
Fix: F-72506r1131254_fix
Install the latest updates within 30 days unless the time period is directed by an authoritative source (e.g., IAVM, CTOs, DTMs, STIGs).
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APPL-15-000024
- Vuln IDs
-
- V-269093
- Rule IDs
-
- SV-269093r1131184_rule
Checks: C-73123r1034752_chk
Verify the macOS system is configured to display the contents of "/etc/banner" before granting access to the system with the following command: /usr/sbin/sshd -G | /usr/bin/grep -c "^banner /etc/banner" If the command does not return "1", this is a finding.
Fix: F-73024r1131183_fix
Configure the macOS system to display the contents of "/etc/banner" before granting access to the system with the following command: include_dir=$(/usr/bin/awk '/^Include/ {print $2}' /etc/ssh/sshd_config | /usr/bin/tr -d '*') if [[ -z $include_dir ]]; then /usr/bin/sed -i.bk "1s/.*/Include \/etc\/ssh\/sshd_config.d\/\*/" /etc/ssh/sshd_config fi /usr/bin/grep -qxF 'banner /etc/banner' "${include_dir}01-mscp-sshd.conf" 2>/dev/null || echo "banner /etc/banner" >> "${include_dir}01-mscp-sshd.conf" for file in $(ls ${include_dir}); do if [[ "$file" == "100-macos.conf" ]]; then continue fi if [[ "$file" == "01-mscp-sshd.conf" ]]; then break fi /bin/mv ${include_dir}${file} ${include_dir}20-${file} done
- RMF Control
- Severity
- M
- CCI
- CCI-003938
- Version
- APPL-15-001024
- Vuln IDs
-
- V-269094
- Rule IDs
-
- SV-269094r1034757_rule
Checks: C-73124r1034755_chk
Verify the macOS system is configured to audit all failed program execution on the system with the following command: /usr/bin/awk -F':' '/^flags/ { print $NF }' /etc/security/audit_control | /usr/bin/tr ',' '\n' | /usr/bin/grep -Ec '\-ex' If the result is not "1", this is a finding.
Fix: F-73025r1034756_fix
Configure the macOS system to audit all failed program execution on the system with the following command: /usr/bin/grep -qE "^flags.*-ex" /etc/security/audit_control || /usr/bin/sed -i.bak '/^flags/ s/$/,-ex/' /etc/security/audit_control; /usr/sbin/audit -s
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APPL-15-001140
- Vuln IDs
-
- V-269095
- Rule IDs
-
- SV-269095r1034760_rule
Checks: C-73125r1034758_chk
Verify the macOS system is configured without ACLs applied to audit_control with the following command: /bin/ls -le /etc/security/audit_control | /usr/bin/awk '{print $1}' | /usr/bin/grep -c ":" If the result is not "0", this is a finding.
Fix: F-73026r1034759_fix
Configure the macOS system without ACLs applied to audit_control with the following command: /bin/chmod -N /etc/security/audit_control
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002023
- Vuln IDs
-
- V-269096
- Rule IDs
-
- SV-269096r1131214_rule
Checks: C-73126r1131213_chk
Verify the macOS system is configured to disable sending audio recordings and transcripts with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.Accessibility')\ .objectForKey('AXSAudioDonationSiriImprovementEnabled').js EOS If the result is not "false", this is a finding.
Fix: F-73027r1034783_fix
Configure the macOS system to disable sending audio recordings and transcripts by installing the "com.apple.accessibility" configuration profile.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- APPL-15-002024
- Vuln IDs
-
- V-269566
- Rule IDs
-
- SV-269566r1131216_rule
Checks: C-73599r1131215_chk
Verify the macOS system is configured to disable sending search data from Spotlight with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.assistant.support')\ .objectForKey('Search Queries Data Sharing Status').js EOS If the result is not "2", this is a finding.
Fix: F-73500r1034792_fix
Configure the macOS system to disable sending search data from Spotlight by installing the "com.apple.assistant.support" configuration profile.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- APPL-15-002271
- Vuln IDs
-
- V-272477
- Rule IDs
-
- SV-272477r1117265_rule
Checks: C-76527r1069482_chk
Verify the macOS system is configured to disable iPhone Mirroring with the following command: /usr/bin/osascript -l JavaScript << EOS $.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess')\ .objectForKey('allowiPhoneMirroring').js EOS If the result is not "false", this is a finding.
Fix: F-76434r1069483_fix
Configure the macOS system to disable iPhone Mirroring by installing the "com.apple.applicationaccess" configuration profile.
- RMF Control
- IA-11
- Severity
- M
- CCI
- CCI-002038
- Version
- APPL-15-004060
- Vuln IDs
-
- V-274880
- Rule IDs
-
- SV-274880r1099901_rule
Checks: C-78981r1099899_chk
Verify the macOS system is configured with sudoers timestamp type with the following command: /usr/bin/sudo /usr/bin/sudo -V | /usr/bin/awk -F": " '/Type of authentication timestamp record/{print $2}' If the result is not "tty", this is a finding.
Fix: F-78886r1099900_fix
Configure the macOS system with sudoers timestamp type with the following command: /usr/bin/find /etc/sudoers* -type f -exec sed -i '' '/timestamp_type/d; /!tty_tickets/d' '{}' \;
- RMF Control
- IA-11
- Severity
- M
- CCI
- CCI-002038
- Version
- APPL-15-004022
- Vuln IDs
-
- V-274881
- Rule IDs
-
- SV-274881r1099904_rule
Checks: C-78982r1099902_chk
Verify the macOS system requires reauthentication when using the "sudo" command to elevate privileges with the following command: /usr/bin/sudo /usr/bin/sudo -V | /usr/bin/grep -c "Authentication timestamp timeout: 0.0 minutes" If the result is not "1", this is a finding.
Fix: F-78887r1099903_fix
Configure the macOS system to require reauthentication when using "sudo" with the following command: /usr/bin/find /etc/sudoers* -type f -exec sed -i '' '/timestamp_timeout/d' '{}' \; /bin/echo "Defaults timestamp_timeout=0" >> /etc/sudoers.d/mscp