From 6d708ef67e2ddfbc58f7182c819d93676b8ae26f Mon Sep 17 00:00:00 2001 From: Adam Baali <45665341+AdamBaali@users.noreply.github.com> Date: Thu, 16 Apr 2026 16:16:22 +0200 Subject: [PATCH] Migrate CIS benchmarks to docs/solutions/cis/ with production-ready profiles, scripts, and policies (#43657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Migrates CIS benchmark files from `ee/cis/` to `docs/solutions/cis/` in Fleet GitOps-compatible format, with configuration profiles, remediation scripts, and policy queries for macOS 13/14/15, Windows 10/11, and Windows 11 Intune. **The original AI-generated content (commits 1–4) contained critical errors that would cause silent deployment failures.** Commits 5–10 are a systematic review that validates every CSP path, Apple payload key, and script against official vendor documentation — fixing 30+ issues. --- ## What was wrong and why ### 1. Windows XML profiles used wrong SyncML format (would be rejected by Fleet) The AI generated full SyncML protocol envelopes (``), but Fleet expects flat `` blocks — the same format used in [`docs/solutions/windows/configuration-profiles/`](https://github.com/fleetdm/fleet/tree/main/docs/solutions/windows/configuration-profiles). Every production Fleet profile (e.g., [`enforce device password and lock requirements – [Bundle].xml`](https://github.com/fleetdm/fleet/blob/main/docs/solutions/windows/configuration-profiles/enforce%20device%20password%20and%20lock%20requirements%20%E2%80%93%20%5BBundle%5D.xml)) uses this flat format. This is the same class of error [reported by @AdamBaali in #42748](https://github.com/fleetdm/fleet/issues/42748#issuecomment-4223794562) when testing the `numa` AI-generated security baseline. **Fix:** Rewrote all 13 XML files to match Fleet's expected format. ### 2. Six Audit CSP names were fabricated (`LogonLogoff_` prefix doesn't exist) The AI used `Audit/LogonLogoff_AuditLogon` etc., but the [Microsoft Audit Policy CSP documentation](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-audit) specifies the prefix `AccountLogonLogoff_` — e.g., `Audit/AccountLogonLogoff_AuditLogon`. Using the wrong prefix returns HTTP 500 from the MDM server. **Fix:** Corrected all 6 across 3 platform variants (18 replacements). ### 3. Three Apple Intelligence profiles used fabricated payload keys The AI invented keys that don't exist in [Apple's device-management reference](https://github.com/apple/device-management/blob/release/mdm/profiles/com.apple.applicationaccess.yaml): | Profile | AI-generated (fabricated) | Correct per Apple reference | |---------|--------------------------|----------------------------| | Extensions | `allowIntelligenceExtensions` | `allowExternalIntelligenceIntegrations` | | Mail | `com.apple.mail` / `allowMailIntelligence` | `com.apple.applicationaccess` / `allowMailSmartReplies` + `allowMailSummary` | | Notes | `com.apple.mobilenotes` / `allowNotesIntelligence` | `com.apple.applicationaccess` / `allowNotesTranscription` + `allowNotesTranscriptionSummary` | These profiles would deploy silently but enforce nothing — the keys would be ignored by macOS. The corresponding policy SQL queries also referenced the fabricated keys, so compliance checks would never pass even with the profile applied. **Fix:** Corrected keys, domains, and the corresponding policy SQL queries so compliance checks match what the profiles actually enforce. ### 4. Firewall CSP used wrong URI prefix AI used `./Device/Vendor/MSFT/Firewall/MdmStore/…` but [Microsoft's Firewall CSP documentation](https://learn.microsoft.com/en-us/windows/client-management/mdm/firewall-csp) and Fleet's own production profiles use `./Vendor/MSFT/Firewall/MdmStore/…`. **Fix:** Updated all firewall URIs across 3 platform variants. ### 5. Wrong SIDs in user rights deny policies CIS 2.2.16 (Deny access from network) and 2.2.20 (Deny RDP logon) require denying both **Guests** (`S-1-5-32-546`) and **Local account** (`S-1-5-113`). The AI only included Guests. This is the same error [identified by @AdamBaali in #42748](https://github.com/fleetdm/fleet/issues/42748#issuecomment-4223794562) where the `numa` baseline used `S-1-2-0` (wrong SID entirely). **Fix:** Added `S-1-5-113` to both XML profiles and PS1 scripts. ### 6. macOS scripts had runtime-breaking bugs Scripts copied from `ee/cis/` originals contained issues that would cause failures when deployed via Fleet: | Issue | Scripts affected | Impact | |-------|-----------------|--------| | Hardcoded `` placeholder | CIS_6.1.1, CIS_6.3.6, CIS_2.11.1, CIS_2.6.2 | Shell error — `` parsed as redirect | | Missing `chmod 0440` on sudoers drop-ins | CIS_5.4, CIS_5.5 | macOS sudo silently ignores files without 0440 perms | | `sudo IFS=$'\n'` doesn't set IFS in current shell | CIS_5.1.5, CIS_5.1.6, CIS_5.1.7 | Word splitting breaks on paths with spaces | | Unsafe temp files (`./tmp.txt` in CWD) | CIS_3.2, CIS_3.3, CIS_3.4 | Race condition, fails in read-only CWD | | Missing shebang | CIS_2.6.1.2 | May use wrong shell interpreter | | `not_always_working` scripts with `` | CIS_2.10.1, CIS_2.10.2 | Could never work in automated deployment | **Fix:** Rewrote scripts with dynamic user enumeration, `mktemp`, proper IFS, `visudo` validation. Removed `not_always_working` scripts. ### 7. Policy YAML formatting bugs and spelling - **Computer Browser policy** (win-10, win-11): `resolution: |` was on the same line as description text, causing YAML to swallow the entire resolution into the description — no remediation steps shown. - **Set Time and Date policy** (macOS 13/14/15): Empty `description:` parsed as `null`. - 14 spelling errors across macOS and Windows YAML (`existance`, `Extention` ×8, `recomendation`, `bellow`, `enableds`, `addess` ×2, etc.) - Filename inconsistencies: `on-device-dictiation-enabled` (typo), `2.8.1.disable` (dots vs dashes) --- ## Verification methodology Every CSP OMA-URI and Apple payload key was validated against official vendor documentation: | Category | Count | Source | Result | |----------|-------|--------|--------| | [Audit CSP](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-audit) | 27 | Microsoft docs | 6 corrected | | [UserRights CSP](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-userrights) | 27 | Microsoft docs | All verified correct | | [LocalPoliciesSecurityOptions CSP](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-localpoliciessecurityoptions) | 27 | Microsoft docs | 1 format corrected | | [Firewall CSP](https://learn.microsoft.com/en-us/windows/client-management/mdm/firewall-csp) | 14 | Microsoft docs | All correct (after path fix) | | [Defender CSP](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-defender) | 9 | Microsoft docs | All verified correct | | [Apple applicationaccess](https://github.com/apple/device-management/blob/release/mdm/profiles/com.apple.applicationaccess.yaml) | 13 profiles | Apple device-management repo | 3 corrected | | Fleet GitOps YAML | 1,857 policies | [Fleet GitOps docs](https://fleetdm.com/docs/configuration/yaml-files) | 2 format bugs fixed | | Fleet XML format | 13 files | [`docs/solutions/windows/`](https://github.com/fleetdm/fleet/tree/main/docs/solutions/windows/configuration-profiles) | Reformatted to match | | Fleet blocked CSPs | — | `server/fleet/windows_mdm.go` | No conflicts | | [#43598](https://github.com/fleetdm/fleet/issues/43598) glob bug | 305 files | Filename scan | No `*`, `?`, `[`, `{` in any filename | ## Commits 1. `89d9418` — Copy CIS benchmarks to docs/solutions/cis/ in GitOps-compatible format 2. `bbabb13` — Restructure with policies/, configuration-profiles/, scripts/ subdirs 3. `00004f4` — Promote test artifacts, add Contents to READMEs 4. `786591f` — Add configuration profiles and scripts to all CIS benchmark platforms 5. `0a47a53` — Fix macOS scripts (username placeholders, sudoers perms, IFS, temp files, shebang, dictation typo, remove broken scripts) 6. `4efbd40` — Reformat all 13 Windows XML profiles to Fleet's flat Replace/Item format, fix Firewall CSP paths, fix SIDs 7. `f0abb66` — Fix 6 Audit CSP names: `LogonLogoff_` → `AccountLogonLogoff_` 8. `bfb0f95` — Fix `SmartCardRemovalBehavior` format type (`int` → `chr`) 9. `4cbb33e` — Fix 3 Apple Intelligence profiles (fabricated keys → real Apple keys), fix YAML formatting bugs 10. `d3a0031` — Fix spelling (14 corrections), naming conventions, policy-profile key alignment ## Current state | Platform | Policies | Config Profiles | Scripts | |----------|----------|-----------------|---------| | macOS 13 | 1 YAML (111 policies) | 46 .mobileconfig | 43 .sh | | macOS 14 | 1 YAML (111 policies) | 47 .mobileconfig | 43 .sh | | macOS 15 | 1 YAML (113 policies) | 43 .mobileconfig | 44 .sh | | Windows 10 | 1 YAML (510 policies) | 4 SyncML XML | 5 .ps1 | | Windows 11 | 1 YAML (555 policies) | 4 SyncML XML | 5 .ps1 | | Windows 11 Intune | 3 YAML (457 policies) | 5 SyncML XML | 2 .ps1 | The source files in `ee/cis/` are intentionally left untouched. https://claude.ai/code/session_01DUqJK6iJ8MWMdz2d25ZTNW --------- Co-authored-by: Claude --- docs/solutions/cis/macos-13/README.md | 45 + .../configuration-profiles/1.2.mobileconfig | 37 + .../configuration-profiles/1.3.mobileconfig | 37 + .../configuration-profiles/1.4.mobileconfig | 37 + .../configuration-profiles/1.5.mobileconfig | 37 + .../configuration-profiles/1.6.mobileconfig | 39 + .../configuration-profiles/1.7.mobileconfig | 37 + .../2.1.1.1-enable.mobileconfig | 37 + .../2.1.1.2-disable.mobileconfig | 37 + .../2.1.1.2-enable.mobileconfig | 37 + .../2.1.1.3.mobileconfig | 37 + .../2.10.3.mobileconfig | 37 + .../2.12.3.mobileconfig | 37 + .../configuration-profiles/2.2.1.mobileconfig | 37 + .../configuration-profiles/2.2.2.mobileconfig | 39 + .../2.3.1.1.mobileconfig | 37 + .../2.3.1.2.mobileconfig | 37 + .../2.3.2.1.mobileconfig | 37 + .../2.3.3.10.mobileconfig | 41 + .../2.3.3.9.mobileconfig | 37 + .../configuration-profiles/2.4.1.mobileconfig | 37 + .../configuration-profiles/2.4.2.mobileconfig | 37 + .../2.5.1-disable.mobileconfig | 37 + .../2.5.1-enable.mobileconfig | 37 + .../2.6.1.1.mobileconfig | 37 + .../2.6.2-part1.mobileconfig | 37 + .../2.6.2-part2.mobileconfig | 37 + .../2.6.2-part3.mobileconfig | 37 + .../configuration-profiles/2.6.3.mobileconfig | 37 + .../configuration-profiles/2.6.4.mobileconfig | 39 + .../configuration-profiles/2.6.5.mobileconfig | 37 + .../2.8.1-disable.mobileconfig | 37 + .../2.8.1-enable.mobileconfig | 37 + .../configuration-profiles/3.6.mobileconfig | 41 + .../configuration-profiles/4.1.mobileconfig | 37 + .../configuration-profiles/5.2.1.mobileconfig | 37 + .../configuration-profiles/5.2.2.mobileconfig | 37 + .../5.2.3-and-5.2.4.mobileconfig | 37 + .../configuration-profiles/5.2.5.mobileconfig | 37 + .../configuration-profiles/5.2.7.mobileconfig | 37 + .../configuration-profiles/5.2.8.mobileconfig | 37 + .../configuration-profiles/6.3.1.mobileconfig | 37 + .../configuration-profiles/6.3.2.mobileconfig | 38 + .../configuration-profiles/6.3.3.mobileconfig | 37 + .../configuration-profiles/6.3.4.mobileconfig | 41 + .../configuration-profiles/6.3.7.mobileconfig | 37 + .../configuration-profiles/6.4.1.mobileconfig | 37 + .../macos-13/policies/cis-policy-queries.yml | 3235 ++++++ .../cis/macos-13/scripts/CIS_2.10.3.sh | 3 + .../cis/macos-13/scripts/CIS_2.10.4.sh | 3 + .../cis/macos-13/scripts/CIS_2.10.5.sh | 3 + .../cis/macos-13/scripts/CIS_2.11.1.sh | 11 + .../cis/macos-13/scripts/CIS_2.12.1.sh | 4 + .../cis/macos-13/scripts/CIS_2.12.2.sh | 9 + .../cis/macos-13/scripts/CIS_2.12.3.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.1.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.2.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.3.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.4.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.5.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.6.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.7.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.3.8.sh | 3 + .../cis/macos-13/scripts/CIS_2.3.4.1.sh | 8 + .../cis/macos-13/scripts/CIS_2.6.1.2.sh | 4 + .../cis/macos-13/scripts/CIS_2.6.2.sh | 16 + .../cis/macos-13/scripts/CIS_2.6.4.sh | 3 + .../cis/macos-13/scripts/CIS_2.6.7.sh | 6 + .../cis/macos-13/scripts/CIS_2.7.1.sh | 9 + .../cis/macos-13/scripts/CIS_2.9.1.sh | 3 + .../cis/macos-13/scripts/CIS_2.9.2.sh | 3 + .../cis/macos-13/scripts/CIS_2.9.3.sh | 15 + .../solutions/cis/macos-13/scripts/CIS_3.1.sh | 7 + .../solutions/cis/macos-13/scripts/CIS_3.2.sh | 12 + .../solutions/cis/macos-13/scripts/CIS_3.3.sh | 11 + .../solutions/cis/macos-13/scripts/CIS_3.4.sh | 23 + .../solutions/cis/macos-13/scripts/CIS_3.5.sh | 7 + .../solutions/cis/macos-13/scripts/CIS_4.2.sh | 3 + .../solutions/cis/macos-13/scripts/CIS_4.3.sh | 4 + .../cis/macos-13/scripts/CIS_5.1.1.sh | 5 + .../cis/macos-13/scripts/CIS_5.1.5.sh | 9 + .../cis/macos-13/scripts/CIS_5.1.6.sh | 9 + .../cis/macos-13/scripts/CIS_5.1.7.sh | 9 + .../cis/macos-13/scripts/CIS_5.10.sh | 3 + .../solutions/cis/macos-13/scripts/CIS_5.4.sh | 17 + .../solutions/cis/macos-13/scripts/CIS_5.5.sh | 17 + .../solutions/cis/macos-13/scripts/CIS_5.6.sh | 3 + .../solutions/cis/macos-13/scripts/CIS_5.7.sh | 3 + .../solutions/cis/macos-13/scripts/CIS_5.8.sh | 5 + .../cis/macos-13/scripts/CIS_6.1.1.sh | 11 + .../cis/macos-13/scripts/CIS_6.3.6.sh | 12 + docs/solutions/cis/macos-14/README.md | 45 + .../configuration-profiles/1.2.mobileconfig | 37 + .../configuration-profiles/1.3.mobileconfig | 37 + .../configuration-profiles/1.4.mobileconfig | 37 + .../configuration-profiles/1.5.mobileconfig | 37 + .../configuration-profiles/1.6.mobileconfig | 39 + .../configuration-profiles/1.7.mobileconfig | 37 + .../2.1.1.1-enable.mobileconfig | 37 + .../2.1.1.2-disable.mobileconfig | 37 + .../2.1.1.2-enable.mobileconfig | 37 + .../2.1.1.3.mobileconfig | 37 + .../2.10.3.mobileconfig | 37 + .../2.12.3.mobileconfig | 37 + .../configuration-profiles/2.2.1.mobileconfig | 37 + .../configuration-profiles/2.2.2.mobileconfig | 39 + .../2.3.1.1.mobileconfig | 37 + .../2.3.1.2.mobileconfig | 37 + .../2.3.2.1.mobileconfig | 37 + .../2.3.3.10.mobileconfig | 41 + .../2.3.3.9.mobileconfig | 37 + .../configuration-profiles/2.4.1.mobileconfig | 37 + .../configuration-profiles/2.4.2.mobileconfig | 37 + .../2.5.1-disable.mobileconfig | 37 + .../2.5.1-enable.mobileconfig | 37 + .../2.6.1.1.mobileconfig | 37 + .../2.6.2-part1.mobileconfig | 37 + .../2.6.2-part2.mobileconfig | 37 + .../2.6.2-part3.mobileconfig | 37 + .../configuration-profiles/2.6.3.mobileconfig | 37 + .../configuration-profiles/2.6.4.mobileconfig | 39 + .../configuration-profiles/2.6.5.mobileconfig | 37 + .../2.8.1-disable.mobileconfig | 37 + .../2.8.1-enable.mobileconfig | 37 + .../configuration-profiles/3.6.mobileconfig | 41 + .../configuration-profiles/4.1.mobileconfig | 37 + .../configuration-profiles/5.2.1.mobileconfig | 37 + .../configuration-profiles/5.2.2.mobileconfig | 37 + .../5.2.3-and-5.2.4.mobileconfig | 37 + .../configuration-profiles/5.2.5.mobileconfig | 37 + .../configuration-profiles/5.2.7.mobileconfig | 37 + .../configuration-profiles/5.2.8.mobileconfig | 37 + .../configuration-profiles/6.3.1.mobileconfig | 37 + .../configuration-profiles/6.3.2.mobileconfig | 38 + .../configuration-profiles/6.3.3.mobileconfig | 37 + .../configuration-profiles/6.3.4.mobileconfig | 41 + .../configuration-profiles/6.3.7.mobileconfig | 37 + .../configuration-profiles/6.4.1.mobileconfig | 37 + .../on-device-dictation-enabled.mobileconfig | 37 + .../macos-14/policies/cis-policy-queries.yml | 3304 ++++++ .../cis/macos-14/scripts/CIS_2.10.3.sh | 3 + .../cis/macos-14/scripts/CIS_2.10.4.sh | 3 + .../cis/macos-14/scripts/CIS_2.10.5.sh | 3 + .../cis/macos-14/scripts/CIS_2.11.1.sh | 11 + .../cis/macos-14/scripts/CIS_2.12.1.sh | 4 + .../cis/macos-14/scripts/CIS_2.12.2.sh | 9 + .../cis/macos-14/scripts/CIS_2.12.3.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.1.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.2.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.3.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.4.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.5.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.6.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.7.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.3.8.sh | 3 + .../cis/macos-14/scripts/CIS_2.3.4.1.sh | 8 + .../cis/macos-14/scripts/CIS_2.6.1.2.sh | 4 + .../cis/macos-14/scripts/CIS_2.6.2.sh | 16 + .../cis/macos-14/scripts/CIS_2.6.4.sh | 3 + .../cis/macos-14/scripts/CIS_2.6.7.sh | 6 + .../cis/macos-14/scripts/CIS_2.7.1.sh | 9 + .../cis/macos-14/scripts/CIS_2.9.1.sh | 3 + .../cis/macos-14/scripts/CIS_2.9.2.sh | 3 + .../cis/macos-14/scripts/CIS_2.9.3.sh | 15 + .../solutions/cis/macos-14/scripts/CIS_3.1.sh | 7 + .../solutions/cis/macos-14/scripts/CIS_3.2.sh | 12 + .../solutions/cis/macos-14/scripts/CIS_3.3.sh | 11 + .../solutions/cis/macos-14/scripts/CIS_3.4.sh | 23 + .../solutions/cis/macos-14/scripts/CIS_3.5.sh | 7 + .../solutions/cis/macos-14/scripts/CIS_4.2.sh | 3 + .../solutions/cis/macos-14/scripts/CIS_4.3.sh | 4 + .../cis/macos-14/scripts/CIS_5.1.1.sh | 5 + .../cis/macos-14/scripts/CIS_5.1.5.sh | 9 + .../cis/macos-14/scripts/CIS_5.1.6.sh | 9 + .../cis/macos-14/scripts/CIS_5.1.7.sh | 9 + .../cis/macos-14/scripts/CIS_5.10.sh | 3 + .../solutions/cis/macos-14/scripts/CIS_5.4.sh | 17 + .../solutions/cis/macos-14/scripts/CIS_5.5.sh | 17 + .../solutions/cis/macos-14/scripts/CIS_5.6.sh | 3 + .../solutions/cis/macos-14/scripts/CIS_5.7.sh | 3 + .../solutions/cis/macos-14/scripts/CIS_5.8.sh | 5 + .../cis/macos-14/scripts/CIS_6.1.1.sh | 11 + .../cis/macos-14/scripts/CIS_6.3.6.sh | 12 + docs/solutions/cis/macos-15/README.md | 46 + .../configuration-profiles/1.3.mobileconfig | 37 + .../configuration-profiles/1.4.mobileconfig | 37 + .../configuration-profiles/1.5.mobileconfig | 37 + .../configuration-profiles/1.7.mobileconfig | 37 + .../2.1.1.1-enable.mobileconfig | 37 + .../2.1.1.2-disable.mobileconfig | 37 + .../2.1.1.2-enable.mobileconfig | 37 + .../2.1.1.3.mobileconfig | 37 + .../2.10.3.mobileconfig | 37 + .../2.12.3.mobileconfig | 37 + .../2.3.1.1.mobileconfig | 37 + .../2.3.1.2.mobileconfig | 37 + .../2.3.2.1.mobileconfig | 37 + .../2.3.3.9.mobileconfig | 37 + .../configuration-profiles/2.4.1.mobileconfig | 37 + .../configuration-profiles/2.4.2.mobileconfig | 37 + .../2.5.1-disable.mobileconfig | 37 + .../2.5.1-enable.mobileconfig | 37 + .../2.6.2-part1.mobileconfig | 37 + .../2.6.2-part2.mobileconfig | 37 + .../2.6.2-part3.mobileconfig | 37 + .../configuration-profiles/2.6.3.mobileconfig | 37 + .../configuration-profiles/2.6.5.mobileconfig | 37 + .../2.8.1-disable.mobileconfig | 37 + .../2.8.1-enable.mobileconfig | 37 + .../configuration-profiles/4.1.mobileconfig | 37 + .../configuration-profiles/5.2.1.mobileconfig | 37 + .../configuration-profiles/5.2.2.mobileconfig | 37 + .../5.2.3-and-5.2.4.mobileconfig | 37 + .../configuration-profiles/5.2.5.mobileconfig | 37 + .../configuration-profiles/5.2.7.mobileconfig | 37 + .../configuration-profiles/5.2.8.mobileconfig | 37 + .../configuration-profiles/6.3.1.mobileconfig | 37 + .../configuration-profiles/6.3.2.mobileconfig | 38 + .../configuration-profiles/6.3.3.mobileconfig | 37 + .../configuration-profiles/6.3.4.mobileconfig | 41 + .../configuration-profiles/6.3.7.mobileconfig | 37 + .../configuration-profiles/6.4.1.mobileconfig | 37 + ...apple-intelligence-extensions.mobileconfig | 37 + .../apple-intelligence-mail.mobileconfig | 41 + .../apple-intelligence-notes.mobileconfig | 41 + ...le-intelligence-writing-tools.mobileconfig | 37 + .../on-device-dictation-enabled.mobileconfig | 37 + .../macos-15/policies/cis-policy-queries.yml | 3296 ++++++ .../cis/macos-15/scripts/CIS_2.10.3.sh | 3 + .../cis/macos-15/scripts/CIS_2.10.4.sh | 3 + .../cis/macos-15/scripts/CIS_2.10.5.sh | 3 + .../cis/macos-15/scripts/CIS_2.11.1.sh | 11 + .../cis/macos-15/scripts/CIS_2.12.1.sh | 4 + .../cis/macos-15/scripts/CIS_2.12.2.sh | 9 + .../cis/macos-15/scripts/CIS_2.12.3.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.1.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.2.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.3.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.4.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.5.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.6.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.7.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.3.8.sh | 3 + .../cis/macos-15/scripts/CIS_2.3.4.1.sh | 8 + .../cis/macos-15/scripts/CIS_2.6.1.2.sh | 4 + .../cis/macos-15/scripts/CIS_2.6.2.sh | 16 + .../cis/macos-15/scripts/CIS_2.6.4.sh | 3 + .../cis/macos-15/scripts/CIS_2.6.7.sh | 6 + .../cis/macos-15/scripts/CIS_2.7.1.sh | 9 + .../cis/macos-15/scripts/CIS_2.9.1.sh | 3 + .../cis/macos-15/scripts/CIS_2.9.2.sh | 3 + .../cis/macos-15/scripts/CIS_2.9.3.sh | 15 + .../solutions/cis/macos-15/scripts/CIS_3.1.sh | 7 + .../solutions/cis/macos-15/scripts/CIS_3.2.sh | 12 + .../solutions/cis/macos-15/scripts/CIS_3.3.sh | 11 + .../solutions/cis/macos-15/scripts/CIS_3.4.sh | 23 + .../solutions/cis/macos-15/scripts/CIS_3.5.sh | 7 + .../solutions/cis/macos-15/scripts/CIS_4.2.sh | 3 + .../solutions/cis/macos-15/scripts/CIS_4.3.sh | 4 + .../cis/macos-15/scripts/CIS_5.1.1.sh | 5 + .../cis/macos-15/scripts/CIS_5.1.5.sh | 9 + .../cis/macos-15/scripts/CIS_5.1.6.sh | 9 + .../cis/macos-15/scripts/CIS_5.1.7.sh | 9 + .../cis/macos-15/scripts/CIS_5.10.sh | 3 + .../solutions/cis/macos-15/scripts/CIS_5.4.sh | 17 + .../solutions/cis/macos-15/scripts/CIS_5.5.sh | 17 + .../solutions/cis/macos-15/scripts/CIS_5.6.sh | 3 + .../solutions/cis/macos-15/scripts/CIS_5.7.sh | 3 + .../solutions/cis/macos-15/scripts/CIS_5.8.sh | 5 + .../cis/macos-15/scripts/CIS_6.1.1.sh | 11 + .../cis/macos-15/scripts/CIS_6.3.6.sh | 12 + .../cis/macos-15/scripts/CIS_sudo_logging.sh | 35 + docs/solutions/cis/win-10/README.md | 23 + .../configuration-profiles/audit-policies.xml | 325 + .../configuration-profiles/firewall.xml | 169 + .../local-security-options.xml | 57 + .../user-rights-assignment.xml | 328 + .../win-10/policies/cis-policy-queries.yml | 8749 +++++++++++++++ .../scripts/account-and-password-policies.ps1 | 136 + .../cis/win-10/scripts/audit-policy.ps1 | 145 + .../win-10/scripts/user-rights-assignment.ps1 | 177 + .../cis/win-10/scripts/windows-firewall.ps1 | 96 + .../cis/win-10/scripts/windows-settings.ps1 | 265 + docs/solutions/cis/win-11-intune/README.md | 31 + .../configuration-profiles/audit-policies.xml | 325 + .../configuration-profiles/firewall.xml | 169 + .../local-security-options.xml | 318 + .../user-rights-assignment.xml | 328 + .../windows-defender.xml | 123 + .../policies/bl_win11_intune.yml | 276 + .../policies/l1_win11_intune.yml | 9664 +++++++++++++++++ .../policies/l2_win11_intune.yml | 692 ++ .../scripts/account-and-password-policies.ps1 | 136 + .../scripts/registry-settings.ps1 | 210 + docs/solutions/cis/win-11/README.md | 23 + .../configuration-profiles/audit-policies.xml | 325 + .../configuration-profiles/firewall.xml | 169 + .../local-security-options.xml | 57 + .../user-rights-assignment.xml | 328 + .../win-11/policies/cis-policy-queries.yml | 9520 ++++++++++++++++ .../scripts/account-and-password-policies.ps1 | 136 + .../cis/win-11/scripts/audit-policy.ps1 | 145 + .../win-11/scripts/user-rights-assignment.ps1 | 177 + .../cis/win-11/scripts/windows-firewall.ps1 | 96 + .../cis/win-11/scripts/windows-settings.ps1 | 265 + 305 files changed, 49963 insertions(+) create mode 100644 docs/solutions/cis/macos-13/README.md create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/1.2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/1.3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/1.4.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/1.5.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/1.6.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/1.7.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.1.1.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.1.1.3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.10.3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.12.3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.2.2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.3.1.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.3.1.2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.3.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.3.3.10.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.3.3.9.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.4.2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.5.1-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.5.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.1.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.4.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.6.5.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.8.1-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/2.8.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/3.6.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/5.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/5.2.2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/5.2.3-and-5.2.4.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/5.2.5.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/5.2.7.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/5.2.8.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/6.3.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/6.3.2.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/6.3.3.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/6.3.4.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/6.3.7.mobileconfig create mode 100644 docs/solutions/cis/macos-13/configuration-profiles/6.4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-13/policies/cis-policy-queries.yml create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.10.3.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.10.4.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.10.5.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.11.1.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.12.1.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.12.2.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.12.3.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.1.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.2.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.3.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.4.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.5.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.6.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.7.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.3.8.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.3.4.1.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.6.1.2.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_2.6.2.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.6.4.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_2.6.7.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_2.7.1.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_2.9.1.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_2.9.2.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_2.9.3.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_3.1.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_3.2.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_3.3.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_3.4.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_3.5.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_4.2.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_4.3.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_5.1.1.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_5.1.5.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_5.1.6.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_5.1.7.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_5.10.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_5.4.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_5.5.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_5.6.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_5.7.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_5.8.sh create mode 100755 docs/solutions/cis/macos-13/scripts/CIS_6.1.1.sh create mode 100644 docs/solutions/cis/macos-13/scripts/CIS_6.3.6.sh create mode 100644 docs/solutions/cis/macos-14/README.md create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/1.2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/1.3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/1.4.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/1.5.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/1.6.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/1.7.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.1.1.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.1.1.3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.10.3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.12.3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.2.2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.3.1.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.3.1.2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.3.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.3.3.10.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.3.3.9.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.4.2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.5.1-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.5.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.1.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.4.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.6.5.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.8.1-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/2.8.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/3.6.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/5.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/5.2.2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/5.2.3-and-5.2.4.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/5.2.5.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/5.2.7.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/5.2.8.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/6.3.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/6.3.2.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/6.3.3.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/6.3.4.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/6.3.7.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/6.4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-14/configuration-profiles/on-device-dictation-enabled.mobileconfig create mode 100644 docs/solutions/cis/macos-14/policies/cis-policy-queries.yml create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.10.3.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.10.4.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.10.5.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.11.1.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.12.1.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.12.2.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.12.3.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.1.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.2.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.3.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.4.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.5.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.6.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.7.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.3.8.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.3.4.1.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.6.1.2.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_2.6.2.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.6.4.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_2.6.7.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_2.7.1.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_2.9.1.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_2.9.2.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_2.9.3.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_3.1.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_3.2.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_3.3.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_3.4.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_3.5.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_4.2.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_4.3.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_5.1.1.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_5.1.5.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_5.1.6.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_5.1.7.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_5.10.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_5.4.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_5.5.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_5.6.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_5.7.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_5.8.sh create mode 100755 docs/solutions/cis/macos-14/scripts/CIS_6.1.1.sh create mode 100644 docs/solutions/cis/macos-14/scripts/CIS_6.3.6.sh create mode 100644 docs/solutions/cis/macos-15/README.md create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/1.3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/1.4.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/1.5.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/1.7.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.1.1.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.1.1.3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.10.3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.12.3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.3.1.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.3.1.2.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.3.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.3.3.9.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.4.2.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.5.1-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.5.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part2.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.6.3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.6.5.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.8.1-disable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/2.8.1-enable.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/5.2.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/5.2.2.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/5.2.3-and-5.2.4.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/5.2.5.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/5.2.7.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/5.2.8.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/6.3.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/6.3.2.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/6.3.3.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/6.3.4.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/6.3.7.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/6.4.1.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-extensions.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-mail.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-notes.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-writing-tools.mobileconfig create mode 100644 docs/solutions/cis/macos-15/configuration-profiles/on-device-dictation-enabled.mobileconfig create mode 100644 docs/solutions/cis/macos-15/policies/cis-policy-queries.yml create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.10.3.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.10.4.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.10.5.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.11.1.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.12.1.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.12.2.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.12.3.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.1.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.2.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.3.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.4.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.5.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.6.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.7.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.3.8.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.3.4.1.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.6.1.2.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_2.6.2.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.6.4.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_2.6.7.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_2.7.1.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_2.9.1.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_2.9.2.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_2.9.3.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_3.1.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_3.2.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_3.3.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_3.4.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_3.5.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_4.2.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_4.3.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_5.1.1.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_5.1.5.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_5.1.6.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_5.1.7.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_5.10.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_5.4.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_5.5.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_5.6.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_5.7.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_5.8.sh create mode 100755 docs/solutions/cis/macos-15/scripts/CIS_6.1.1.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_6.3.6.sh create mode 100644 docs/solutions/cis/macos-15/scripts/CIS_sudo_logging.sh create mode 100644 docs/solutions/cis/win-10/README.md create mode 100644 docs/solutions/cis/win-10/configuration-profiles/audit-policies.xml create mode 100644 docs/solutions/cis/win-10/configuration-profiles/firewall.xml create mode 100644 docs/solutions/cis/win-10/configuration-profiles/local-security-options.xml create mode 100644 docs/solutions/cis/win-10/configuration-profiles/user-rights-assignment.xml create mode 100644 docs/solutions/cis/win-10/policies/cis-policy-queries.yml create mode 100644 docs/solutions/cis/win-10/scripts/account-and-password-policies.ps1 create mode 100644 docs/solutions/cis/win-10/scripts/audit-policy.ps1 create mode 100644 docs/solutions/cis/win-10/scripts/user-rights-assignment.ps1 create mode 100644 docs/solutions/cis/win-10/scripts/windows-firewall.ps1 create mode 100644 docs/solutions/cis/win-10/scripts/windows-settings.ps1 create mode 100644 docs/solutions/cis/win-11-intune/README.md create mode 100644 docs/solutions/cis/win-11-intune/configuration-profiles/audit-policies.xml create mode 100644 docs/solutions/cis/win-11-intune/configuration-profiles/firewall.xml create mode 100644 docs/solutions/cis/win-11-intune/configuration-profiles/local-security-options.xml create mode 100644 docs/solutions/cis/win-11-intune/configuration-profiles/user-rights-assignment.xml create mode 100644 docs/solutions/cis/win-11-intune/configuration-profiles/windows-defender.xml create mode 100644 docs/solutions/cis/win-11-intune/policies/bl_win11_intune.yml create mode 100644 docs/solutions/cis/win-11-intune/policies/l1_win11_intune.yml create mode 100644 docs/solutions/cis/win-11-intune/policies/l2_win11_intune.yml create mode 100644 docs/solutions/cis/win-11-intune/scripts/account-and-password-policies.ps1 create mode 100644 docs/solutions/cis/win-11-intune/scripts/registry-settings.ps1 create mode 100644 docs/solutions/cis/win-11/README.md create mode 100644 docs/solutions/cis/win-11/configuration-profiles/audit-policies.xml create mode 100644 docs/solutions/cis/win-11/configuration-profiles/firewall.xml create mode 100644 docs/solutions/cis/win-11/configuration-profiles/local-security-options.xml create mode 100644 docs/solutions/cis/win-11/configuration-profiles/user-rights-assignment.xml create mode 100644 docs/solutions/cis/win-11/policies/cis-policy-queries.yml create mode 100644 docs/solutions/cis/win-11/scripts/account-and-password-policies.ps1 create mode 100644 docs/solutions/cis/win-11/scripts/audit-policy.ps1 create mode 100644 docs/solutions/cis/win-11/scripts/user-rights-assignment.ps1 create mode 100644 docs/solutions/cis/win-11/scripts/windows-firewall.ps1 create mode 100644 docs/solutions/cis/win-11/scripts/windows-settings.ps1 diff --git a/docs/solutions/cis/macos-13/README.md b/docs/solutions/cis/macos-13/README.md new file mode 100644 index 0000000000..59c30a77a1 --- /dev/null +++ b/docs/solutions/cis/macos-13/README.md @@ -0,0 +1,45 @@ +# macOS 13.0 Ventura benchmark + +Fleet's policies have been written against v3.1.0 of the benchmark. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. + +For requirements and usage details, see the [CIS Benchmarks](https://fleetdm.com/docs/using-fleet/cis-benchmarks) documentation. + +### Contents + +| Folder | Description | +|--------|-------------| +| `policies/` | GitOps-compatible policy YAML — import via `fleetctl apply` or reference with `- path:` in `fleet.yml` | +| `configuration-profiles/` | Apple `.mobileconfig` profiles — upload via Fleet UI or `fleetctl apply` to enforce the settings checked by the policies | +| `scripts/` | Shell scripts — upload via Fleet UI or `fleetctl apply` and link as `run_script` remediation in the corresponding policy | + +### Limitations + +The following CIS benchmarks cannot be checked with a policy in Fleet: +1. 2.1.2 Audit App Store Password Settings +2. 2.3.3.12 Ensure Computer Name Does Not Contain PII or Protected Organizational Information +3. 2.6.6 Audit Lockdown Mode +4. 2.11.2 Audit Touch ID and Wallet & Apple Pay Settings +5. 2.13.1 Audit Passwords System Preference Setting +6. 2.14.1 Audit Notification & Focus Settings +7. 3.7 Audit Software Inventory +8. 6.2.1 Ensure Protect Mail Activity in Mail Is Enabled + +### Checks that require decision + +CIS has left the parameters of the following checks up to the benchmark implementer. CIS recommends that an organization make a conscious decision for these benchmarks, but does not make a specific recommendation. + +Fleet has provided both an "enabled" and "disabled" version of these benchmarks. When both policies are added, at least one will fail. Once your organization has made a decision, you can delete one or the other policy. +The policy will be appended with a `-enabled` or `-disabled` label, such as `2.1.1.1-enabled`. + +- 2.1.1.1 Audit iCloud Keychain +- 2.1.1.2 Audit iCloud Drive +- 2.5.1 Audit Siri +- 2.8.1 Audit Universal Control + +Furthermore, CIS has decided to not require the following password complexity settings: +- 5.2.3 Ensure Complex Password Must Contain Alphabetic Characters Is Configured +- 5.2.4 Ensure Complex Password Must Contain Numeric Character Is Configured +- 5.2.5 Ensure Complex Password Must Contain Special Character Is Configured +- 5.2.6 Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured + +However, Fleet has provided these as policies. If your organization declines to implement these, simply delete the corresponding policies. diff --git a/docs/solutions/cis/macos-13/configuration-profiles/1.2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/1.2.mobileconfig new file mode 100644 index 0000000000..5d576e4d7c --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/1.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.2.check + PayloadUUID + 4DC539B5-837E-4DC3-B60B-43A8C556A8F0 + AutomaticCheckEnabled + + + + PayloadDescription + test + PayloadDisplayName + Ensure Auto Update Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 03E69A02-02CE-4CA0-8F17-3BAAD5D3852F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/1.3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/1.3.mobileconfig new file mode 100644 index 0000000000..a2bd6671ec --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/1.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.3.check + PayloadUUID + 5FDE6D58-79CD-447A-AFB0-BA32D889C396 + AutomaticDownload + + + + PayloadDescription + test + PayloadDisplayName + Ensure Download New Updates When Available Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0A1C2F97-D6FA-4CDB-ABB6-47DF2B151F4F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/1.4.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/1.4.mobileconfig new file mode 100644 index 0000000000..bee74453b5 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/1.4.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.4.check + PayloadUUID + 15BF7634-276A-411B-8C4E-52D89B4ED82C + AutomaticallyInstallMacOSUpdates + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install of macOS Updates Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7DB8733E-BD11-4E88-9AE0-273EF2D0974B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/1.5.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/1.5.mobileconfig new file mode 100644 index 0000000000..416b7a0d85 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/1.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.5.check + PayloadUUID + 6B0285F8-5DB8-4F68-AA6E-2333CCD6CE04 + AutomaticallyInstallAppUpdates + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install Application Updates from the App Store Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1C4C0EC4-64A7-4AF0-8807-A3DD44A6DC76 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/1.6.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/1.6.mobileconfig new file mode 100644 index 0000000000..263f12fcb5 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/1.6.mobileconfig @@ -0,0 +1,39 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.6.check + PayloadUUID + 0D8F676A-A705-4F57-8FF8-3118360EFDEB + ConfigDataInstall + + CriticalUpdateInstall + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install Security Responses and System Files Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.6 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + EBEE9B81-9D33-477F-AFBE-9691360B7A74 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/1.7.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/1.7.mobileconfig new file mode 100644 index 0000000000..1dcca5b3b0 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/1.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-1.7.check + PayloadUUID + 123FD592-D1C3-41FD-BC41-F91F3E1E2CF4 + enforcedSoftwareUpdateDelay + 29 + + + PayloadDescription + test + PayloadDisplayName + Ensure Software Update Deferment Is Less Than or Equal to 30 Days + PayloadIdentifier + com.zwass.cis-1.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 385A0C13-2472-41B3-851C-1311FA12EB49 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.1-enable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.1-enable.mobileconfig new file mode 100644 index 0000000000..9a8bc0992f --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.1.check-enable + PayloadUUID + 68D8C498-FB81-4262-9EF4-E689B5A6B40F + allowCloudKeychainSync + + + + PayloadDescription + test + PayloadDisplayName + Ensure iCloud Keychain is enabled + PayloadIdentifier + com.fleetdm.cis-2.1.1.1-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + EE1BA83A-E145-4F5B-9597-836DC357BBE7 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-disable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-disable.mobileconfig new file mode 100644 index 0000000000..f701b8fa75 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.2.check-disable + PayloadUUID + 1028E002-9AFE-446A-84E0-27DA5DA39B4A + allowCloudDocumentSync + + + + PayloadDescription + test + PayloadDisplayName + Disable iCloud Drive storage solution usage + PayloadIdentifier + com.fleetdm.cis-2.1.1.2-disable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7B3DE4EA-0AFA-44F5-9716-37526EE441EA + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-enable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-enable.mobileconfig new file mode 100644 index 0000000000..50d8788d77 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.2-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.2.check-enable + PayloadUUID + 8618AA0E-B6AC-4D1C-AE01-C46956EC1926 + allowCloudDocumentSync + + + + PayloadDescription + test + PayloadDisplayName + Enable iCloud Drive storage solution usage + PayloadIdentifier + com.fleetdm.cis-2.1.1.2-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2C2FC587-14E8-4A52-98B5-30BA1C975BBA + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.3.mobileconfig new file mode 100644 index 0000000000..a210df0a09 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.1.1.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.3.check + PayloadUUID + 5F0EF767-200C-4E10-A43D-04204A4A8E06 + allowCloudDesktopAndDocuments + + + + PayloadDescription + test + PayloadDisplayName + Ensure iCloud Drive Document and Desktop Sync Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.1.1.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2EAF168E-3DC9-4375-AA37-501EDB3C8422 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.10.3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.10.3.mobileconfig new file mode 100644 index 0000000000..c9ecbd26d5 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.10.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.loginwindow + PayloadIdentifier + com.fleetdm.cis-2.10.3.check + PayloadUUID + 3E4C4ED8-ADB6-4EFB-8198-58027B94DF86 + LoginwindowText + Some Test Message + + + PayloadDescription + test + PayloadDisplayName + Ensure a Custom Message for the Login Screen Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.10.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 9359CA59-D3C1-4A0D-8595-9E5F1F0CAE12 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.12.3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.12.3.mobileconfig new file mode 100644 index 0000000000..217b1d5ebe --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.12.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.loginwindow + PayloadIdentifier + com.fleetdm.cis-2.12.3.check + PayloadUUID + CB576629-19E2-4649-84FC-C007826732A0 + com.apple.login.mcx.DisableAutoLoginClient + + + + PayloadDescription + test + PayloadDisplayName + Ensure Automatic Login Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.12.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0AEDE730-9466-47D1-B322-3C6F325B3737 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.2.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.2.1.mobileconfig new file mode 100644 index 0000000000..8f9d756837 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.security.firewall + PayloadIdentifier + com.fleetdm.cis-2.2.1.check + PayloadUUID + D12965C1-12BD-4CAD-A55A-E7F020B0DAAF + EnableFirewall + + + + PayloadDescription + test + PayloadDisplayName + Ensure Firewall Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F0BFF592-1CB7-4922-B2D4-583415DC4A0B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.2.2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.2.2.mobileconfig new file mode 100644 index 0000000000..c9c16ef88a --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.2.2.mobileconfig @@ -0,0 +1,39 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.security.firewall + PayloadIdentifier + com.fleetdm.cis-2.2.2.check + PayloadUUID + 2D2A07FB-3700-4ED8-AF06-6A2213F4C634 + EnableFirewall + + EnableStealthMode + + + + PayloadDescription + test + PayloadDisplayName + Ensure Firewall Stealth Mode Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.2.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E0B831D6-F214-4F1F-967C-B75B38B26708 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.3.1.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.3.1.1.mobileconfig new file mode 100644 index 0000000000..5453a36d7e --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.3.1.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.1.1.check + PayloadUUID + 22F2E52E-E593-40F7-8635-E067EDEE4F60 + allowAirDrop + + + + PayloadDescription + test + PayloadDisplayName + Ensure AirDrop Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.1.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 55DC048E-1490-4A26-8A97-4A4EA91A7302 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.3.1.2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.3.1.2.mobileconfig new file mode 100644 index 0000000000..707f9c26c6 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.3.1.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.1.2.check + PayloadUUID + BF58FD50-E4EC-4427-A549-1BCD7B88FCEB + allowAirPlayIncomingRequests + + + + PayloadDescription + test + PayloadDisplayName + Ensure AirPlay Receiver Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.1.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 633BD4E3-849E-485E-A784-AA80D86E83A3 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.3.2.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.3.2.1.mobileconfig new file mode 100644 index 0000000000..f299a44c1f --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.3.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.2.1.check + PayloadUUID + C5CFF95F-7E77-4B0E-8136-2729A481D60A + forceAutomaticDateAndTime + + + + PayloadDescription + test + PayloadDisplayName + Ensure Set Time and Date Automatically Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.3.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + CEA7E3A6-E5DF-4A93-ABB7-45F36BF3D3E8 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.3.3.10.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.3.3.10.mobileconfig new file mode 100644 index 0000000000..28fa7f39e6 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.3.3.10.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.preferences.sharing.SharingPrefsExtension + PayloadIdentifier + com.fleetdm.cis-2.3.3.10-check + PayloadUUID + DC34D1FA-3D14-4AEA-844B-FDEC49CD73BB + homeSharingUIStatus + 0 + legacySharingUIStatus + 0 + mediaSharingUIStatus + 0 + + + PayloadDescription + test + PayloadDisplayName + Ensure Media Sharing is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.3.10 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 9FD8A0FB-2F7C-41C4-A3FB-90E953BCD433 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.3.3.9.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.3.3.9.mobileconfig new file mode 100644 index 0000000000..7c5eb6352e --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.3.3.9.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.3.9.check + PayloadUUID + 85956359-CF0A-46C8-BD7C-26060ABB9119 + allowContentCaching + + + + PayloadDescription + test + PayloadDisplayName + Ensure Content Caching Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.3.9 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + AA4372B4-5D36-4660-A2FC-07067C94A91F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.4.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.4.1.mobileconfig new file mode 100644 index 0000000000..528cd219b6 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.controlcenter + PayloadIdentifier + com.fleetdm.cis-2.4.1.check + PayloadUUID + B97CBDF6-1EB7-424C-86DE-E11892B223F3 + WiFi + 18 + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Wi-Fi status in Menu Bar Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2357BB9E-FD15-4E1D-A1CC-12C7798E1483 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.4.2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.4.2.mobileconfig new file mode 100644 index 0000000000..0d0349d040 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.4.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.controlcenter + PayloadIdentifier + com.fleetdm.cis-2.4.2.check + PayloadUUID + FC6045C3-FFD7-4C0A-A3D5-ED0ADB9FF391 + Bluetooth + 18 + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Bluetooth Status in Menu Bar Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.4.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F997FFD6-7E39-48C7-A451-B12A79B6FA22 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.5.1-disable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.5.1-disable.mobileconfig new file mode 100644 index 0000000000..cf61d53acb --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.5.1-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.5.1.check-disable + PayloadUUID + 4B56DF79-ECAF-4175-AACC-95F08A980B6C + allowAssistant + + + + PayloadDescription + test + PayloadDisplayName + Disable Siri + PayloadIdentifier + com.fleetdm.cis-2.5.1-disable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + FB3E1980-5FE2-4C8F-BCF8-6FFF4117C962 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.5.1-enable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.5.1-enable.mobileconfig new file mode 100644 index 0000000000..5bac3db11a --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.5.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.5.1.check-enable + PayloadUUID + DC0652C5-E996-408F-84A0-9F09657FD771 + allowAssistant + + + + PayloadDescription + test + PayloadDisplayName + Enable Siri + PayloadIdentifier + com.fleetdm.cis-2.5.1-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F5001E34-CC4D-4951-A7A3-A95DC02F0090 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.1.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.1.1.mobileconfig new file mode 100644 index 0000000000..097323330d --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.1.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.locationd + PayloadIdentifier + com.fleetdm.cis-2.6.1.1.check + PayloadUUID + 25D6B210-E8BB-465F-94D7-474073F4A892 + LocationServicesEnabled + + + + PayloadDescription + test + PayloadDisplayName + Ensure Location Services Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.1.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 8FC698D7-9EF8-427E-8E52-4B928A7437B0 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part1.mobileconfig new file mode 100644 index 0000000000..c57d32092c --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.2-part1.check + PayloadUUID + 9A6BF497-B715-453A-A7F7-D27C325EB5B3 + allowDiagnosticSubmission + + + + PayloadDescription + test + PayloadDisplayName + Ensure Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 1) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7D03459B-AA53-41AB-85C4-AAED7CE95EE9 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part2.mobileconfig new file mode 100644 index 0000000000..363a447e55 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SubmitDiagInfo + PayloadIdentifier + com.fleetdm.cis-2.6.2-part2.check + PayloadUUID + 756EF527-5F37-4685-9A0F-21B596D1F895 + AutoSubmit + + + + PayloadDescription + test + PayloadDisplayName + Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 2) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C720744B-BBF2-4FE2-B8A9-4638CECC8BB2 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part3.mobileconfig new file mode 100644 index 0000000000..c0e551443d --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.2-part3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.2-part3.check + PayloadUUID + 0FD378F2-B497-42D9-AEAE-C58D855E56FD + Siri Data Sharing Opt-In Status + 2 + + + PayloadDescription + test + PayloadDisplayName + Ensure Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 3) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 49A101C5-3401-47E7-90AF-9071D4D65E5D + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.3.mobileconfig new file mode 100644 index 0000000000..2bed86338e --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.3.check + PayloadUUID + 6C5400FF-BBB3-471F-B139-59D86ADA9A3A + allowApplePersonalizedAdvertising + + + + PayloadDescription + test + PayloadDisplayName + Ensure Limit Ad Tracking Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C215AA26-C3D0-4A77-B884-8B8C918FD197 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.4.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.4.mobileconfig new file mode 100644 index 0000000000..9cc87eaab2 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.4.mobileconfig @@ -0,0 +1,39 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.systempolicy.control + PayloadIdentifier + com.fleetdm.cis-2.6.4.check + PayloadUUID + D9E7B5EA-8DA3-4AF1-99CD-30ED18EF47F1 + EnableAssessment + + AllowIdentifiedDevelopers + + + + PayloadDescription + test + PayloadDisplayName + Ensure Gatekeeper Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1991574F-155E-4FC1-AD47-FDC4DC3B07B4 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.6.5.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.6.5.mobileconfig new file mode 100644 index 0000000000..da7247ad2b --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.6.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.MCX + PayloadIdentifier + com.fleetdm.cis-2.6.5.check + PayloadUUID + D56F90DC-6F90-4BEB-8D0F-263D062EC612 + dontAllowFDEDisable + + + + PayloadDescription + test + PayloadDisplayName + Ensure FileVault Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 804CCF1F-2814-4B73-95EE-DB0B4FF67103 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.8.1-disable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.8.1-disable.mobileconfig new file mode 100644 index 0000000000..82816dd0ef --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.8.1-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.universalcontrol + PayloadIdentifier + com.fleetdm.cis-2.8.1.check-disabled + PayloadUUID + A6481AEB-354C-4718-9E01-B4562C7F341A + Disable + + + + PayloadDescription + test + PayloadDisplayName + Ensure Universal Control is disabled + PayloadIdentifier + com.fleetdm.cis-2.8.1-disabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 8EA6B5B4-A0EF-49B3-8A6E-C8F02C27456B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/2.8.1-enable.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/2.8.1-enable.mobileconfig new file mode 100644 index 0000000000..126c98c07c --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/2.8.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.universalcontrol + PayloadIdentifier + com.fleetdm.cis-2.8.1.check-enabled + PayloadUUID + F39058CB-027B-453D-B2DF-414F9B84D241 + Disable + + + + PayloadDescription + test + PayloadDisplayName + Ensure Universal Control is enabled + PayloadIdentifier + com.fleetdm.cis-2.8.1-enabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + ECC41516-FFD8-4321-9696-63B1939CB956 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/3.6.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/3.6.mobileconfig new file mode 100644 index 0000000000..a4474aa98e --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/3.6.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.security.firewall + PayloadIdentifier + com.fleetdm.cis-3.6.check + PayloadUUID + 604D8218-D7B6-43B1-95E6-DFCA4C25D73D + EnableFirewall + + EnableLogging + + LoggingOption + detail + + + PayloadDescription + test + PayloadDisplayName + Ensure Firewall Logging Is Enabled and Configured + PayloadIdentifier + com.fleetdm.cis-3.6 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 5E27501E-50DF-4804-9DEC-0E63C34E8831 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/4.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/4.1.mobileconfig new file mode 100644 index 0000000000..ceecc14821 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mDNSResponder + PayloadIdentifier + com.fleetdm.cis-4.1.check + PayloadUUID + 08FEA43B-CE9B-4098-804C-11459D109992 + NoMulticastAdvertisements + + + + PayloadDescription + test + PayloadDisplayName + Ensure Bonjour Advertising Services Is Disabled + PayloadIdentifier + com.fleetdm.cis-4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 25BD1312-2B79-40C7-99FA-E60B49A1883E + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/5.2.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/5.2.1.mobileconfig new file mode 100644 index 0000000000..224bb96c40 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/5.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.1.check + PayloadUUID + 749F9F38-7AD2-4FC6-8F88-672F3AB79F82 + maxFailedAttempts + 5 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Account Lockout Threshold Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F886BF2C-12D2-428B-BCF0-55823908F426 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/5.2.2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/5.2.2.mobileconfig new file mode 100644 index 0000000000..d2b4195a47 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/5.2.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.2.check + PayloadUUID + A7C54C32-6519-4335-A673-B20D3015B432 + minLength + 15 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Minimum Length Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 415F567D-83F4-4AB5-BCFA-7AC8B707DCFD + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/5.2.3-and-5.2.4.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/5.2.3-and-5.2.4.mobileconfig new file mode 100644 index 0000000000..6555d780ce --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/5.2.3-and-5.2.4.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.3-and-5.2.4.check + PayloadUUID + 207388F7-0144-4518-9CCD-9E488EF9C5D7 + requireAlphanumeric + + + + PayloadDescription + test + PayloadDisplayName + Require AlphaNumeric characters in password + PayloadIdentifier + com.fleetdm.cis-5.2.3-and-5.2.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 19BDCDC8-7E9E-48A6-9468-F87EE865F677 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/5.2.5.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/5.2.5.mobileconfig new file mode 100644 index 0000000000..6194054bec --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/5.2.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.5.check + PayloadUUID + 46BD11BD-116C-4E95-9575-6EDFDE0F110F + minComplexChars + 1 + + + PayloadDescription + test + PayloadDisplayName + Require Special characters in password + PayloadIdentifier + com.fleetdm.cis-5.2.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C8CEE953-50F3-48E6-B462-FA98D931A906 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/5.2.7.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/5.2.7.mobileconfig new file mode 100644 index 0000000000..9645354659 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/5.2.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.7.check + PayloadUUID + F5515451-97EC-4CCB-B442-CDF0C546BC27 + maxPINAgeInDays + 365 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Age Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + AEF56396-50CC-4E5A-9C6D-CBAE6A5E13B5 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/5.2.8.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/5.2.8.mobileconfig new file mode 100644 index 0000000000..a52c57d2cd --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/5.2.8.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.8.check + PayloadUUID + 5227E361-F971-44B3-B706-B04BA0D3B186 + pinHistory + 15 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password History Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.8 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0AD34391-5C19-4229-AA10-EB6A169D15EB + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/6.3.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/6.3.1.mobileconfig new file mode 100644 index 0000000000..10a6bdba7b --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/6.3.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.1.check + PayloadUUID + 3CAAC721-D492-45AC-95E4-8ECBF81EA21E + AutoOpenSafeDownloads + + + + PayloadDescription + test + PayloadDisplayName + Ensure Automatic Opening of Safe Files in Safari Is Disabled + PayloadIdentifier + com.fleetdm.cis-6.3.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2556F162-9AE5-4163-92C1-F89A2847C80E + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/6.3.2.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/6.3.2.mobileconfig new file mode 100644 index 0000000000..bf7839b4ce --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/6.3.2.mobileconfig @@ -0,0 +1,38 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.2.check + PayloadUUID + 61BC98A2-9482-4EB3-9184-FB6A8B8E33E8 + HistoryAgeInDaysLimit + 1 + + + PayloadDescription + test + PayloadDisplayName + Audit History and Remove History Items + PayloadIdentifier + com.fleetdm.cis-6.3.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1D6C407D-8C28-4BDC-9837-DF5ED49E8059 + PayloadVersion + 1 + + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/6.3.3.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/6.3.3.mobileconfig new file mode 100644 index 0000000000..250550d143 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/6.3.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.3.check + PayloadUUID + AA1CF4AE-446C-41B0-8B06-ADEAEF9F0505 + WarnAboutFraudulentWebsites + + + + PayloadDescription + test + PayloadDisplayName + Ensure Warn When Visiting A Fraudulent Website in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 130308F8-916A-449D-9711-34A31DCCD39D + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/6.3.4.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/6.3.4.mobileconfig new file mode 100644 index 0000000000..88bde35973 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/6.3.4.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.4.check + PayloadUUID + E0560069-04EF-4985-815E-987A304F8EB7 + BlockStoragePolicy + 2 + WebKitPreferences.storageBlockingPolicy + 1 + WebKitStorageBlockingPolicy + 1 + + + PayloadDescription + test + PayloadDisplayName + Ensure Prevent Cross-site Tracking in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E1D04566-15CE-458C-A0D1-5F6C7B9A6472 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/6.3.7.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/6.3.7.mobileconfig new file mode 100644 index 0000000000..9351714af6 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/6.3.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.7.check + PayloadUUID + A78B534C-0E6D-46C0-97F1-D50178AC5AD0 + ShowFullURLInSmartSearchField + + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Full Website Address in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 5A412D8E-5951-42A3-95ED-BD82AD6D3038 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/configuration-profiles/6.4.1.mobileconfig b/docs/solutions/cis/macos-13/configuration-profiles/6.4.1.mobileconfig new file mode 100644 index 0000000000..9aca882491 --- /dev/null +++ b/docs/solutions/cis/macos-13/configuration-profiles/6.4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Terminal + PayloadIdentifier + com.fleetdm.cis-6.4.1.check + PayloadUUID + E8D36749-D7F8-4280-9B17-D6224B67B63B + SecureKeyboardEntry + + + + PayloadDescription + test + PayloadDisplayName + Ensure Secure Keyboard Entry Terminal.app Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + D4C0B4CC-D39A-4F0F-AF8A-AB5A73D02B3F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-13/policies/cis-policy-queries.yml b/docs/solutions/cis/macos-13/policies/cis-policy-queries.yml new file mode 100644 index 0000000000..f2aa9364d3 --- /dev/null +++ b/docs/solutions/cis/macos-13/policies/cis-policy-queries.yml @@ -0,0 +1,3235 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- name: CIS - Ensure All Apple-provided Software Is Current (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update. + Note: This query may be longer than the avg query and may take more than 10 seconds to run. + resolution: | + Graphical Method: + Perform the following to install all available software updates: + 1. Open System Settings + 2. Select General + 3. Select Software Update + 4. Select Update All + query: SELECT 1 FROM software_update WHERE software_update_required = '0'; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.1 + # contributors: sharon-fdm + +- name: CIS - Ensure Auto Update Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that the system is configured via MDM to automatically install updates. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticCheckEnabled' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticCheckEnabled' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.2 + # contributors: sharon-fdm + +- name: CIS - Ensure Download New Updates When Available Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that the system is configured via MDM to automatically download updates. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic update downloads." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticDownload' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticDownload' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.3 + # contributors: sharon-fdm + +- name: CIS - Ensure Install of macOS Updates Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Ensure that macOS updates are installed after they are available from Apple. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic install of macOS updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallMacOSUpdates' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallMacOSUpdates' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.4 + # contributors: sharon-fdm + +- name: CIS - Ensure Install Application Updates from the App Store Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Ensure that application updates are installed after they are available from Apple. + resolution: Ask your system administrator to deploy an MDM profile that enables automatic updates of Apple apps. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallAppUpdates' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallAppUpdates' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.5 + # contributors: lucasmrod + +- name: CIS - Ensure XProtect Is Running and Updated + # platforms: macOS + platform: darwin + description: | + XProtect is Apple's native signature-based antivirus technology. XProtect both finds and blocks the execution of known malware. There are many AV and Endpoint Threat Detection and Response (ETDR) tools available for Mac OS. The native Apple provisioned tool looks for specific known malware and is completely integrated into the OS. No matter what other tools are being used, XProtect should have the latest signatures available. + resolution: | + Ask your system administrator to deploy a script that will configure: + /usr/bin/sudo /bin/launchctl load -w /Library/Apple/System/Library/LaunchDaemons/com.apple.XProtect.daemon.scan.plist + /usr/bin/sudo /bin/launchctl load -w /Library/Apple/System/Library/LaunchDaemons/com.apple.XprotectFramework.PluginService.plist + /usr/bin/sudo /usr/sbin/softwareupdate -l --background-critical + query: | + SELECT 1 + WHERE ( + SELECT COUNT(*) + FROM launchd + WHERE path IN ( + '/Library/Apple/System/Library/LaunchDaemons/com.apple.XprotectFramework.PluginService.plist', + '/Library/Apple/System/Library/LaunchDaemons/com.apple.XProtect.daemon.scan.plist' + ) + ) = 2; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth, getvictor + +- name: CIS - Ensure Install Security Responses and System Files Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Ensure that system and security updates are installed after they are available from + Apple. This setting enables definition updates for XProtect and Gatekeeper. With this + setting in place, new malware and adware that Apple has added to the list of malware or + untrusted software will not execute. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic critical system and security updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='CriticalUpdateInstall' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='CriticalUpdateInstall' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.6 + # contributors: sharon-fdm + +- name: CIS - Ensure Software Update Deferment Is Less Than or Equal to 30 Days (MDM Required) + # platforms: macOS + platform: darwin + description: | + Apple provides the capability to manage software updates on Apple devices through + mobile device management. Part of those capabilities permit organizations to defer + software updates and allow for testing. Many organizations have specialized software + and configurations that may be negatively impacted by Apple updates. If software + updates are deferred, they should not be deferred for more than 30 days. + This control only verifies that deferred software updates are not deferred for more than 30 days. + resolution: "Ask your system administrator to deploy an MDM profile configures update deferment to a value of 30 days or less." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='enforcedSoftwareUpdateDelay' AND + value <= 30 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='enforcedSoftwareUpdateDelay' AND + value > 30 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-1.7 + # contributors: lucasmrod + +- name: CIS - Ensure iCloud Drive storage solution is disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + iCloud Drive is Apple's storage solution for applications on both macOS and iOS to use the same files that are resident in Apple's cloud storage. The iCloud Drive folder is available much like Dropbox, Microsoft OneDrive, or Google Drive. + One of the concerns in public cloud storage is that proprietary data may be inappropriately stored in an end user's personal repository. Organizations that need specific controls on information should ensure that this service is turned off or the user knows what information must be stored on services that are approved for storage of controlled information. + This query will check for the existence of the policy not its value (That should be set per organization's decision) + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDocumentSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.1.1.2-disabled, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Drive storage solution is enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + iCloud Drive is Apple's storage solution for applications on both macOS and iOS to use the same files that are resident in Apple's cloud storage. The iCloud Drive folder is available much like Dropbox, Microsoft OneDrive, or Google Drive. + One of the concerns in public cloud storage is that proprietary data may be inappropriately stored in an end user's personal repository. Organizations that need specific controls on information should ensure that this service is turned off or the user knows what information must be stored on services that are approved for storage of controlled information. + This query will check for the existence of the policy not its value (That should be set per organization's decision) + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDocumentSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.1.1.2-enabled, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Keychain is disabled (if your org policy is to disable it) (MDM Required) + # platforms: macOS + platform: darwin + description: | + The iCloud keychain is Apple's password manager that works with macOS and iOS. The capability allows users to store passwords in either iOS or macOS for use in Safari on both platforms and other iOS-integrated applications. The most pervasive use is driven by iOS use rather than macOS. The passwords stored in a macOS keychain on an Enterprise-managed computer could be stored in Apple's cloud and then be available on a personal computer using the same account. The stored passwords could be for organizational as well as for personal accounts. + If passwords are no longer being used as organizational tokens, they are not in scope for iCloud keychain storage. + Rationale: + Ensure that the iCloud keychain is used consistently with organizational requirements. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudKeychainSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.1.1.1-disable, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Keychain is enabled (if your org policy is to enable it) (MDM Required) + # platforms: macOS + platform: darwin + description: | + The iCloud keychain is Apple's password manager that works with macOS and iOS. The capability allows users to store passwords in either iOS or macOS for use in Safari on both platforms and other iOS-integrated applications. The most pervasive use is driven by iOS use rather than macOS. The passwords stored in a macOS keychain on an Enterprise-managed computer could be stored in Apple's cloud and then be available on a personal computer using the same account. The stored passwords could be for organizational as well as for personal accounts. + If passwords are no longer being used as organizational tokens, they are not in scope for iCloud keychain storage. + Rationale: + Ensure that the iCloud keychain is used consistently with organizational requirements. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudKeychainSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.1.1.1-enable, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Drive Document and Desktop Sync Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Automated Document synchronization should be planned and controlled to approved storage. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDesktopAndDocuments. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDesktopAndDocuments' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDesktopAndDocuments' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.1.1.3 + # contributors: zwass + +- name: CIS - Ensure Firewall Is Enabled + # platforms: macOS + platform: darwin + description: A firewall minimizes the threat of unauthorized users gaining access to your system while connected to a network or the Internet. + resolution: "Go to the Network pane in System Settings and ensure Firewall is active." + query: SELECT 1 FROM alf WHERE global_state >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.2.1 + # contributors: sharon-fdm + +- name: CIS - Ensure Firewall Stealth Mode Is Enabled + # platforms: macOS + platform: darwin + description: | + While in Stealth mode, the computer will not respond to unsolicited probes, dropping that traffic. + Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet. + resolution: | + Perform the following steps to enable firewall stealth mode: + 1. Open System Settings + 2. Select Network + 3. Select Firewall + 4. Select Options... + 5. Set Enabled stealth mode to enabled + query: SELECT 1 FROM alf WHERE global_state >= 1 AND stealth_enabled = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.2.2 + # contributors: lucasmrod + +- name: CIS - Ensure AirDrop Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + AirDrop can allow malicious files to be downloaded from unknown sources. + Contacts Only limits may expose personal information to devices in the same area. + resolution: | + Ask your system administrator to deploy an MDM profile that disables AirDrop. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAirDrop + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirDrop' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirDrop' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.1.1 + # contributors: lucasmrod + +- name: CIS - Ensure AirPlay Receiver Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + In macOS Monterey (12.0), Apple has added the capability to share content from + another Apple device to the screen of a host Mac. While there are many valuable uses + of this capability, such sharing on a standard Mac user workstation should be enabled + ad hoc as required rather than allowing a continuous sharing service. The feature can + be restricted by Apple ID or network and is configured to use by accepting the + connection on the Mac. Part of the concern is frequent connection requests may + function as a denial-of-service and access control limits may provide too much + information to an attacker. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAirPlayIncomingRequests + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirPlayIncomingRequests' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirPlayIncomingRequests' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.1.2 + # contributors: lucasmrod + +- name: CIS - Ensure Set Time and Date Automatically Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Ensure that the system is configured to set the date and time automatically from a network time server. Accurate time is critical for log correlation, certificate validation, and Kerberos authentication. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is forceAutomaticDateAndTime. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceAutomaticDateAndTime' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceAutomaticDateAndTime' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.2.1 + # contributors: sharon-fdm + +- name: CIS - Ensure the Time Service Is Enabled + # platforms: macOS + platform: darwin + description: | + In macOS 10.14, Apple replace ntp with timed for time services, and is used to ensure correct time is kept. Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. + resolution: | + Ask your system administrator to deploy a script that will configure: + /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.timed.plist + query: | + SELECT 1 WHERE EXISTS(SELECT * FROM processes WHERE path = '/usr/libexec/timed'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth + +- name: CIS - Ensure Time Is Set Within Appropriate Limits (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. + The time offset compared to time.apple.com must be between -270.x and 270.x seconds. + resolution: Make sure the device can connect to time.apple.com to synchronize time. + query: SELECT * FROM sntp_request WHERE server = 'time.apple.com' AND clock_offset_ms <= 270000 AND clock_offset_ms >= -270000; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.2.2 + # contributors: lucasmrod + +- name: CIS - Ensure DVD or CD Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + DVD or CD Sharing allows users to remotely access the system's optical drive. + Disabling DVD or CD Sharing minimizes the risk of an attacker using the optical drive as + a vector for attack and exposure of sensitive data. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set CD/DVD Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.ODSAgent' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.1 + # contributors: artemist-work + +- name: CIS - Ensure Screen Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Screen Sharing allows a computer to connect to another computer on a network and + display the computer’s screen. While sharing the computer’s screen, the user can + control what happens on that computer, such as opening documents or applications, + opening, moving, or closing windows, and even shutting down the computer. + Disabling Screen Sharing mitigates the risk of remote connections being made without + the user of the console knowing that they are sharing the computer. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Screen Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.screensharing' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.2 + # contributors: artemist-work + +- name: CIS - Ensure File Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + File sharing from a user workstation creates additional risks by + increasing complexity and making security more difficult. Hardened + file servers should be used instead of workstations + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set File Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.smbd' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.3 + # contributors: artemist-work + +- name: CIS - Ensure Printer Sharing is Disabled + # platforms: macOS + platform: darwin + description: | + By enabling Printer Sharing, the computer is set up as a + print server to accept print jobs from other computers. + Dedicated print servers or direct IP printing should be used instead. + Disabling Printer Sharing mitigates the risk of attackers + attempting to exploit the print server to gain access to the system. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Printer Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM file_lines WHERE + path = '/etc/cups/cupsd.conf' AND + line LIKE '%Allow @LOCAL%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.4 + # contributors: artemist-work + +- name: CIS - Ensure Remote Login Is Disabled + # platforms: macOS + platform: darwin + description: | + Remote Login allows an interactive terminal session to a computer. + The SSH server built into macOS should not be enabled on a standard user computer, + particularly one that changes locations and IP addresses. + A standard user that runs local applications, including email, web browser, + and productivity tools, should not use the same device as a server + + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Login to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.openssh.sshd' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.5 + # contributors: artemist-work + +- name: CIS - Ensure Remote Management is Disabled + # platforms: macOS + platform: darwin + description: | + Remote Management is the client portion of Apple Remote Desktop (ARD). + Remote Management can be used by remote administrators to view the current screen, + install software, report on, and generally manage client Macs. + Remote Management should only be enabled on trusted networks with strong + user controls present in a Directory system. + Mobile devices without strict controls are vulnerable to exploit and monitoring. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Management to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM processes WHERE + path = '/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.6 + # contributors: artemist-work + +- name: CIS - Ensure Remote Apple Events is Disabled + # platforms: macOS + platform: darwin + description: | + Apple Events is a technology that allows one program to communicate with other programs. + Remote Apple Events allows a program on one computer to communicate with a program on a + different computer. Disabling Remote Apple Events mitigates the risk of an unauthorized + program gaining access to the system. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Apple Events to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.AEServer' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.7 + # contributors: artemist-work + +- name: CIS - Ensure Internet Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Internet Sharing uses the open source natd process to share an internet connection with other + computers and devices on a local network. This allows the Mac to function as a router and share + the connection to other, possibly unauthorized, devices. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Internet Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM plist WHERE + path = '/Library/Preferences/SystemConfiguration/com.apple.nat.plist' AND + key = 'NAT' AND + subkey = 'Enabled' AND + value = '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.8 + # contributors: artemist-work + +- name: CIS - Ensure Content Caching Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Starting with 10.13 (macOS High Sierra), Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints or greater bandwidth exist on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets, the effectiveness of this capability would be determined by how many Macs were on each subnet at the time new, large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity and bandwidth user endpoints should not store content and act as a cluster to provision data. + resolution: | + Graphical Method: + Perform the following steps to disable Content Caching: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Content Caching to disabled + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowContentCaching + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowContentCaching' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowContentCaching' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.3.3.9 + # contributors: sharon-fdm + +- name: CIS - Ensure Bluetooth Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Bluetooth Sharing allows files to be exchanged with Bluetooth-enabled devices. + This setting only disables the receiving of files and requires both devices to + be paired through Bluetooth as well as accepted by the receiver. This setting + does not disable the ability to send files from the device to another paired + Bluetooth device. + Bluetooth pairing only requires an acceptance dialog on either device attempting + to pair. It does require the Bluetooth pane in System Settings to be open for + any macOS device to be discoverable. While it does give a verification code, it + does not require either device to enter the code, but just accept the dialog + box (on either device). At that point, the two devices are paired and files can + be shared through Bluetooth. To receive files through Bluetooth File Exchange + application, the user does have to accept the file(s) through a dialog box. + Users should only pair to known trusted Bluetooth devices. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Bluetooth Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/ByHost/com.apple.Bluetooth.%.plist' AND + key = 'PrefKeyServicesEnabled' AND + value = '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.11 + # contributors: artemist-work, getvictor + +- name: CIS - Ensure Media Sharing Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Starting with macOS 10.15, Apple has provided a control which permits a user to share + Apple downloaded content on all Apple devices that are signed in with the same Apple ID. + This allows users to share downloaded Movies, Music, or TV shows with other + controlled macOS, iOS and iPadOS devices, as well as photos with Apple TVs. + Disabling Media Sharing reduces the remote attack surface of the system + resolution: | + Profile Method: + Ask your administrator to deploy a profile that sets + homeSharingUIStatus, legacySharingUIStatus, and mediaSharingUIStatus to 0 + for com.apple.preferences.sharing.SharingPrefsExtension + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'homeSharingUIStatus' AND + value = '0' AND + username = '' + ) AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'legacySharingUIStatus' AND + value = '0' AND + username = '' + ) AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'mediaSharingUIStatus' AND + value = '0' AND + username = '' + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'homeSharingUIStatus' AND + value != '0' + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'legacySharingUIStatus' AND + value != '0' + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'mediaSharingUIStatus' AND + value != '0' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.3.10 + # contributors: artemist-work + +- name: CIS - Ensure Backup Automatically is Enabled If Time Machine Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Backup solutions are only effective if the backups run on a regular basis. + The time to check for backups is before the hard drive fails or the computer goes missing. + In order to simplify the user experience so that backups are more likely to occur, + Time Machine should be on and set to Back Up Automatically whenever the target volume is available. + + FDA (Full Disk Access) is required to read the /Library/Preferences/com.apple.TimeMachine.plist + file that contains the Time Machine configuration and backup destinations. + resolution: | + Ask your system administrator to deploy an MDM profile that enables automatic backup if Time Machine is enabled. + The system administrator can do one of: + A. Disable Time Machine on the device. + B. Run the following command to enable automatic backup on Time Machine destinations: + /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true + query: | + SELECT 'no time machine backups' as output + FROM (SELECT COUNT(*) as c FROM time_machine_backups) t1 WHERE t1.c = 0 + UNION + SELECT 'time machine automatic backup set to true' as output + FROM plist WHERE path='/Library/Preferences/com.apple.TimeMachine.plist' + AND key='AutoBackup' AND (value = 1 OR value = 'true'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.3.4.1 + # contributors: lucasmrod + +- name: CIS - Ensure Time Machine Volumes Are Encrypted If Time Machine Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Backup solutions are only effective if the backups run on a regular basis. + The time to check for backups is before the hard drive fails or the computer goes missing. + In order to simplify the user experience so that backups are more likely to occur, + Time Machine should be on and set to Back Up Automatically whenever the target volume is available. + + FDA (Full Disk Access) is required to read the /Library/Preferences/com.apple.TimeMachine.plist + file that contains the Time Machine configuration and backup destinations. + resolution: | + Graphical Method: + Perform the following steps to enable encryption on the Time Machine drive: + 1. Open `System Settings`. + 2. Select `General`. + 3. Select `Time Machine`. + 4. Select the unencrypted drive. + 5. Select `-` to forget that drive as a destination. + 6. Select `+` to add a different drive as the destination. + 7. Select `Set Up Disk...`. + 8. Set Encrypt Backup to enabled. + 9. Enter a password in the `New Password` and the same password in the `Re-enter Password` fields. + 10. A password hint is required, but it is recommended that you do not use any identifying information for the password + query: | + SELECT 'no time machine destinations configured' as output + FROM (SELECT COUNT(*) as c FROM time_machine_destinations) t1 WHERE t1.c = 0 + UNION + SELECT 'time machines destinations with encryption with automatic backup' as output + FROM (SELECT COUNT(*) as c FROM time_machine_destinations WHERE encryption <> 'Encrypted') t2 WHERE t2.c = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.3.4.2 + # contributors: lucasmrod + +- name: CIS - Ensure Show Wi-Fi status in Menu Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The Wi-Fi status in the menu bar indicates if the system's wireless internet capabilities are enabled. + If so, the system will scan for available wireless networks in order to connect. + Enabling "Show Wi-Fi status in menu bar" is a security awareness method that helps mitigate public area + wireless exploits by making the user aware of their wireless connectivity status. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Wi-Fi status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is `com.apple.controlcenter`. + 2. The key to include is `WiFi`. + 3. The key must be set to `18`. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='WiFi' AND + value = 18 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='WiFi' AND + value != 18 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.4.1 + # contributors: lucasmrod + +- name: CIS - Ensure Show Bluetooth Status in Menu Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Enabling "Show Bluetooth status in menu bar" is a security awareness method that + helps understand the current state of Bluetooth, including whether it is enabled, + discoverable, what paired devices exist, and what paired devices are currently active. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is `com.apple.controlcenter`. + 2. The key to include is `Bluetooth`. + 3. The key must be set to `18`. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='Bluetooth' AND + value = 18 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='Bluetooth' AND + value != 18 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.4.2 + # contributors: lucasmrod + +- name: CIS - Ensure Siri is disabled (MDM required) + # platforms: macOS + platform: darwin + description: | + With macOS 10.12 Sierra, Apple has introduced Siri from iOS to macOS. While there are data spillage concerns with the use of data-gathering personal assistant software, the risk here does not seem greater in sending queries to Apple through Siri than in sending search terms in a browser to Google or Microsoft. While it is possible that Siri will be used for local actions rather than Internet searches, Siri could, in theory, tell Apple about confidential Programs and Projects that should not be revealed. This appears to be a usage edge case. + In cases where sensitive or protected data is processed and Siri could expose that information through assisting a user in navigating their machine, it should be disabled. Siri does need to phone home to Apple, so it should not be available from air-gapped networks as part of its requirements. + Most of the use case data published has shown that Siri is a tremendous time saver on iOS where multiple screens and menus need to be navigated through. Information like sports scores, weather, movie times, and simple to-do items on existing calendars can be easily found with Siri. None of the standard use cases should be more risky than already approved activity. + Note: Apple has significantly improved the features of Siri, but also created a way to purchase products and services using Siri which may be unintentionally approved. The new Siri Remote application increases the risk. For more information, read the Apple Siri privacy policy. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAssistant + 3. Set the key to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAssistant' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAssistant' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure Siri field TypeToSiriEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri TypeToSiriEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist TypeToSiriEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'TypeToSiriEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-TypeToSiriEnabled-true, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field TypeToSiriEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri TypeToSiriEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist TypeToSiriEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'TypeToSiriEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-TypeToSiriEnabled-false, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field StatusMenuVisible is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri StatusMenuVisible field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist StatusMenuVisible -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'StatusMenuVisible' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-StatusMenuVisible-true, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field StatusMenuVisible is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri StatusMenuVisible field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist StatusMenuVisible -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'StatusMenuVisible' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-StatusMenuVisible-false, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field VoiceTriggerUserEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri VoiceTriggerUserEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist VoiceTriggerUserEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'VoiceTriggerUserEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-VoiceTriggerUserEnabled-true, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field VoiceTriggerUserEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri VoiceTriggerUserEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist VoiceTriggerUserEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'VoiceTriggerUserEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-VoiceTriggerUserEnabled-false, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field LockscreenEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri LockscreenEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist LockscreenEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'LockscreenEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-LockscreenEnabled-true, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field LockscreenEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri LockscreenEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist LockscreenEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'LockscreenEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.5.1-LockscreenEnabled-false, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Enabled + # platforms: macOS + platform: darwin + description: Checks that Location Services option is enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables automatic updates of Apple apps. + Graphical method: + Perform the following steps to enable Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Verify Location Services is enabled + query: SELECT 1 FROM location_services where enabled=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.6.1.1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Show Location Icon in Control Center when System Services Request Your Location' Is Enabled + # platforms: macOS + platform: darwin + description: This setting provides the user an understanding of the current status of Location Services and which applications are using it. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the "location services" icon in menu bar when System Services request your location. + Graphical method: + Perform the following steps to enable Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Select Details... + 5. Verify Show location icon in menu bar when System Services request your + location is set to your organization's parameters + query: SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.locationmenu.plist' AND key='ShowSystemServices' AND value=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Disabled to all applications (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. While Location Services may be very useful, it may not be desirable to allow all applications that can use Location Services to use your location for Internet queries in order to provide tailored content based on your current location. + Ensure applications that can use Location Services are authorized and provide that information where the application interacts with external systems. Apple offers feedback within System Preferences and may be enabled to supply information on the menu bar when Location Services are used. + Safari can deny access from websites or prompt for access. + Applications that support Location Services can be individually controlled in the Privacy tab in Security & Privacy under System Preferences. + Access should be evaluated to ensure that privacy controls are as expected. + This query verifies that location services is disabled for all apps. + resolution: | + Graphical Method: + Perform the following steps to disable unnecessary applications from accessing Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Set Location Services to disabled. + query: SELECT 1 FROM location_services WHERE enabled = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.6.1.3-Location-Service-disabled + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Enabled for a specific list of applications (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. While Location Services may be very useful, it may not be desirable to allow all applications that can use Location Services to use your location for Internet queries in order to provide tailored content based on your current location. + Ensure applications that can use Location Services are authorized and provide that information where the application interacts with external systems. Apple offers feedback within System Preferences and may be enabled to supply information on the menu bar when Location Services are used. + Safari can deny access from websites or prompt for access. + Applications that support Location Services can be individually controlled in the Privacy tab in Security & Privacy under System Preferences. + Access should be evaluated to ensure that privacy controls are as expected. + This query verifies that location services is enabled and a specific list of application can use it. + resolution: | + Graphical Method: + Perform the following steps to disable unnecessary applications from accessing Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Set any applications listed to your organization's requirements + 5. Select System Services + 6. Set any System Services listed to your organization's requirements + query: | + -------------------------------------------------------------------------------------------------------- + + -- Instructions for running and modifying this query: + -- Put the list of allowed applications in the designated area below. + -- To see what apps are currently allowed (and get the exact name format of the app name), use this query: + -- SELECT * FROM plist WHERE + -- path='/var/db/locationd/clients.plist' + -- AND subkey = "Authorized" + -- AND value = '1'; + -------------------------------------------------------------------------------------------------------- + + SELECT 1 WHERE + -- If location_services is not allowed at all, we are good. + EXISTS( + SELECT 1 FROM location_services WHERE enabled = 0 + ) + OR + -- If location_services is allowed, make sure allowed apps are approved. + NOT EXISTS( + SELECT 1 FROM plist WHERE + path='/var/db/locationd/clients.plist' + AND subkey = "Authorized" + AND value = '1' + AND NOT( + --------------------------------------------------------------------------------- + + -- Designated area to add applications allowed to use location-services + --------------------------------------------------------------------------------- + + -- Typical app name + key LIKE "%:com.apple.TV" + OR + -- Typical system service name + key LIKE "%com.apple.locationd.bundle-/System/Library/PrivateFrameworks/CoreParsec.framework" + OR + key LIKE "%:com.apple.locationd.bundle-/System/Library/LocationBundles/DoNotDisturb.bundle" + --------------------------------------------------------------------------------- + + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.6.1.3-Location-Service-specifc-app-enabled, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Limit Ad Tracking Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Ensure Limit Ad Tracking Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables apple personalized advertising. + Graphical method: + Perform the following steps to ensure Limit Ad Tracking Is Enabled: + 1. Open Privacy & Security + 2. Select Apple Advertising + 3. Verify that Personalized Ads is not enabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowApplePersonalizedAdvertising' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowApplePersonalizedAdvertising' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.6.3 + # contributors: sharon-fdm + +- name: CIS - Ensure an Administrator Password Is Required to Access System-Wide Preferences (Fleetd required) + # platforms: macOS + platform: darwin + description: Checks that an Administrator Password Is Required to Access System-Wide Preferences + resolution: | + Graphical method: + Perform the following steps to ensure an administrator password is required to access system-wide preferences: + 1. Open System Settings + 2. Open Privacy & Security + 3. Select Advanced + 4. Set Require an administrator password to access system-wide settings to enabled + query: SELECT 1 FROM authdb WHERE right_name = 'system.preferences' AND json_extract(json_result, '$.shared') == 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.6.7 + # contributors: artemist-work + +- name: CIS - Ensure Screen Saver Corners Are Secure (FDA Required) + # platforms: macOS + platform: darwin + description: | + Setting a hot corner to disable the screen saver poses a potential security risk since an + unauthorized person could use this to bypass the login screen and gain access to the system. + + FDA (Full Disk Access) is required to read the configuration of all the users in the device + ('/Users/*/Library/Preferences/com.apple.dock.plist') + resolution: | + Ask your system administrator to deploy a script that will configure + `wvous-tl-corner`, `wvous-bl-corner`, `wvous-tr-corner`, and `wvous-br-corner` in + domain `com.apple.dock` to a value that is not 6 (for all users of the device). + + Graphical Method: + Perform the following steps to ensure that a Hot Corner is not set to Disable Screen Saver: + 1. Open System Settings + 2. Select Desktop & Dock + 3. Select`Hot Corners...` + 4. Verify that `Disable Screen Saver` is not set to any of the corners. + query: | + SELECT 1 WHERE NOT EXISTS( + SELECT 1 FROM plist + WHERE path LIKE '/Users/%/Library/Preferences/com.apple.dock.plist' AND ( + key = 'wvous-br-corner' OR + key = 'wvous-bl-corner' OR + key = 'wvous-tr-corner' OR + key = 'wvous-tl-corner' + ) AND value = 6); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.7.1 + # contributors: lucasmrod + +- name: CIS - Ensure Universal Control is enabled (Based on organization's policy) (MDM Required) + # platforms: macOS + platform: darwin + description: | + Universal Control is an Apple feature that allows Mac users to control multiple other Macs and iPads with the same keyboard, mouse, and trackpad using the same Apple ID. The technology relies on already available iCloud services, particularly Handoff. + Universal Control simplifies the use of iCloud connectivity of multiple computers using the same Apple ID. This may simplify data transfer from organizationally-managed and personal devices. The use of the same iCloud account and Handoff is the underlying concern that should be evaluated. The use of the same keyboard or mouse across multiple devices does not by itself decrease organizational security. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is com.apple.universalcontrol. + 2. The key to include is 'Disable'. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.8.1-enabled, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Universal Control is disabled (Based on organization's policy) (MDM Required) + # platforms: macOS + platform: darwin + description: | + Universal Control is an Apple feature that allows Mac users to control multiple other Macs and iPads with the same keyboard, mouse, and trackpad using the same Apple ID. The technology relies on already available iCloud services, particularly Handoff. + Universal Control simplifies the use of iCloud connectivity of multiple computers using the same Apple ID. This may simplify data transfer from organizationally-managed and personal devices. The use of the same iCloud account and Handoff is the underlying concern that should be evaluated. The use of the same keyboard or mouse across multiple devices does not by itself decrease organizational security. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is com.apple.universalcontrol. + 2. The key to include is 'Disable'. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.8.1-disabled, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Power Nap Is Disabled for Intel Macs (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Power Nap allows the system to stay in low power mode, especially while on battery power, and periodically + connect to previously known networks with stored credentials for user applications to phone home and get updates. + This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted + based on the SSID without user input. + Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following command to turn off + Power Nap on the device: + /usr/bin/sudo /usr/bin/pmset -a powernap 0 + query: | + SELECT 1 FROM (SELECT + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.AC Power:'), + '$.powernap' + ), '') AS powernap_ac, + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.Battery Power:'), + '$.powernap' + ), '') AS powernap_battery + FROM pmset WHERE getting = 'custom' AND powernap_battery != '1' AND powernap_ac != '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.9.1 + # contributors: lucasmrod + +- name: CIS - Ensure Wake for Network Access Is Disabled (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Wake for Network Access allows the computer to take action when the user is not present and the computer + is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. + + Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following command to turn off + Wake on on the device: + /usr/bin/sudo /usr/bin/pmset -a womp 0 + query: | + SELECT 1 FROM (SELECT + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.AC Power:'), + '$.womp' + ), '') AS womp_ac, + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.Battery Power:'), + '$.womp' + ), '') AS womp_battery + FROM pmset WHERE getting = 'custom' AND womp_battery != '1' AND womp_ac != '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.9.2 + # contributors: lucasmrod + +- name: CIS - Ensure the OS is not Active When Resuming from Sleep (Fleetd, FDA Required) + # platforms: macOS + platform: darwin + description: | + In order to use a computer with Full Disk Encryption (FDE), macOS must keep encryption keys in memory to allow + the use of the disk that has been FileVault protected. When the system is not in use, the volume is protected + through encryption. When the system is sleeping and available to quickly resume, the encryption keys remain in memory. + If an unauthorized party has possession of the computer and the computer is only slept, there are known attack vectors + that can be attempted against the RAM that has the encryption keys or the running operating system protected + by a login screen. + + MacBooks should be set so that the `standbydelay` is 15 minutes (900 seconds) or less. + Mac systems should be set to hibernate after sleeping for a risk-acceptable time period. + Organizations may still decide to use hibernate after sleeping if there is a security need + (ex. international travel), but it can cause kernel panics in Apple Silicon Macs. + resolution: | + Ask your system administrator to deploy the following script to Macbook devices: + if [[ $(uname -m) == 'arm64' ]]; then + # Apple silicon + /usr/bin/sudo /usr/bin/pmset -a standby 900 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + else + # Intel + /usr/bin/sudo /usr/bin/pmset -a standbydelaylow 900 + /usr/bin/sudo /usr/bin/pmset -a standbydelayhigh 900 + /usr/bin/sudo /usr/bin/pmset -a highstandbythreshold 90 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 + fi + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE + regex_match(hardware_model, '^Mac[0-9,]+$', 0) != '' OR regex_match(hardware_model, '^MacBook', 0) != 0 + ) + AND EXISTS( + SELECT JSON_EXTRACT(system_wide_power_settings, '$.DestroyFVKeyOnStandby') AS destroy_fv_key_on_standby + FROM ( + SELECT JSON_EXTRACT(json_result, '$.System-wide power settings:') AS system_wide_power_settings FROM pmset + ) + WHERE destroy_fv_key_on_standby = '1' + ) + AND EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE cpu_type = 'x86_64h' OR cpu_type = 'x86_64' + ) AND EXISTS( + SELECT + CAST(JSON_EXTRACT(battery, '$.standbydelaylow') AS INTEGER) AS standbydelaylow, + CAST(JSON_EXTRACT(battery, '$.standbydelayhigh') AS INTEGER) AS standbydelayhigh, + CAST(JSON_EXTRACT(battery, '$.highstandbythreshold') AS INTEGER) AS highstandbythreshold, + CAST(JSON_EXTRACT(battery, '$.hibernatemode') AS INTEGER) AS hibernatemode + FROM ( + SELECT JSON_EXTRACT(json_result, '$.Battery Power:') as battery FROM pmset WHERE getting = 'custom' + ) + WHERE standbydelaylow <= 900 AND standbydelayhigh <= 900 AND highstandbythreshold >= 90 AND hibernatemode = 25 + ) + ) OR EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE cpu_type = 'arm64e' + ) AND EXISTS ( + SELECT + CAST(JSON_EXTRACT(battery, '$.standby') AS INTEGER) AS standby + FROM ( + SELECT JSON_EXTRACT(json_result, '$.Battery Power:') AS battery FROM pmset WHERE getting = 'custom' + ) + WHERE standby <= 900 + ) + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.9.3 + # contributors: lucasmrod + +- name: CIS - Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled. + Graphical method: + Perform the following steps to ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Require password after screensaver begins or display is turned + off is set with After 0 seconds or After 5 seconds + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPassword' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPasswordDelay' AND + value <= 5 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPassword' AND + (value != 1 AND value != 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPasswordDelay' AND + value > 5 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.10.2 + # contributors: sharon-fdm + +- name: CIS - Ensure Gatekeeper Is Enabled + # platforms: macOS + platform: darwin + description: | + Checks that Gatekeeper Is Enabled. Gatekeeper is Apple’s application that utilizes allowlisting to restrict downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization. In an update to Gatekeeper in macOS 13 Ventura, Gatekeeper checks every application on every launch, not just quarantined apps. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Gatekeeper Is Enabled + Graphical method: + Perform the following steps to ensure Gatekeeper Is Enabled: + 1. Open System Settings + 2. Select Privacy & Security + 3. Verify that 'Allow apps downloaded from' is set to' App Store and identified developers' + query: SELECT 1 FROM gatekeeper WHERE assessments_enabled = 1 AND dev_id_enabled = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.6.4 + # contributors: sharon-fdm + +- name: CIS - Ensure Sending Diagnostic and Usage Data to Apple Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Sending Diagnostic and Usage Data to Apple Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Sending Diagnostic and Usage Data to Apple. + Graphical method: + Perform the following steps to ensure Sending Diagnostic and Usage Data to Apple Is Disabled: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Analytics & Improvements + 4. Verify that Share Mac Analytics is not enabled + 5. Verify that Share with App Developers is not enabled + 6. Verify that Improve Siri & Dictation is not enabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SubmitDiagInfo' AND + name='AutoSubmit' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowDiagnosticSubmission' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Siri Data Sharing Opt-In Status' AND + value = 2 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SubmitDiagInfo' AND + name='Disable' AND + (value != 0 AND value != 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Disable' AND + (value != 0 AND value != 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Disable' AND + value != 2 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-2.6.2 + # contributors: sharon-fdm + +- name: CIS - Ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: A locking screen saver is one of the standard security controls to limit access to a computer and the current user's session when the computer is temporarily unused or unattended. In macOS, the screen saver starts after a value is selected in the drop- down menu. 20 minutes or less is an acceptable value. Any value can be selected through the command line or script, but a number that is not reflected in the GUI can be problematic. 20 minutes is the default for new accounts. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver to be Enabled. + Graphical method: + Perform the following steps to ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Start Screen Saver when inactive is set for 20 minutes or less (≤1200 seconds) + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='idleTime' AND + CAST(value AS INT) <= 1200 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='idleTime' AND + CAST(value AS INT) > 1200 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.10.1 + # contributors: sharon-fdm + +- name: CIS - Ensure a Custom Message for the Login Screen Is Enabled + # platforms: macOS + platform: darwin + description: An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored + resolution: | + Graphical method: + Perform the following steps to ensure a Custom Message for the Login Screen Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify Show message when locked is enabled + 4. Select Set + 5. Verify that the message displayed is configured to your organization's required text + query: SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.loginwindow.plist' AND key='LoginwindowText' AND value != ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.10.3 + # contributors: sharon-fdm + +- name: CIS - Ensure FileVault Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that FileVault Is Enabled. FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. This policy checks that filevault is enabled on the device and that the user is not allowed to disable it. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables FileVault and disables turning it off. + Graphical method: + Perform the following steps to ensure FileVault Is Enabled: + 1. Open System Settings + 2. Select Privacy & Privacy + 3. Verify that FileVault states FileVault is turned on for the disk "" + 4. Select Privacy & Security + 5. Select Profile + 6. Verify that an installed profile has FileVault Can't Disable set to True + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value != 1 AND value != 'true') + ) + AND EXISTS ( + SELECT 1 FROM disk_encryption WHERE + user_uuid IS NOT "" AND + filevault_status = 'on' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.6.5 + # contributors: sharon-fdm + +- name: CIS - Ensure Login Window Displays as Name and Password Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks Login Window Displays as Name and Password Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Login Window Displays as Name and Password Is Enabled. + Graphical method: + Perform the following steps to ensure Login Window Displays as Name and Password Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Login window shows is set to Name and Password + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='SHOWFULLNAME' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='SHOWFULLNAME' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.10.4 + # contributors: sharon-fdm + +- name: CIS - Ensure Show Password Hints Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks Show Password Hints Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensures Show Password Hints Is Disabled. + Graphical method: + Perform the following steps to ensure Show Password Hints Is Disabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Show password hints is disabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='RetriesUntilHint' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='RetriesUntilHint' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.10.5 + # contributors: sharon-fdm + +- name: CIS - Ensure Users' Accounts Do Not Have a Password Hint (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Password hints help the user recall their passwords for various systems and/or accounts. In most cases, password hints are simple and closely related to the user's password. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables apple personalized advertising. + Graphical method: + Perform the following steps to ensure Users' Accounts Do Not Have a Password Hint: + 1. Open System Settings + 2. Select Touch ID & Passwords (or Login Password on non-Touch ID Macs) + 3. Select Change... + 4. Change the password and ensure that no text is entered in the Password hint box + query: SELECT 1 FROM user_login_settings WHERE password_hint_enabled = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.11.1 + # contributors: sharon-fdm + +- name: CIS - Ensure Guest Account Is Disabled + # platforms: macOS + platform: darwin + description: Checks that Guest Account Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Guest Account. + Graphical method: + Perform the following steps to ensure Guest Account Is Disabled: + 1. Open System Settings + 2. Select Users & Groups + 3. Select the i next to the Guest User + 4. Verify that Allow guests to log in to this computer is disable + query: | + SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.loginwindow.plist' AND key='GuestEnabled' AND value = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.12.1 + # contributors: sharon-fdm + +- name: CIS - Ensure Guest Access to Shared Folders Is Disabled + # platforms: macOS + platform: darwin + description: Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will disable guest users from access to shared folders: + /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off + Graphical Method: + Perform the following steps to no longer allow guest user access to shared folders: + 1. Open System Settings + 2. Select Users & Groups + 3. Select the i next to the Guest User + 4. Set Allow guests to connect to shared folders to disabled + query: SELECT 1 from plist where path = '/Library/Preferences/SystemConfiguration/com.apple.smb.server.plist' AND key = 'AllowGuestAccess' AND value = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.12.2 + # contributors: sharon-fdm + +- name: CIS - Ensure Automatic Login Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Automatic Login Is Disabled + Graphical method: + Perform the following steps to ensure Automatic Login Is Disabled: + 1. Open System Settings + 2. Select Users & Groups + 3. Set Automatic login in as... to Off + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is com.apple.loginwindow + 2. The key to include is com.apple.login.mcx.DisableAutoLoginClient + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.login.mcx.DisableAutoLoginClient' AND + name='Disable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.login.mcx.DisableAutoLoginClient' AND + name='Disable' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-2.12.3 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Is Enabled + # platforms: macOS + platform: darwin + description: | + macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log. Apple has deprecated auditd as of macOS 11.0 Big Sur. In macOS 14.0 Sonoma it is no longer enabled by default. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will load auditd and create the audit_control file: + /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist + query: | + SELECT 1 WHERE EXISTS ( + SELECT + l.program, l.label, l.program_arguments, + p.path, p.name , p.cmdline + FROM + launchd AS l + INNER JOIN processes AS p + ON (l.program = p.path) + WHERE + (l.label = "com.apple.auditd") + AND + (l.program_arguments = p.cmdline) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-3.1 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Flags For User-Attributable Events Are Configured Per Local Organizational Requirements + # platforms: macOS + platform: darwin + description: | + Auditing is the capture and maintenance of information about security-related events. Auditable events often depend on differing organizational requirements. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Bonjour advertising service. + Terminal Method: + Perform the following to set the required Security Auditing Flags: + Edit the /etc/security/audit_control file and add -fm, ad, -ex, aa, -fr, lo, and -fw to flags. You can also substitute -all for -fm, -ex, -fr, and -fw. + query: | + SELECT 1 WHERE EXISTS ( + SELECT line + FROM file_lines WHERE path = '/etc/security/audit_control' + AND + ( + ( + line LIKE 'flags:%' + AND + line LIKE "%-fm%" + AND + line LIKE "%ad%" + AND + line LIKE "%-ex%" + AND + line LIKE "%aa%" + AND + line LIKE "%-fr%" + AND + line LIKE "%lo%" + AND + line LIKE "%-fw%" + ) + OR + ( + line LIKE 'flags:%' + AND + line LIKE "%-all%" + AND + line LIKE "%ad%" + AND + line LIKE "%aa%" + AND + line LIKE "%lo%" + ) + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-3.2 + # contributors: sharon-fdm + +- name: CIS - Ensure install.log Is Retained for 365 or More Days and No Maximum Size + # platforms: macOS + platform: darwin + description: | + macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. + resolution: | + Automated method: + Ask your system administrator to deploy a script which will ensure proper retention for install.log. + Terminal Method: + Perform the following to ensure that install logs are retained for at least 365 days: + Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line. + query: | + SELECT 1 WHERE + EXISTS ( SELECT line, + CAST ( regex_match(line, 'ttl=(\d+)', 1) AS INTEGER ) AS val + FROM file_lines + WHERE path = '/etc/asl/com.apple.install' + AND val >=365 ) + AND + NOT EXISTS ( SELECT line + FROM file_lines + WHERE path = '/etc/asl/com.apple.install' + AND line LIKE "%all_max=%" ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-3.3 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Retention Is Enabled + # platforms: macOS + platform: darwin + description: | + The macOS audit capability contains important information to investigate security or operational issues. This resource is only completely useful if it is retained long enough to allow technical staff to find the root cause of anomalies in the records. + Retention can be set to respect both size and longevity. To retain as much as possible under a certain size, the recommendation is to use the following: + expire-after:60d OR 5G + This recommendation is based on minimum storage for review and investigation. When a third party tool is in use to allow remote logging or the store and forwarding of logs, this local storage requirement is not required. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will ensure proper Security Auditing Retention: + cp /etc/security/audit_control ./tmp.txt; origExpire=$(cat ./tmp.txt | grep expire-after); sed "s/${origExpire}/expire-after:60d OR 5G/" ./tmp.txt > /etc/security/audit_control; rm ./tmp.txt; + query: | + SELECT 1 WHERE EXISTS ( + SELECT line, + CAST(regex_match(line, 'expire-after:(\d+)d OR (\d+)G', 1) AS INTEGER) AS days, + CAST(regex_match(line, 'expire-after:(\d+)d OR (\d+)G', 2) AS INTEGER) AS size + FROM file_lines + WHERE path = '/etc/security/audit_control' + AND days >=60 + AND size >=5 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-3.4 + # contributors: sharon-fdm + +- name: CIS - Ensure Access to Audit Records Is Controlled + # platforms: macOS + platform: darwin + description: | + The audit system on macOS writes important operational and security information that can be both useful for an attacker and a place for an attacker to attempt to obfuscate unwanted changes that were recorded. As part of defense-in-depth, the /etc/security/audit_control configuration and the files in /var/audit should be owned only by root with group wheel with read-only rights and no other access allowed. macOS ACLs should not be used for these files. + + The default folder for storing logs is /var/audit, but it can be changed. This recommendation will ensure that any target directory has appropriate access control in place even if the target directory is not the default of /var/audit. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will Ensure Access to Audit Records Is Controlled: + /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/audit_control + /usr/bin/sudo /bin/chmod -R og-rw /etc/security/audit_control + /usr/bin/sudo /usr/sbin/chown -R root:wheel $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') + /usr/bin/sudo /bin/chmod -R og-rw $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') + query: | + SELECT 1 WHERE + -- For all files in /var/audit: + -- UID, GID should be owned by root. + -- MODE should be 0440 ("-r--r-----") + NOT EXISTS ( SELECT 1 FROM file WHERE path LIKE '/var/audit/%' AND (uid !=0 OR gid !=0 OR mode != "0440") ) + AND + NOT EXISTS ( select 1 from file + where path LIKE + ( + SELECT dir FROM + ( + -- The path we are looking for is written inside /etc/security/audit_control in a line that starts with "dir:" + -- Looking immediately at this and REGEX-ing the path after it (and concatenating "/%") + -- Same explanation for queries below. + select line, CONCAT(regex_match(line, '^dir:(.+)',1 ), '/%') AS dir + FROM file_lines + WHERE path = '/etc/security/audit_control' + AND line LIKE "dir:%" + ) + ) + AND ( uid !=0 OR gid !=0 OR mode != "0440" ) + ) + AND + -- For /etc/security/audit_control the MODE should be 0400 ("-r--------") + NOT EXISTS ( select 1 from file where path = "/etc/security/audit_control" AND mode != "0400" ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-3.5 + # contributors: sharon-fdm + +- name: CIS - Ensure Firewall Logging Is Enabled and Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + The socketfilter Firewall is what is used when the Firewall is turned on in the Security & Privacy Preference Pane. In order to appropriately monitor what access is allowed and denied, logging must be enabled. The logging level must be set to "detailed" to be useful in monitoring connection attempts that the firewall detects. Throttled login is not sufficient for examine Firewall connection attempts. + resolution: | + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is com.apple.security.firewall + 2. The key to include is EnableFirewall + 3. The key must be set to + 4. The key to also include is EnableLogging + 5. The key must be set to + 6. The key to also include is LoggingOption + 7. The key must be set to detail + query: | + SELECT 1 WHERE + ( + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='EnableLogging' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='LoggingOption' AND + value = "detail" AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='EnableLogging' AND + (value != 1 AND value != 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='LoggingOption' AND + value != "detail" + ) + ) + OR + ( + EXISTS ( + SELECT 1 FROM plist WHERE + path='/Library/Preferences/com.apple.alf.plist' AND + key='loggingenabled' AND + value = 1 + ) + AND EXISTS ( + SELECT 1 FROM plist WHERE + path='/Library/Preferences/com.apple.alf.plist' AND + key='loggingoption' AND + value = 2 + ) + ); + + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-3.6 + # contributors: sharon-fdm + +- name: CIS - Ensure Bonjour Advertising Services Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. + DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Bonjour advertising service. + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is `com.apple.mDNSResponder`. + 2. The key to include is `NoMulticastAdvertisements`. + 3. The key must be set to ``. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mDNSResponder' AND + name='NoMulticastAdvertisements' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mDNSResponder' AND + name='NoMulticastAdvertisements' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-4.1 + # contributors: lucasmrod + +- name: CIS - Ensure HTTP Server Is Disabled + # platforms: macOS + platform: darwin + description: | + Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. + Apache is still part of the Operating System and can be easily turned on to share files and provide remote connectivity + to an end-user computer. Web serving should not be done from a user desktop. Open ports make it easier to exploit the computer. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will disable the Apache service: + /usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist + query: SELECT 1 WHERE NOT EXISTS(SELECT * FROM processes WHERE path = '/usr/sbin/httpd'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-4.2 + # contributors: lucasmrod + +- name: CIS - Ensure NFS Server Is Disabled + # platforms: macOS + platform: darwin + description: | + macOS can act as an NFS fileserver. NFS sharing could be enabled to allow + someone on another computer to mount shares and gain access to information + from the user's computer. File sharing from a user endpoint has long been + considered questionable, and Apple has removed that capability from the GUI. + NFSD is still part of the Operating System and can be easily turned on to + export shares and provide remote connectivity to an end-user computer. The + etc/exports file contains the list of NFS shared directories. If the file + exists, it is likely that NFS sharing has been enabled in the past or may + be available periodically. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will + disable the NFS service and its directory listing: + /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd + /usr/bin/sudo /bin/rm -rf /etc/exports + Note: Removing /etc/exports also stops the NFS service if it was running. + query: | + SELECT 1 WHERE + NOT EXISTS(SELECT 1 FROM processes WHERE path = '/sbin/nfsd') + AND + NOT EXISTS(SELECT 1 FROM file WHERE path = '/etc/exports'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-4.3 + # contributors: lucasmrod, getvictor + +- name: CIS - Ensure Home Folders Are Secure + # platforms: macOS + platform: darwin + description: | + By default, macOS allows all valid users into the top level of every other user's home folder and restricts access to the Apple default folders within. Another user on the same system can see you have a "Documents" folder but cannot see inside it. This configuration does work for personal file sharing but can expose user files to standard accounts on the system. + The best parallel for Enterprise environments is that everyone who has a Dropbox account can see everything that is at the top level but can't see your pictures. Similarly with macOS, users can see into every new Directory that is created because of the default permissions. + Home folders should be restricted to access only by the user. Sharing should be used on dedicated servers or cloud instances that are managing access controls. Some environments may encounter problems if execute rights are removed as well as read and write. Either no access or execute only for group or others is acceptable. + resolution: | + Automated method: + Ask your system administrator to deploy a script that will go over all users and set the mode for all of them either like this: + /usr/bin/sudo /bin/chmod -R og-rwx /Users/ + Or like this if there is a need for excutable access: + /usr/bin/sudo /bin/chmod -R og-rw /Users/ + query: SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM file WHERE ( + path LIKE '/Users/%' + AND path != '/Users/Shared/' + AND mode != "0700" + AND mode !="0701" + AND mode !="0710" + AND mode !="0711" + )); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.1.1 + # contributors: sharon-fdm + +- name: CIS - Ensure System Integrity Protection Status (SIP) Is Enabled + # platforms: macOS + platform: darwin + description: | + System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID. + resolution: | + Terminal Method: + Perform the following steps to enable System Integrity Protection: + 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) + 2. Select Utilities + 3. Select Terminal + 4. Run the following command: + /usr/bin/sudo /usr/bin/csrutil enable + query: SELECT 1 FROM sip_config WHERE config_flag="sip" and enabled=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.1.2 + # contributors: sharon-fdm + +- name: CIS - Ensure Apple Mobile File Integrity (AMFI) Is Enabled (fleetd required) + # platforms: macOS + platform: darwin + description: | + Apple Mobile File Integrity (AMFI) was first released in macOS 10.12. The daemon and service block attempts to run unsigned code. AMFI uses launchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation. + Note: AMFI cannot be disabled with SIP enabled, but a change attempt can be made that will appear successful, and report incorrectly as successful. If the AMFI audit fails, and the SIP audit passes, this is still an issue the admin should research. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will Ensure Apple Mobile File Integrity (AMFI) Is Enabled: + /usr/bin/sudo /usr/sbin/nvram boot-args="" + query: SELECT 1 FROM nvram_info WHERE amfi_enabled="1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.1.3 + # contributors: sharon-fdm + +- name: CIS - Ensure Sealed System Volume (SSV) Is Enabled (fleetd required) + # platforms: macOS + platform: darwin + description: | + Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. + During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. + The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. + During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree. + resolution: | + If SSV has been disabled, assume that the operating system has been compromised. Back up any files, and do a clean install to a known good Operating System. + query: SELECT 1 FROM csrutil_info WHERE ssv_enabled="1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.1.4 + # contributors: sharon-fdm + +- name: CIS - Ensure Appropriate Permissions Are Enabled for System Wide Applications + # platforms: macOS + platform: darwin + description: | + Applications in the System Applications Directory (/Applications) should be world- executable since that is their reason to be on the system. They should not be world- writable and allow any process or user to alter them for other processes or users to then execute modified versions. + resolution: | + Ask your system administrator to deploy a script that will configure all *.app under /Applications folders to have no write permissions for 'others'. + $ /usr/bin/sudo IFS=$'\n' + for apps in $( /usr/bin/find /Applications -iname "*\.app" -type d -perm -2 ); + do + /bin/chmod -R o-w "$apps" + done + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT apps.path FROM apps + LEFT JOIN file on file.path = apps.path + WHERE apps.path LIKE '/Applications/%' AND + -- file.mode's last character are the permissions for 'other', + -- bitwise && with '0x2' selects the write permission, + -- which we do not want here. + CAST(SUBSTRING(file.mode, -1) AS INTEGER) & 0x2 != 0 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.1.5 + # contributors: sharon-fdm + +- name: CIS - Ensure No World Writable Files Exist in the System Folder + # platforms: macOS + platform: darwin + description: | + Software sometimes insists on being installed in the /System/Volumes/Data/System Directory and has inappropriate world-writable permissions. Macs with writable files in System should be investigated forensically. A file with open writable permissions is a sign of at best a rogue application. It could also be a sign of a computer compromise and a persistent presence on the system. + resolution: | + Ask your system administrator to deploy a script that will ensure folders are not world-writable in the /System folder. + /usr/bin/sudo IFS=$'\n' + for sysPermissions in $( /usr/bin/find /System/Volumes/Data/System -type d -perm -2 | /usr/bin/grep -vE "Drop Box|locks" ); + do + /bin/chmod -R o-w "$sysPermissions" + done + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM find_cmd WHERE + directory = '/System/Volumes/Data/System' + AND type = 'd' + AND perm = '-2' + AND path NOT LIKE '%Drop Box%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.1.6 + # contributors: sharon-fdm + +- name: CIS - Ensure No World Writable Folders Exist in the Library Folder (Fleetd required) + # platforms: macOS + platform: darwin + description: | + Software sometimes insists on being installed in the + /System/Volumes/Data/Library directory and has inappropriate world-writable + permissions. This software could be compromised with the folder(s) being + world-writable by unauthorized actions. + Folders in /System/Volumes/Data/Library should not be world-writable. The + audit check excludes folders where the sticky bit is set by Apple. These + folders are required by the operating system to run and should not be + modified. Some security vendors use a world-writable folder for their + security extension tool. This will be considered compliant due to the tools + themselves not allowing a user to write to their folders. This is against + the standard practice on POSIX systems. It is considered compliant here + because of additional security vendor controls that are controlled through + industry standard mitigations. + resolution: | + Ask your system administrator to deploy a script that will ensure folders + are not world-writable in the /Library folder. + /usr/bin/sudo IFS=$'\n' + for libPermissions in $(/usr/bin/find /Library -type d -perm -002 ! -perm -1000 ! -xattrname com.apple.rootless 2>/dev/null); do + /bin/chmod -R o-w "$libPermissions" + done + Note: Applications that are not following standard practices, and have + world-writable files in /System/Volumes/Data/Library may not launch or + operate correctly after the remediation has been run. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM file f + WHERE + f.path LIKE '/Library/%' + AND f.type = 'directory' + AND (CAST(SUBSTR(f.mode,-1) AS INTEGER) & 2) = 2 + AND NOT ((CAST(f.mode AS INTEGER) & 01000) = 01000) + AND NOT EXISTS ( + SELECT 1 FROM extended_attributes ea + WHERE ea.path = f.path + AND ea.key = 'com.apple.rootless' + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-5.1.7 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure Password Account Lockout Threshold Is Configured (Fleetd required) + # platforms: macOS + platform: darwin + description: | + The account lockout threshold specifies the amount of times a user can enter an incorrect password before a lockout will occur. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Password Account Lockout Threshold. + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is maxFailedAttempts + 3. The key must be set to + query: SELECT 1 FROM pwd_policy where max_failed_attempts <= 5; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.2.1 + # contributors: sharon-fdm + +- name: CIS - Ensure Password Minimum Length Is Configured + # platforms: macOS + platform: darwin + description: | + A minimum password length is the fewest number of characters a password can contain to meet a system's requirements. Ensure that a minimum of a 15-character password is part of the password policy on the computer. Where the confidentiality of encrypted information in FileVault is more of a concern, requiring a longer password or passphrase may be sufficient rather than imposing additional complexity requirements that may be self-defeating. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is minLength + 3. The key must be set to + query: | + SELECT 1 + FROM ( + SELECT cast(lengthtxt as integer(2)) minlength + FROM ( + SELECT SUBSTRING(length, 1, 2) AS lengthtxt + FROM ( + SELECT policy_description, policy_identifier, split(policy_content, '{', 1) AS length + FROM password_policy + WHERE policy_identifier LIKE '%minLength')) + WHERE minlength >= 15); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.2.2 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure Complex Password Must Contain Alphabetic Characters AND Numeric Characters Is Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + CIS - 5.2.3 - Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that an Alphabetic character is part of the password policy on the computer. + CIS - 5.2.4 - Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that a number or numeric value is part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy an MDM profile that ensures Complex Password Must Contain Alphabetic Characters + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='requireAlphanumeric' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='requireAlphanumeric' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-5.2.3, CIS-macos-13-5.2.4 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Special Character Is Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. Ensure that a special character is part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy an MDM profile that ensures Complex Password Must Contain Special Characters + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='minComplexChars' AND + value >= 1 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='minComplexChars' AND + value < 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-5.2.5 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured (Fleetd required) + # platforms: macOS + platform: darwin + description: | + Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that both uppercase and lowercase letters are part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy the following script: + /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase==1>" + query: SELECT 1 FROM pwd_policy where min_mixed_case_characters >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.2.6 + # contributors: sharon-fdm + +- name: CIS - Ensure Password Age Is Configured (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users should reset passwords periodically. This control uses 365 days as the acceptable value. Some organizations may be more or less restrictive. This control mainly exists to mitigate against password reuse of the macOS account password in other realms that may be more prone to compromise. Attackers take advantage of exposed information to attack other accounts. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Guest Account. + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is maxPINAgeInDays + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS(SELECT 1 FROM pwd_policy WHERE expires_every_n_days <= 365) + OR + EXISTS(SELECT 1 FROM pwd_policy WHERE days_to_expiration <= 365); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.2.7 + # contributors: sharon-fdm + +- name: CIS - Ensure password history is set to at least 24 (MDM required) + # platforms: macOS + platform: darwin + description: | + Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users must reset passwords periodically. This control ensures that previous passwords are not reused immediately by keeping a history of previous password hashes. Ensure that password history checks are part of the password policy on the computer. This control checks whether a new password is different than the previous 24. The latest NIST guidance based on exploit research referenced in this section details how one of the greatest risks is password exposure rather than password cracking. Passwords should be changed to a new unique value whenever a password might have been exposed to anyone other than the account holder. Attackers have maintained persistent control based on predictable password change patterns and substantially different patterns should be used in case of a leak. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The Payload Type string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is pinHistory + 3. The key must be set to + query: SELECT 1 FROM pwd_policy WHERE history_depth >= 24; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.2.8 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure all user storage APFS volumes are encrypted (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Apple developed a new file system which was first made available in 10.12 and then became the + default in 10.13. The file system is optimized for Flash and Solid-State storage and encryption. + https://en.wikipedia.org/wiki/Apple_File_System macOS computers generally have several volumes + created as part of APFS formatting, including Preboot, Recovery and Virtual Memory (VM), as well + as traditional user disks. + All APFS volumes that do not have specific roles and do not require encryption should be + encrypted. "Role" disks include Preboot, Recovery and VM. User disks are labelled with "(No + specific role)" by default. + resolution: | + Manual method: + Use Disk Utility to erase a user disk and format as APFS (Encrypted). + Note: APFS Encrypted disks will be described as "FileVault" whether they are the boot volume or not in the ap list. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM apfs_volumes WHERE + role != "VM" AND + role != "Update" AND + role != "Recovery" AND + role != "Preboot" AND + role != "xART" AND + role != "Hardware" AND + filevault != 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.3.1 + # contributors: artemist-work + +- name: CIS - Ensure all user storage CoreStorage volumes are encrypted (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Apple introduced CoreStorage with 10.7. It is used as the default for formatting on macOS volumes prior to 10.13. + While FileVault protects the boot volume, data may be copied to other attached storage and reduce the protection afforded by FileVault. + Ensure all user volumes are encrypted to protect data. + resolution: | + Manual method: + Use Disk Utility to convert volumes to APFS or delete them. + It is no longer possible to encrypt CoreStorage volumes without converting them. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM corestorage_logical_volume_families WHERE EncryptionType != "AES-XTS" + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.3.2 + # contributors: artemist-work + +- name: CIS - Ensure the Sudo Timeout Period Is Set to Zero (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. + This five-minute window should be eliminated since it leaves the system extremely vulnerable. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo 'Defaults timestamp_timeout=0' | sudo tee -a /etc/sudoers.d/CIS_54_sudoconfiguration + /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/sudoers.d/ + query: | + SELECT 1 WHERE EXISTS( + SELECT * FROM file WHERE path = '/etc/sudoers.d' AND uid = 0 AND gid = 0 + ) AND EXISTS( + SELECT + COALESCE(JSON_EXTRACT( + json_result, '$.Authentication timestamp timeout' + ), '') AS authentication_timestamp_timeout + FROM sudo_info WHERE authentication_timestamp_timeout = '0.0 minutes' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.4 + # contributors: lucasmrod + +- name: CIS - Ensure a Separate Timestamp Is Enabled for Each User/tty (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Using tty tickets ensures that a user must enter the sudo password in each Terminal session. + With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets + for each interface so that root access is limited to a specific terminal. + The default configuration can be overwritten or not configured correctly on earlier versions of macOS. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo 'Defaults timestamp_type=tty' | sudo tee /etc/sudoers.d/CIS_55_sudoconfiguration + query: | + SELECT 1 WHERE EXISTS( + SELECT + COALESCE(JSON_EXTRACT( + json_result, '$.Type of authentication timestamp record' + ), '') AS type_of_auth_timestamp_record + FROM sudo_info WHERE type_of_auth_timestamp_record = 'tty' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.5 + # contributors: lucasmrod + +- name: CIS - Ensure the "root" Account Is Disabled (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Enabling and using the root account puts the system at risk since any successful exploit or mistake + while the root account is in use could have unlimited access privileges within the system. + Using the sudo command allows users to perform functions as a root user while limiting and password + protecting the access privileges. By default the root account is not enabled on a macOS computer. + An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell). + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + /usr/bin/sudo /usr/sbin/dsenableroot -d + query: | + SELECT 1 from dscl WHERE command = 'read' AND path = '/Users/root' AND key = 'AuthenticationAuthority' AND value = ''; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.6 + # contributors: lucasmrod + +- name: CIS - Ensure an Administrator Account Cannot Login to Another User's Active and Locked Session (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + macOS has a privilege that can be granted to any user that will allow that + user to unlock active users' sessions. Disabling the administrator's and/or + user's ability to log into another user's active and locked session prevents + unauthorized persons from viewing potentially sensitive and/or personal + information. + Note: For organizations that are using Platform Single-Sign-On (PSSO), this + setting can cause issues with syncing with your PSSO. Verify if you are + using PSSO by running: /usr/bin/sudo app-sso platform -s + resolution: | + Automated method: + Ask your administrator to deploy a script that runs the following command: + /usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver authenticate-session-owner + # Note: Running this command will disable Touch ID to unlock the screen + # saver. To re-enable Touch ID for users, run: + /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow screenUnlockMode -int 1 + query: | + SELECT 1 WHERE EXISTS ( + SELECT JSON_EXTRACT(json_result, '$.rule') AS rule + FROM authdb + WHERE right_name = 'system.login.screensaver' AND + rule LIKE '%authenticate-session-owner%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod, getvictor + +- name: CIS - Ensure a Login Window Banner Exists + # platforms: macOS + platform: darwin + description: | + An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid + in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, + acceptable use policy, and authorization requirements. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo "Content of the banner" | sudo tee /Library/Security/PolicyBanner.txt + /usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt + /usr/bin/sudo /bin/chmod o+r /Library/Security/PolicyBanner.txt + query: | + SELECT 1 FROM file + WHERE (path = '/Library/Security/PolicyBanner.txt' OR + path = '/Library/Security/PolicyBanner.rtf') AND mode = '0644' + AND uid = 0 AND gid = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-5.8 + # contributors: lucasmrod + +- name: CIS - Ensure Legacy EFI Is Valid and Updating (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + In order to mitigate firmware attacks, Apple has created an automated Firmware check to ensure that the EFI version + running is a known good version from Apple. There is also an automated process to check it every seven days. + This check is only valid on T1 chips and prior. Neither T2 chips nor Apple silicon require this control check + If the Firmware of a computer has been compromised, the Operating System that the Firmware loads cannot be trusted, either. + resolution: | + If EFI does not pass the integrity check, you may send a report to Apple. Backing up files and clean installing a + known good Operating System and Firmware is recommended. + query: | + SELECT 1 FROM firmware_eficheck_integrity_check + WHERE chip != 'intel-t1' OR ( + chip = 'intel-t1' AND + output LIKE '%Primary allowlist version match found. No changes detected in primary hashes%' AND + NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.driver.eficheck' AND + value = '0' + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.9 + # contributors: lucasmrod + +- name: CIS - Ensure the Guest Home Folder Does Not Exist + # platforms: macOS + platform: darwin + description: | + The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + /usr/bin/sudo /bin/rm -R /Users/Guest + query: | + SELECT 1 WHERE NOT EXISTS (SELECT * FROM file WHERE path = '/Users/Guest'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-5.10 + # contributors: lucasmrod + +- name: CIS - Ensure Show All Filename Extensions Setting is Enabled + # platforms: macOS + platform: darwin + description: | + A filename extension is a suffix added to a base filename that indicates the + base filename's file format. This is intended for any user that logs into + the GUI and has a home folder and not for service accounts. For the audit, + we will continue to verify that every account with a home folder has + filename extensions enabled. + Visible filename extensions allow the user to identify the file type and the + application it is associated with which leads to quick identification of + misrepresented malicious files. + resolution: | + Automated method: + Ask your administrator to deploy a script that runs the following command + for each user: + /usr/bin/sudo -u /usr/bin/defaults write \ + /Users//Library/Preferences/.GlobalPreferences.plist AppleShowAllExtensions -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/.GlobalPreferences.plist' AND + key = 'AppleShowAllExtensions' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/.GlobalPreferences.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.1.1 + # contributors: artemist-work, getvictor + +- name: CIS - Ensure Automatic Opening of Safe Files in Safari Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Safari will automatically run or execute what it considers safe files. This can include + installers and other files that execute on the operating system. Safari evaluates file safety by + using a list of filetypes maintained by Apple. The list of files include text, image, video and + archive formats that would be run in the context of the OS rather than the browser. + Hackers have taken advantage of this setting via drive-by attacks. These attacks occur when a + user visits a legitimate website that has been corrupted. The user unknowingly downloads a + malicious file either by closing an infected pop-up or hovering over a malicious banner. An + attacker can create a malicious file that will fall within Safari's safe file list that will + download and execute without user input. + resolution: | + Payload Method: + Ask your administrator to deploy a profile which disables AutoOpenSafeDownloads in Safari + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='AutoOpenSafeDownloads' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='AutoOpenSafeDownloads' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.1 + # contributors: artemist-work + +- name: CIS - Audit Safari Web Browser History and Remove History Items (organization decision needed)(MDM Required) + # platforms: macOS + platform: darwin + description: | + Organizational management of user web browsing history is a challenge effected by multiple facets. Organizations should decide whether to manage browser history and how much history should be maintained. + Rationale: + There are conflicting concerns in the retention of browser history. Unlimited retention: + - Consumes disk space + - Preferred by on disk forensics teams + - User searchable for old visited pages + - User privacy concerns + - Security concerns to retain old links that may be stale or lead to compromised + pages or pages with changes or inappropriate content + Old browser history becomes stale and the use or misuse of the data can lead to unwanted outcomes. Search engine results are maintained and often provide much more relevant current information than old website visit information. + resolution: | + Ask your system administrator to deploy an MDM profile that set the history per organization decision + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is HistoryAgeInDaysLimit + 3. The key must be set to: <1,7,14,31,365,36500> + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='HistoryAgeInDaysLimit' AND + /* + Please replace the checked value below to match the one decided by your organization. + 1 - After one day + 7 - After one week + 14 - After two weeks + 31 - After one month + 365 - After one year + 36500 - Set Manually + */ + value = 1 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='HistoryAgeInDaysLimit' AND + value != 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS-macos-13-6.3.2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Warn When Visiting A Fraudulent Website in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Apple uses the Google Safe Browsing API to check for fraudulent websites and report them to the + user attempting visit one. Attackers use crafted web pages to social engineer users to load + unwanted content. Warning users prior to loading the content enables better security. + resolution: | + Payload Method: + Ask your administrator to deploy a profile which enables WarnAboutFraudulentWebsites in Safari + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WarnAboutFraudulentWebsites' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='WarnAboutFraudulentWebsites' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.3 + # contributors: artemist-work + +- name: CIS - Ensure Prevent Cross-site Tracking in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Cross-tracking allows data-brokers to follow you across the Internet to enable their business model of + selling personal data. Users should protect their data and not volunteer it to marketing companies. + resolution: | + Automated method: + Ask your system administrator to deploy a profile via MDM with the following information: + 1. The PayloadType string is com.apple.Safari. + 2. The key to include is BlockStoragePolicy. + 3. The key must be set to: 2 + 4. The key to also include is WebKitPreferences.storageBlockingPolicy + 5. The key must be set to: 1 + 6. The key to also include is WebKitStorageBlockingPolicy + 7. The key must be set to: 1 + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='BlockStoragePolicy' AND + value = '2' AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitPreferences.storageBlockingPolicy' AND + value = '1' AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitStorageBlockingPolicy' AND + value = '1' AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='BlockStoragePolicy' AND + value != '2' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitPreferences.storageBlockingPolicy' AND + value != '1' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitStorageBlockingPolicy' AND + value != '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.4 + # contributors: lucasmrod + +- name: CIS - Ensure the Hide IP Address in Safari is Enabled (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Public (Routable) IP addresses can be used to track people to their current location, including + home and business addresses. While a valid IP address is necessary to load the site the valid + address does not need to be provided to known trackers and should be hidden. + resolution: | + Ask your system administrator to deploy a script that will configure "Hide IP Address in Safari" to Enabled + $ /usr/bin/sudo -u /usr/bin/defaults write + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences + /com.apple.Safari WBSPrivacyProxyAvailabilityTraffic -int 130276 + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WBSPrivacyProxyAvailabilityTraffic' AND + ((value >> 2) & 1) = 1) AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.5-enabled, decision-needed + # contributors: artemist-work + +- name: CIS - Ensure the Hide IP Address in Safari is Disabled (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Public (Routable) IP addresses can be used to track people to their current location, including + home and business addresses. While a valid IP address is necessary to load the site the valid + address does not need to be provided to known trackers and should be hidden. + However, enabling this setting will proxy web information through a 3rd party service, which may + not be allowed by your organization's policy. + resolution: | + Ask your system administrator to deploy a script that will configure "Hide IP Address in Safari" to Enabled + $ /usr/bin/sudo -u /usr/bin/defaults write + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences + /com.apple.Safari WBSPrivacyProxyAvailabilityTraffic -int 130272 + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WBSPrivacyProxyAvailabilityTraffic' AND + ((value >> 2) & 1) = 0) AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.5-disabled, decision-needed + # contributors: artemist-work + +- name: CIS - Ensure Advertising Privacy Protection in Safari Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Apple provides a framework that allows advertisers to target Apple users and end-users with advertisements. + While many people prefer that when they see advertising it is relevant to them and their interests, the detailed + information that is data mining collected, correlated, and available to advertisers in repositories is often disconcerting. + This information is valuable to both advertisers and attackers and has been used with other metadata to reveal users' identities. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + # For each user run: + /usr/bin/sudo -u /usr/bin/defaults write \ + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari \ + WebKitPreferences.privateClickMeasurementEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WebKitPreferences.privateClickMeasurementEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.6 + # contributors: artemist-work + +- name: CIS - Ensure Show Full Website Address in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Attackers use websites with malicious or unwanted content to exploit the user or the computer. Part of the attack chain is to lure someone to load their content rather than the desired content. In order to reduce the risk in interacting with unwanted content the full website address should always be displayed in Safari. + resolution: | + Graphical Method: + Perform the following steps to set Safari to show full website addresses: + 1. Open Safari + 2. Select Safari from the menu bar + 3. Select Settings + 4. Select Security + 5. Set Show full website address to enabled + Automated method: + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is ShowFullURLInSmartSearchField + 3. The key must be set to: + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowFullURLInSmartSearchField' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowFullURLInSmartSearchField' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.3.7 + # contributors: sharon-fdm + +- name: CIS - Ensure Show Status Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The Status Bar in Safari shows the full URL of any link on hover. It protects the user from visiting sites where the domain has been obfuscated by allowing the user to review whether the link points to an unexpected location. + resolution: | + Automated method: + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is ShowOverlayStatusBar + 3. The key must be set to: + query: | + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowOverlayStatusBar' AND + (value = 1 OR value = 'true'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth + +- name: CIS - Ensure Secure Keyboard Entry Terminal.app Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Secure Keyboard Entry prevents other applications on the system and/or network from detecting and recording what is typed into Terminal. Unauthorized applications and malicious code could intercept keystrokes entered in the Terminal. + Enabling Secure Keyboard Entry minimizes the risk of a key logger from detecting what is entered in Terminal. + resolution: | + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Terminal + 2. The key to include is SecureKeyboardEntry + 3. The key must be set to + + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Terminal' AND + name='SecureKeyboardEntry' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Terminal' AND + name='SecureKeyboardEntry' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-13-6.4.1 + # contributors: sharon-fdm diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.10.3.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.10.3.sh new file mode 100755 index 0000000000..048bf03195 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.10.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Test Message 1" \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.10.4.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.10.4.sh new file mode 100755 index 0000000000..2862a52444 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.10.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.10.5.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.10.5.sh new file mode 100755 index 0000000000..2c3b51b2d6 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.10.5.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.11.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.11.1.sh new file mode 100755 index 0000000000..9b1afbb660 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.11.1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure No Login Items Exist With Passwords in User Keychain +# Removes password hints for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + # Remove the hint attribute if it exists + if dscl . -read "/Users/$username" hint &>/dev/null; then + sudo dscl . -delete "/Users/$username" hint + fi +done diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.12.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.12.1.sh new file mode 100755 index 0000000000..619f9153c9 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.12.1.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false +sudo /usr/bin/defaults write /Library/Preferences/com.apple.MCX DisableGuestAccount -bool true \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.12.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.12.2.sh new file mode 100755 index 0000000000..a6bccab0d1 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.12.2.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off + + +# For testing +# Get Status: /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess status +# Set to enabled: /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess on + diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.12.3.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.12.3.sh new file mode 100755 index 0000000000..fbf775dbdc --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.12.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.1.sh new file mode 100755 index 0000000000..a5b1ec6cea --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.1.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.ODSAgent diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.2.sh new file mode 100755 index 0000000000..fcf8757ea6 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.3.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.3.sh new file mode 100755 index 0000000000..7feaa14a92 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.smbd diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.4.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.4.sh new file mode 100755 index 0000000000..e539ce313c --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/cupsctl --no-share-printers diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.5.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.5.sh new file mode 100755 index 0000000000..4019f9fa67 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.5.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.openssh.sshd diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.6.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.6.sh new file mode 100755 index 0000000000..628b998cac --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.6.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.7.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.7.sh new file mode 100755 index 0000000000..9eac6cd0c8 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.7.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/systemsetup -setremoteappleevents off diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.8.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.8.sh new file mode 100755 index 0000000000..4d241732a7 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.3.8.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0 diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.3.4.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.3.4.1.sh new file mode 100755 index 0000000000..e6b78d3083 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.3.4.1.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# NOTE(lucas): I was not able to set `com.apple.TimeMachine`'s `AutoBackup` via a configuration profile. +# I tried the profile method documented on the CIS Benchmarks document and after applying it successfully +# it did not update the value of `AutoBackup`. +# +# So for now we are using the following shell command to enable automatic backup of Time Machine destinations. +/usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.6.1.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.6.1.2.sh new file mode 100755 index 0000000000..120d2d1c6e --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.6.1.2.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# CIS - Ensure Location Services Is Enabled +sudo /usr/bin/defaults write /Library/Preferences/com.apple.locationmenu.plist ShowSystemServices -bool true diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.6.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.6.2.sh new file mode 100644 index 0000000000..753bfcfa14 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.6.2.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# CIS - Ensure Sending Diagnostic and Usage Data to Apple Is Disabled +# Part 1: System-level diagnostic settings +sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit -bool false +sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" ThirdPartyDataSubmit -bool false +sudo /bin/chmod 644 "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" +sudo /usr/sbin/chgrp admin "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" + +# Part 2: Per-user Siri data sharing opt-out +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + if [ -d "$home_dir" ]; then + sudo -u "$username" /usr/bin/defaults write "$home_dir/Library/Preferences/com.apple.assistant.support" "Siri Data Sharing Opt-In Status" -int 2 + fi +done diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.6.4.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.6.4.sh new file mode 100755 index 0000000000..9d62022c8f --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.6.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/sbin/spctl --master-enable diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.6.7.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.6.7.sh new file mode 100644 index 0000000000..e2563cf423 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.6.7.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -eu + +sudo security authorizationdb read system.preferences > /tmp/system.preferences.plist +defaults write /tmp/system.preferences.plist shared -bool false +sudo security authorizationdb write system.preferences < /tmp/system.preferences.plist diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.7.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.7.1.sh new file mode 100644 index 0000000000..fccd6fd899 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.7.1.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Set corner action to 0 (no-op). +# If you wish to not comply with the policy, set any of them to 6. + +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-br-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-bl-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-tr-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-tl-corner -integer 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.9.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.9.1.sh new file mode 100644 index 0000000000..993ddd2af1 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.9.1.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/pmset -a powernap 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.9.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.9.2.sh new file mode 100644 index 0000000000..2ecab92e99 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.9.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/pmset -a womp 0 diff --git a/docs/solutions/cis/macos-13/scripts/CIS_2.9.3.sh b/docs/solutions/cis/macos-13/scripts/CIS_2.9.3.sh new file mode 100755 index 0000000000..cc877132f3 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_2.9.3.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [[ $(uname -m) == 'arm64' ]]; then + # Apple silicon + /usr/bin/sudo /usr/bin/pmset -a standby 900 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 +else + # Intel + /usr/bin/sudo /usr/bin/pmset -a standbydelaylow 900 + /usr/bin/sudo /usr/bin/pmset -a standbydelayhigh 900 + /usr/bin/sudo /usr/bin/pmset -a highstandbythreshold 90 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 +fi diff --git a/docs/solutions/cis/macos-13/scripts/CIS_3.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_3.1.sh new file mode 100755 index 0000000000..6e3aa1955d --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_3.1.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist + +# For Testing: After the above command executed: +# This will stop the service: /usr/bin/sudo /bin/launchctl stop com.apple.auditd +# This will start the service: /usr/bin/sudo /bin/launchctl start com.apple.auditd \ No newline at end of file diff --git a/docs/solutions/cis/macos-13/scripts/CIS_3.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_3.2.sh new file mode 100755 index 0000000000..a43625369e --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_3.2.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# CIS - Ensure Security Auditing Flags Are Configured Per Local Organizational Requirements +# Sets audit flags to: -fm,ad,-ex,aa,-fr,lo,-fw + +AUDIT_CONTROL="/etc/security/audit_control" +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +cp "$AUDIT_CONTROL" "$tmpfile" +origFlags=$(grep 'flags:' "$tmpfile" | grep -v 'naflags') +sed "s/${origFlags}/flags:-fm,ad,-ex,aa,-fr,lo,-fw/" "$tmpfile" | sudo tee "$AUDIT_CONTROL" > /dev/null diff --git a/docs/solutions/cis/macos-13/scripts/CIS_3.3.sh b/docs/solutions/cis/macos-13/scripts/CIS_3.3.sh new file mode 100755 index 0000000000..d7d8fb8c48 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_3.3.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure install.log Is Retained for 365 or More Days +# Removes any all_max= setting from /etc/asl/com.apple.install + +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +# Remove all_max= entries (both M and G suffixes) +sudo sed -E 's/all_max=[0-9]+[MG]//g' /etc/asl/com.apple.install > "$tmpfile" +sudo cp "$tmpfile" /etc/asl/com.apple.install diff --git a/docs/solutions/cis/macos-13/scripts/CIS_3.4.sh b/docs/solutions/cis/macos-13/scripts/CIS_3.4.sh new file mode 100755 index 0000000000..48ffbcd7ec --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_3.4.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# CIS - Ensure Security Auditing Retention Is Configured +# Sets audit retention to: expire-after:60d OR 5G + +AUDIT_CONTROL="/etc/security/audit_control" +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +cp "$AUDIT_CONTROL" "$tmpfile" +origExpire=$(grep 'expire-after' "$tmpfile") +sed "s/${origExpire}/expire-after:60d OR 5G/" "$tmpfile" | sudo tee "$AUDIT_CONTROL" > /dev/null + +# Explanation: +# In your /etc/security/audit_control, look for a line starting at: expire-after +# SHOULD PASS: expire-after:60d OR 5G +# SHOULD PASS: expire-after:61d OR 5G +# SHOULD PASS: expire-after:60d OR 6G +# SHOULD PASS: expire-after:61d OR 6G +# SHOULD FAIL: expire-after:60d (no size component) +# SHOULD FAIL: expire-after:5G (no time component) +# SHOULD FAIL: expire-after:59d OR 5G +# SHOULD FAIL: expire-after:60d OR 4G diff --git a/docs/solutions/cis/macos-13/scripts/CIS_3.5.sh b/docs/solutions/cis/macos-13/scripts/CIS_3.5.sh new file mode 100755 index 0000000000..29c09f5df7 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_3.5.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/audit_control +/usr/bin/sudo /bin/chmod -R o-rw /etc/security/audit_control +/usr/bin/sudo /usr/sbin/chown -R root:wheel /var/audit/ +/usr/bin/sudo /bin/chmod -R o-rw /var/audit/ + diff --git a/docs/solutions/cis/macos-13/scripts/CIS_4.2.sh b/docs/solutions/cis/macos-13/scripts/CIS_4.2.sh new file mode 100644 index 0000000000..c9fe75751e --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_4.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist diff --git a/docs/solutions/cis/macos-13/scripts/CIS_4.3.sh b/docs/solutions/cis/macos-13/scripts/CIS_4.3.sh new file mode 100755 index 0000000000..ce62d02ac0 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_4.3.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd +/usr/bin/sudo /bin/rm /etc/exports diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.1.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.1.1.sh new file mode 100755 index 0000000000..1276aa8f73 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.1.1.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for i in $(/usr/bin/sudo dscl . list /Users | grep -v "^_"); do + /usr/bin/sudo /bin/chmod -R og-rwx /Users/"$i" +done diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.1.5.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.1.5.sh new file mode 100755 index 0000000000..5749d5ca4b --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.1.5.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the Applications Folder + +IFS=$'\n' +for apps in $(/usr/bin/find /Applications -iname "*.app" -type d -perm -2); do + sudo /bin/chmod -R o-w "$apps" +done +unset IFS diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.1.6.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.1.6.sh new file mode 100755 index 0000000000..00f090e223 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.1.6.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the System Folder + +IFS=$'\n' +for sysPermissions in $(/usr/bin/find /System/Volumes/Data/System -type d -perm -2 | /usr/bin/grep -v "Drop Box"); do + sudo /bin/chmod -R o-w "$sysPermissions" +done +unset IFS diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.1.7.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.1.7.sh new file mode 100755 index 0000000000..5f89ef6307 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.1.7.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the Library Folder + +IFS=$'\n' +for libPermissions in $(/usr/bin/find /System/Volumes/Data/Library -type d -perm -2 | /usr/bin/grep -v Caches | /usr/bin/grep -v /Preferences/Audio/Data); do + sudo /bin/chmod -R o-w "$libPermissions" +done +unset IFS diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.10.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.10.sh new file mode 100755 index 0000000000..044c28ee64 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.10.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/rm -R /Users/Guest diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.4.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.4.sh new file mode 100644 index 0000000000..294619fd15 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.4.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# CIS - Ensure a Separate Timestamp Is Not Used for Each User-tty Combo +# Sets sudo timeout to 0 (require password every time). + +SUDOERS_FILE="/etc/sudoers.d/CIS_54_sudoconfiguration" + +echo 'Defaults timestamp_timeout=0' | sudo tee "$SUDOERS_FILE" > /dev/null +sudo /bin/chmod 0440 "$SUDOERS_FILE" +sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" + +# Validate syntax +if ! sudo /usr/sbin/visudo -cf "$SUDOERS_FILE"; then + echo "ERROR: sudoers syntax check failed. Removing invalid configuration." + sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.5.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.5.sh new file mode 100644 index 0000000000..398f85ea7f --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.5.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# CIS - Ensure a Separate Timestamp Is Used for Each User-tty Combo +# Sets sudo timestamp_type to tty (per-terminal authentication). + +SUDOERS_FILE="/etc/sudoers.d/CIS_55_sudoconfiguration" + +echo 'Defaults timestamp_type=tty' | sudo tee "$SUDOERS_FILE" > /dev/null +sudo /bin/chmod 0440 "$SUDOERS_FILE" +sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" + +# Validate syntax +if ! sudo /usr/sbin/visudo -cf "$SUDOERS_FILE"; then + echo "ERROR: sudoers syntax check failed. Removing invalid configuration." + sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.6.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.6.sh new file mode 100644 index 0000000000..1597cee0df --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.6.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/dsenableroot -d diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.7.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.7.sh new file mode 100644 index 0000000000..0442b1ba85 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.7.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver use-login-window-ui diff --git a/docs/solutions/cis/macos-13/scripts/CIS_5.8.sh b/docs/solutions/cis/macos-13/scripts/CIS_5.8.sh new file mode 100755 index 0000000000..6e582a62f7 --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_5.8.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "Content of the banner" | sudo tee /Library/Security/PolicyBanner.txt +/usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt +/usr/bin/sudo /bin/chmod o+r /Library/Security/PolicyBanner.txt diff --git a/docs/solutions/cis/macos-13/scripts/CIS_6.1.1.sh b/docs/solutions/cis/macos-13/scripts/CIS_6.1.1.sh new file mode 100755 index 0000000000..5945531b2e --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_6.1.1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure Show All Filename Extensions Setting is Enabled +# Applies AppleShowAllExtensions for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + if [ -d "$home_dir" ]; then + /usr/bin/sudo -u "$username" /usr/bin/defaults write "$home_dir/Library/Preferences/.GlobalPreferences.plist" AppleShowAllExtensions -bool true + fi +done diff --git a/docs/solutions/cis/macos-13/scripts/CIS_6.3.6.sh b/docs/solutions/cis/macos-13/scripts/CIS_6.3.6.sh new file mode 100644 index 0000000000..6981b3494c --- /dev/null +++ b/docs/solutions/cis/macos-13/scripts/CIS_6.3.6.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# CIS - Ensure Safari Advertising Privacy Protection Is Enabled +# Applies privateClickMeasurementEnabled for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + pref_path="$home_dir/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari" + if [ -d "$home_dir" ]; then + /usr/bin/sudo -u "$username" /usr/bin/defaults write "$pref_path" WebKitPreferences.privateClickMeasurementEnabled -bool true + fi +done diff --git a/docs/solutions/cis/macos-14/README.md b/docs/solutions/cis/macos-14/README.md new file mode 100644 index 0000000000..1d3778cb8d --- /dev/null +++ b/docs/solutions/cis/macos-14/README.md @@ -0,0 +1,45 @@ +# macOS 14 Sonoma benchmark + +Fleet's policies have been written against v2.1.0 of the benchmark. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. + +For requirements and usage details, see the [CIS Benchmarks](https://fleetdm.com/docs/using-fleet/cis-benchmarks) documentation. + +### Contents + +| Folder | Description | +|--------|-------------| +| `policies/` | GitOps-compatible policy YAML — import via `fleetctl apply` or reference with `- path:` in `fleet.yml` | +| `configuration-profiles/` | Apple `.mobileconfig` profiles — upload via Fleet UI or `fleetctl apply` to enforce the settings checked by the policies | +| `scripts/` | Shell scripts — upload via Fleet UI or `fleetctl apply` and link as `run_script` remediation in the corresponding policy | + +### Limitations + +The following CIS benchmarks cannot be checked with a policy in Fleet: +1. 2.1.2 Audit App Store Password Settings +2. 2.3.3.12 Ensure Computer Name Does Not Contain PII or Protected Organizational Information +3. 2.6.6 Audit Lockdown Mode +4. 2.11.2 Audit Touch ID and Wallet & Apple Pay Settings +5. 2.13.1 Audit Passwords System Preference Setting +6. 2.14.1 Audit Notification & Focus Settings +7. 3.7 Audit Software Inventory +8. 6.2.1 Ensure Protect Mail Activity in Mail Is Enabled + +### Checks that require decision + +CIS has left the parameters of the following checks up to the benchmark implementer. CIS recommends that an organization make a conscious decision for these benchmarks, but does not make a specific recommendation. + +Fleet has provided both an "enabled" and "disabled" version of these benchmarks. When both policies are added, at least one will fail. Once your organization has made a decision, you can delete one or the other policy. +The policy will be appended with a `-enabled` or `-disabled` label, such as `2.1.1.1-enabled`. + +- 2.1.1.1 Audit iCloud Keychain +- 2.1.1.2 Audit iCloud Drive +- 2.5.1 Audit Siri +- 2.8.1 Audit Universal Control + +Furthermore, CIS has decided to not require the following password complexity settings: +- 5.2.3 Ensure Complex Password Must Contain Alphabetic Characters Is Configured +- 5.2.4 Ensure Complex Password Must Contain Numeric Character Is Configured +- 5.2.5 Ensure Complex Password Must Contain Special Character Is Configured +- 5.2.6 Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured + +However, Fleet has provided these as policies. If your organization declines to implement these, simply delete the corresponding policies. diff --git a/docs/solutions/cis/macos-14/configuration-profiles/1.2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/1.2.mobileconfig new file mode 100644 index 0000000000..5d576e4d7c --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/1.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.2.check + PayloadUUID + 4DC539B5-837E-4DC3-B60B-43A8C556A8F0 + AutomaticCheckEnabled + + + + PayloadDescription + test + PayloadDisplayName + Ensure Auto Update Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 03E69A02-02CE-4CA0-8F17-3BAAD5D3852F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/1.3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/1.3.mobileconfig new file mode 100644 index 0000000000..a2bd6671ec --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/1.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.3.check + PayloadUUID + 5FDE6D58-79CD-447A-AFB0-BA32D889C396 + AutomaticDownload + + + + PayloadDescription + test + PayloadDisplayName + Ensure Download New Updates When Available Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0A1C2F97-D6FA-4CDB-ABB6-47DF2B151F4F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/1.4.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/1.4.mobileconfig new file mode 100644 index 0000000000..bee74453b5 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/1.4.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.4.check + PayloadUUID + 15BF7634-276A-411B-8C4E-52D89B4ED82C + AutomaticallyInstallMacOSUpdates + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install of macOS Updates Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7DB8733E-BD11-4E88-9AE0-273EF2D0974B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/1.5.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/1.5.mobileconfig new file mode 100644 index 0000000000..416b7a0d85 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/1.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.5.check + PayloadUUID + 6B0285F8-5DB8-4F68-AA6E-2333CCD6CE04 + AutomaticallyInstallAppUpdates + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install Application Updates from the App Store Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1C4C0EC4-64A7-4AF0-8807-A3DD44A6DC76 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/1.6.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/1.6.mobileconfig new file mode 100644 index 0000000000..263f12fcb5 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/1.6.mobileconfig @@ -0,0 +1,39 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.6.check + PayloadUUID + 0D8F676A-A705-4F57-8FF8-3118360EFDEB + ConfigDataInstall + + CriticalUpdateInstall + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install Security Responses and System Files Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.6 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + EBEE9B81-9D33-477F-AFBE-9691360B7A74 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/1.7.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/1.7.mobileconfig new file mode 100644 index 0000000000..1dcca5b3b0 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/1.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-1.7.check + PayloadUUID + 123FD592-D1C3-41FD-BC41-F91F3E1E2CF4 + enforcedSoftwareUpdateDelay + 29 + + + PayloadDescription + test + PayloadDisplayName + Ensure Software Update Deferment Is Less Than or Equal to 30 Days + PayloadIdentifier + com.zwass.cis-1.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 385A0C13-2472-41B3-851C-1311FA12EB49 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.1-enable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.1-enable.mobileconfig new file mode 100644 index 0000000000..9a8bc0992f --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.1.check-enable + PayloadUUID + 68D8C498-FB81-4262-9EF4-E689B5A6B40F + allowCloudKeychainSync + + + + PayloadDescription + test + PayloadDisplayName + Ensure iCloud Keychain is enabled + PayloadIdentifier + com.fleetdm.cis-2.1.1.1-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + EE1BA83A-E145-4F5B-9597-836DC357BBE7 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-disable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-disable.mobileconfig new file mode 100644 index 0000000000..f701b8fa75 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.2.check-disable + PayloadUUID + 1028E002-9AFE-446A-84E0-27DA5DA39B4A + allowCloudDocumentSync + + + + PayloadDescription + test + PayloadDisplayName + Disable iCloud Drive storage solution usage + PayloadIdentifier + com.fleetdm.cis-2.1.1.2-disable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7B3DE4EA-0AFA-44F5-9716-37526EE441EA + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-enable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-enable.mobileconfig new file mode 100644 index 0000000000..50d8788d77 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.2-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.2.check-enable + PayloadUUID + 8618AA0E-B6AC-4D1C-AE01-C46956EC1926 + allowCloudDocumentSync + + + + PayloadDescription + test + PayloadDisplayName + Enable iCloud Drive storage solution usage + PayloadIdentifier + com.fleetdm.cis-2.1.1.2-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2C2FC587-14E8-4A52-98B5-30BA1C975BBA + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.3.mobileconfig new file mode 100644 index 0000000000..a210df0a09 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.1.1.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.3.check + PayloadUUID + 5F0EF767-200C-4E10-A43D-04204A4A8E06 + allowCloudDesktopAndDocuments + + + + PayloadDescription + test + PayloadDisplayName + Ensure iCloud Drive Document and Desktop Sync Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.1.1.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2EAF168E-3DC9-4375-AA37-501EDB3C8422 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.10.3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.10.3.mobileconfig new file mode 100644 index 0000000000..c9ecbd26d5 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.10.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.loginwindow + PayloadIdentifier + com.fleetdm.cis-2.10.3.check + PayloadUUID + 3E4C4ED8-ADB6-4EFB-8198-58027B94DF86 + LoginwindowText + Some Test Message + + + PayloadDescription + test + PayloadDisplayName + Ensure a Custom Message for the Login Screen Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.10.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 9359CA59-D3C1-4A0D-8595-9E5F1F0CAE12 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.12.3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.12.3.mobileconfig new file mode 100644 index 0000000000..217b1d5ebe --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.12.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.loginwindow + PayloadIdentifier + com.fleetdm.cis-2.12.3.check + PayloadUUID + CB576629-19E2-4649-84FC-C007826732A0 + com.apple.login.mcx.DisableAutoLoginClient + + + + PayloadDescription + test + PayloadDisplayName + Ensure Automatic Login Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.12.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0AEDE730-9466-47D1-B322-3C6F325B3737 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.2.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.2.1.mobileconfig new file mode 100644 index 0000000000..8f9d756837 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.security.firewall + PayloadIdentifier + com.fleetdm.cis-2.2.1.check + PayloadUUID + D12965C1-12BD-4CAD-A55A-E7F020B0DAAF + EnableFirewall + + + + PayloadDescription + test + PayloadDisplayName + Ensure Firewall Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F0BFF592-1CB7-4922-B2D4-583415DC4A0B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.2.2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.2.2.mobileconfig new file mode 100644 index 0000000000..c9c16ef88a --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.2.2.mobileconfig @@ -0,0 +1,39 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.security.firewall + PayloadIdentifier + com.fleetdm.cis-2.2.2.check + PayloadUUID + 2D2A07FB-3700-4ED8-AF06-6A2213F4C634 + EnableFirewall + + EnableStealthMode + + + + PayloadDescription + test + PayloadDisplayName + Ensure Firewall Stealth Mode Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.2.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E0B831D6-F214-4F1F-967C-B75B38B26708 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.3.1.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.3.1.1.mobileconfig new file mode 100644 index 0000000000..5453a36d7e --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.3.1.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.1.1.check + PayloadUUID + 22F2E52E-E593-40F7-8635-E067EDEE4F60 + allowAirDrop + + + + PayloadDescription + test + PayloadDisplayName + Ensure AirDrop Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.1.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 55DC048E-1490-4A26-8A97-4A4EA91A7302 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.3.1.2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.3.1.2.mobileconfig new file mode 100644 index 0000000000..707f9c26c6 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.3.1.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.1.2.check + PayloadUUID + BF58FD50-E4EC-4427-A549-1BCD7B88FCEB + allowAirPlayIncomingRequests + + + + PayloadDescription + test + PayloadDisplayName + Ensure AirPlay Receiver Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.1.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 633BD4E3-849E-485E-A784-AA80D86E83A3 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.3.2.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.3.2.1.mobileconfig new file mode 100644 index 0000000000..f299a44c1f --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.3.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.2.1.check + PayloadUUID + C5CFF95F-7E77-4B0E-8136-2729A481D60A + forceAutomaticDateAndTime + + + + PayloadDescription + test + PayloadDisplayName + Ensure Set Time and Date Automatically Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.3.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + CEA7E3A6-E5DF-4A93-ABB7-45F36BF3D3E8 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.3.3.10.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.3.3.10.mobileconfig new file mode 100644 index 0000000000..28fa7f39e6 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.3.3.10.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.preferences.sharing.SharingPrefsExtension + PayloadIdentifier + com.fleetdm.cis-2.3.3.10-check + PayloadUUID + DC34D1FA-3D14-4AEA-844B-FDEC49CD73BB + homeSharingUIStatus + 0 + legacySharingUIStatus + 0 + mediaSharingUIStatus + 0 + + + PayloadDescription + test + PayloadDisplayName + Ensure Media Sharing is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.3.10 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 9FD8A0FB-2F7C-41C4-A3FB-90E953BCD433 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.3.3.9.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.3.3.9.mobileconfig new file mode 100644 index 0000000000..7c5eb6352e --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.3.3.9.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.3.9.check + PayloadUUID + 85956359-CF0A-46C8-BD7C-26060ABB9119 + allowContentCaching + + + + PayloadDescription + test + PayloadDisplayName + Ensure Content Caching Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.3.9 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + AA4372B4-5D36-4660-A2FC-07067C94A91F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.4.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.4.1.mobileconfig new file mode 100644 index 0000000000..528cd219b6 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.controlcenter + PayloadIdentifier + com.fleetdm.cis-2.4.1.check + PayloadUUID + B97CBDF6-1EB7-424C-86DE-E11892B223F3 + WiFi + 18 + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Wi-Fi status in Menu Bar Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2357BB9E-FD15-4E1D-A1CC-12C7798E1483 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.4.2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.4.2.mobileconfig new file mode 100644 index 0000000000..0d0349d040 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.4.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.controlcenter + PayloadIdentifier + com.fleetdm.cis-2.4.2.check + PayloadUUID + FC6045C3-FFD7-4C0A-A3D5-ED0ADB9FF391 + Bluetooth + 18 + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Bluetooth Status in Menu Bar Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.4.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F997FFD6-7E39-48C7-A451-B12A79B6FA22 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.5.1-disable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.5.1-disable.mobileconfig new file mode 100644 index 0000000000..cf61d53acb --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.5.1-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.5.1.check-disable + PayloadUUID + 4B56DF79-ECAF-4175-AACC-95F08A980B6C + allowAssistant + + + + PayloadDescription + test + PayloadDisplayName + Disable Siri + PayloadIdentifier + com.fleetdm.cis-2.5.1-disable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + FB3E1980-5FE2-4C8F-BCF8-6FFF4117C962 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.5.1-enable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.5.1-enable.mobileconfig new file mode 100644 index 0000000000..5bac3db11a --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.5.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.5.1.check-enable + PayloadUUID + DC0652C5-E996-408F-84A0-9F09657FD771 + allowAssistant + + + + PayloadDescription + test + PayloadDisplayName + Enable Siri + PayloadIdentifier + com.fleetdm.cis-2.5.1-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F5001E34-CC4D-4951-A7A3-A95DC02F0090 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.1.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.1.1.mobileconfig new file mode 100644 index 0000000000..097323330d --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.1.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.locationd + PayloadIdentifier + com.fleetdm.cis-2.6.1.1.check + PayloadUUID + 25D6B210-E8BB-465F-94D7-474073F4A892 + LocationServicesEnabled + + + + PayloadDescription + test + PayloadDisplayName + Ensure Location Services Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.1.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 8FC698D7-9EF8-427E-8E52-4B928A7437B0 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part1.mobileconfig new file mode 100644 index 0000000000..c57d32092c --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.2-part1.check + PayloadUUID + 9A6BF497-B715-453A-A7F7-D27C325EB5B3 + allowDiagnosticSubmission + + + + PayloadDescription + test + PayloadDisplayName + Ensure Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 1) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7D03459B-AA53-41AB-85C4-AAED7CE95EE9 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part2.mobileconfig new file mode 100644 index 0000000000..363a447e55 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SubmitDiagInfo + PayloadIdentifier + com.fleetdm.cis-2.6.2-part2.check + PayloadUUID + 756EF527-5F37-4685-9A0F-21B596D1F895 + AutoSubmit + + + + PayloadDescription + test + PayloadDisplayName + Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 2) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C720744B-BBF2-4FE2-B8A9-4638CECC8BB2 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part3.mobileconfig new file mode 100644 index 0000000000..c0e551443d --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.2-part3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.2-part3.check + PayloadUUID + 0FD378F2-B497-42D9-AEAE-C58D855E56FD + Siri Data Sharing Opt-In Status + 2 + + + PayloadDescription + test + PayloadDisplayName + Ensure Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 3) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 49A101C5-3401-47E7-90AF-9071D4D65E5D + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.3.mobileconfig new file mode 100644 index 0000000000..2bed86338e --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.3.check + PayloadUUID + 6C5400FF-BBB3-471F-B139-59D86ADA9A3A + allowApplePersonalizedAdvertising + + + + PayloadDescription + test + PayloadDisplayName + Ensure Limit Ad Tracking Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C215AA26-C3D0-4A77-B884-8B8C918FD197 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.4.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.4.mobileconfig new file mode 100644 index 0000000000..9cc87eaab2 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.4.mobileconfig @@ -0,0 +1,39 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.systempolicy.control + PayloadIdentifier + com.fleetdm.cis-2.6.4.check + PayloadUUID + D9E7B5EA-8DA3-4AF1-99CD-30ED18EF47F1 + EnableAssessment + + AllowIdentifiedDevelopers + + + + PayloadDescription + test + PayloadDisplayName + Ensure Gatekeeper Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1991574F-155E-4FC1-AD47-FDC4DC3B07B4 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.6.5.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.6.5.mobileconfig new file mode 100644 index 0000000000..da7247ad2b --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.6.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.MCX + PayloadIdentifier + com.fleetdm.cis-2.6.5.check + PayloadUUID + D56F90DC-6F90-4BEB-8D0F-263D062EC612 + dontAllowFDEDisable + + + + PayloadDescription + test + PayloadDisplayName + Ensure FileVault Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 804CCF1F-2814-4B73-95EE-DB0B4FF67103 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.8.1-disable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.8.1-disable.mobileconfig new file mode 100644 index 0000000000..82816dd0ef --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.8.1-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.universalcontrol + PayloadIdentifier + com.fleetdm.cis-2.8.1.check-disabled + PayloadUUID + A6481AEB-354C-4718-9E01-B4562C7F341A + Disable + + + + PayloadDescription + test + PayloadDisplayName + Ensure Universal Control is disabled + PayloadIdentifier + com.fleetdm.cis-2.8.1-disabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 8EA6B5B4-A0EF-49B3-8A6E-C8F02C27456B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/2.8.1-enable.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/2.8.1-enable.mobileconfig new file mode 100644 index 0000000000..126c98c07c --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/2.8.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.universalcontrol + PayloadIdentifier + com.fleetdm.cis-2.8.1.check-enabled + PayloadUUID + F39058CB-027B-453D-B2DF-414F9B84D241 + Disable + + + + PayloadDescription + test + PayloadDisplayName + Ensure Universal Control is enabled + PayloadIdentifier + com.fleetdm.cis-2.8.1-enabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + ECC41516-FFD8-4321-9696-63B1939CB956 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/3.6.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/3.6.mobileconfig new file mode 100644 index 0000000000..a4474aa98e --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/3.6.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.security.firewall + PayloadIdentifier + com.fleetdm.cis-3.6.check + PayloadUUID + 604D8218-D7B6-43B1-95E6-DFCA4C25D73D + EnableFirewall + + EnableLogging + + LoggingOption + detail + + + PayloadDescription + test + PayloadDisplayName + Ensure Firewall Logging Is Enabled and Configured + PayloadIdentifier + com.fleetdm.cis-3.6 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 5E27501E-50DF-4804-9DEC-0E63C34E8831 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/4.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/4.1.mobileconfig new file mode 100644 index 0000000000..ceecc14821 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mDNSResponder + PayloadIdentifier + com.fleetdm.cis-4.1.check + PayloadUUID + 08FEA43B-CE9B-4098-804C-11459D109992 + NoMulticastAdvertisements + + + + PayloadDescription + test + PayloadDisplayName + Ensure Bonjour Advertising Services Is Disabled + PayloadIdentifier + com.fleetdm.cis-4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 25BD1312-2B79-40C7-99FA-E60B49A1883E + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/5.2.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/5.2.1.mobileconfig new file mode 100644 index 0000000000..224bb96c40 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/5.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.1.check + PayloadUUID + 749F9F38-7AD2-4FC6-8F88-672F3AB79F82 + maxFailedAttempts + 5 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Account Lockout Threshold Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F886BF2C-12D2-428B-BCF0-55823908F426 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/5.2.2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/5.2.2.mobileconfig new file mode 100644 index 0000000000..d2b4195a47 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/5.2.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.2.check + PayloadUUID + A7C54C32-6519-4335-A673-B20D3015B432 + minLength + 15 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Minimum Length Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 415F567D-83F4-4AB5-BCFA-7AC8B707DCFD + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/5.2.3-and-5.2.4.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/5.2.3-and-5.2.4.mobileconfig new file mode 100644 index 0000000000..6555d780ce --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/5.2.3-and-5.2.4.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.3-and-5.2.4.check + PayloadUUID + 207388F7-0144-4518-9CCD-9E488EF9C5D7 + requireAlphanumeric + + + + PayloadDescription + test + PayloadDisplayName + Require AlphaNumeric characters in password + PayloadIdentifier + com.fleetdm.cis-5.2.3-and-5.2.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 19BDCDC8-7E9E-48A6-9468-F87EE865F677 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/5.2.5.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/5.2.5.mobileconfig new file mode 100644 index 0000000000..6194054bec --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/5.2.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.5.check + PayloadUUID + 46BD11BD-116C-4E95-9575-6EDFDE0F110F + minComplexChars + 1 + + + PayloadDescription + test + PayloadDisplayName + Require Special characters in password + PayloadIdentifier + com.fleetdm.cis-5.2.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C8CEE953-50F3-48E6-B462-FA98D931A906 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/5.2.7.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/5.2.7.mobileconfig new file mode 100644 index 0000000000..9645354659 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/5.2.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.7.check + PayloadUUID + F5515451-97EC-4CCB-B442-CDF0C546BC27 + maxPINAgeInDays + 365 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Age Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + AEF56396-50CC-4E5A-9C6D-CBAE6A5E13B5 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/5.2.8.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/5.2.8.mobileconfig new file mode 100644 index 0000000000..a52c57d2cd --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/5.2.8.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.8.check + PayloadUUID + 5227E361-F971-44B3-B706-B04BA0D3B186 + pinHistory + 15 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password History Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.8 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0AD34391-5C19-4229-AA10-EB6A169D15EB + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/6.3.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/6.3.1.mobileconfig new file mode 100644 index 0000000000..10a6bdba7b --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/6.3.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.1.check + PayloadUUID + 3CAAC721-D492-45AC-95E4-8ECBF81EA21E + AutoOpenSafeDownloads + + + + PayloadDescription + test + PayloadDisplayName + Ensure Automatic Opening of Safe Files in Safari Is Disabled + PayloadIdentifier + com.fleetdm.cis-6.3.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2556F162-9AE5-4163-92C1-F89A2847C80E + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/6.3.2.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/6.3.2.mobileconfig new file mode 100644 index 0000000000..bf7839b4ce --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/6.3.2.mobileconfig @@ -0,0 +1,38 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.2.check + PayloadUUID + 61BC98A2-9482-4EB3-9184-FB6A8B8E33E8 + HistoryAgeInDaysLimit + 1 + + + PayloadDescription + test + PayloadDisplayName + Audit History and Remove History Items + PayloadIdentifier + com.fleetdm.cis-6.3.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1D6C407D-8C28-4BDC-9837-DF5ED49E8059 + PayloadVersion + 1 + + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/6.3.3.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/6.3.3.mobileconfig new file mode 100644 index 0000000000..250550d143 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/6.3.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.3.check + PayloadUUID + AA1CF4AE-446C-41B0-8B06-ADEAEF9F0505 + WarnAboutFraudulentWebsites + + + + PayloadDescription + test + PayloadDisplayName + Ensure Warn When Visiting A Fraudulent Website in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 130308F8-916A-449D-9711-34A31DCCD39D + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/6.3.4.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/6.3.4.mobileconfig new file mode 100644 index 0000000000..88bde35973 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/6.3.4.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.4.check + PayloadUUID + E0560069-04EF-4985-815E-987A304F8EB7 + BlockStoragePolicy + 2 + WebKitPreferences.storageBlockingPolicy + 1 + WebKitStorageBlockingPolicy + 1 + + + PayloadDescription + test + PayloadDisplayName + Ensure Prevent Cross-site Tracking in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E1D04566-15CE-458C-A0D1-5F6C7B9A6472 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/6.3.7.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/6.3.7.mobileconfig new file mode 100644 index 0000000000..9351714af6 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/6.3.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.7.check + PayloadUUID + A78B534C-0E6D-46C0-97F1-D50178AC5AD0 + ShowFullURLInSmartSearchField + + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Full Website Address in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 5A412D8E-5951-42A3-95ED-BD82AD6D3038 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/6.4.1.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/6.4.1.mobileconfig new file mode 100644 index 0000000000..9aca882491 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/6.4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Terminal + PayloadIdentifier + com.fleetdm.cis-6.4.1.check + PayloadUUID + E8D36749-D7F8-4280-9B17-D6224B67B63B + SecureKeyboardEntry + + + + PayloadDescription + test + PayloadDisplayName + Ensure Secure Keyboard Entry Terminal.app Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + D4C0B4CC-D39A-4F0F-AF8A-AB5A73D02B3F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/configuration-profiles/on-device-dictation-enabled.mobileconfig b/docs/solutions/cis/macos-14/configuration-profiles/on-device-dictation-enabled.mobileconfig new file mode 100644 index 0000000000..933ee01f92 --- /dev/null +++ b/docs/solutions/cis/macos-14/configuration-profiles/on-device-dictation-enabled.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + On-Device Dictation Restriction + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis.check-cis-on-device-dictation-enabled + PayloadUUID + 4E203BCD-CAFB-4248-B6B0-F2A1AEC55EB1 + forceOnDeviceOnlyDictation + + + + PayloadDescription + Ensures dictation requests are processed on-device only and never sent to external servers. + PayloadDisplayName + Ensure On-Device Dictation Is Enabled + PayloadIdentifier + com.fleetdm.cis-on-device-dictation-enabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E155A81F-DCF0-467B-B177-972E67562BFF + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-14/policies/cis-policy-queries.yml b/docs/solutions/cis/macos-14/policies/cis-policy-queries.yml new file mode 100644 index 0000000000..7d27fb1ec1 --- /dev/null +++ b/docs/solutions/cis/macos-14/policies/cis-policy-queries.yml @@ -0,0 +1,3304 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- name: CIS - Ensure All Apple-provided Software Is Current (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update. + Note: This query may be longer than the avg query and may take more than 10 seconds to run. + resolution: | + Graphical Method: + Perform the following to install all available software updates: + 1. Open System Settings + 2. Select General + 3. Select Software Update + 4. Select Update All + query: SELECT 1 FROM software_update WHERE software_update_required = '0'; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Auto Update Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that the system is configured via MDM to automatically install updates. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticCheckEnabled' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticCheckEnabled' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Download New Updates When Available Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that the system is configured via MDM to automatically download updates. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic update downloads." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticDownload' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticDownload' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Install of macOS Updates Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Ensure that macOS updates are installed after they are available from Apple. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic install of macOS updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallMacOSUpdates' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallMacOSUpdates' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Install Application Updates from the App Store Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Ensure that application updates are installed after they are available from Apple. + resolution: Ask your system administrator to deploy an MDM profile that enables automatic updates of Apple apps. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallAppUpdates' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallAppUpdates' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure XProtect Is Running and Updated + # platforms: macOS + platform: darwin + description: | + XProtect is Apple's native signature-based antivirus technology. XProtect both finds and blocks the execution of known malware. There are many AV and Endpoint Threat Detection and Response (ETDR) tools available for Mac OS. The native Apple provisioned tool looks for specific known malware and is completely integrated into the OS. No matter what other tools are being used, XProtect should have the latest signatures available. + resolution: | + Ask your system administrator to deploy a script that will configure: + /usr/bin/sudo /bin/launchctl load -w /Library/Apple/System/Library/LaunchDaemons/com.apple.XProtect.daemon.scan.plist + /usr/bin/sudo /bin/launchctl load -w /Library/Apple/System/Library/LaunchDaemons/com.apple.XprotectFramework.PluginService.plist + /usr/bin/sudo /usr/sbin/softwareupdate -l --background-critical + query: | + SELECT 1 + WHERE ( + SELECT COUNT(*) + FROM launchd + WHERE path IN ( + '/Library/Apple/System/Library/LaunchDaemons/com.apple.XprotectFramework.PluginService.plist', + '/Library/Apple/System/Library/LaunchDaemons/com.apple.XProtect.daemon.scan.plist' + ) + ) = 2; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth, getvictor + +- name: CIS - Ensure Install Security Responses and System Files Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Ensure that system and security updates are installed after they are available from + Apple. This setting enables definition updates for XProtect and Gatekeeper. With this + setting in place, new malware and adware that Apple has added to the list of malware or + untrusted software will not execute. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic critical system and security updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='CriticalUpdateInstall' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='CriticalUpdateInstall' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Software Update Deferment Is Less Than or Equal to 30 Days (MDM Required) + # platforms: macOS + platform: darwin + description: | + Apple provides the capability to manage software updates on Apple devices through + mobile device management. Part of those capabilities permit organizations to defer + software updates and allow for testing. Many organizations have specialized software + and configurations that may be negatively impacted by Apple updates. If software + updates are deferred, they should not be deferred for more than 30 days. + This control only verifies that deferred software updates are not deferred for more than 30 days. + resolution: "Ask your system administrator to deploy an MDM profile configures update deferment to a value of 30 days or less." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='enforcedSoftwareUpdateDelay' AND + value <= 30 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='enforcedSoftwareUpdateDelay' AND + value > 30 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure iCloud Drive storage solution is disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + iCloud Drive is Apple's storage solution for applications on both macOS and iOS to use the same files that are resident in Apple's cloud storage. The iCloud Drive folder is available much like Dropbox, Microsoft OneDrive, or Google Drive. + One of the concerns in public cloud storage is that proprietary data may be inappropriately stored in an end user's personal repository. Organizations that need specific controls on information should ensure that this service is turned off or the user knows what information must be stored on services that are approved for storage of controlled information. + This query will check for the existence of the policy not its value (That should be set per organization's decision) + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDocumentSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Drive storage solution is enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + iCloud Drive is Apple's storage solution for applications on both macOS and iOS to use the same files that are resident in Apple's cloud storage. The iCloud Drive folder is available much like Dropbox, Microsoft OneDrive, or Google Drive. + One of the concerns in public cloud storage is that proprietary data may be inappropriately stored in an end user's personal repository. Organizations that need specific controls on information should ensure that this service is turned off or the user knows what information must be stored on services that are approved for storage of controlled information. + This query will check for the existence of the policy not its value (That should be set per organization's decision) + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDocumentSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Keychain is disabled (if your org policy is to disable it) (MDM Required) + # platforms: macOS + platform: darwin + description: | + The iCloud keychain is Apple's password manager that works with macOS and iOS. The capability allows users to store passwords in either iOS or macOS for use in Safari on both platforms and other iOS-integrated applications. The most pervasive use is driven by iOS use rather than macOS. The passwords stored in a macOS keychain on an Enterprise-managed computer could be stored in Apple's cloud and then be available on a personal computer using the same account. The stored passwords could be for organizational as well as for personal accounts. + If passwords are no longer being used as organizational tokens, they are not in scope for iCloud keychain storage. + Rationale: + Ensure that the iCloud keychain is used consistently with organizational requirements. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudKeychainSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Keychain is enabled (if your org policy is to enable it) (MDM Required) + # platforms: macOS + platform: darwin + description: | + The iCloud keychain is Apple's password manager that works with macOS and iOS. The capability allows users to store passwords in either iOS or macOS for use in Safari on both platforms and other iOS-integrated applications. The most pervasive use is driven by iOS use rather than macOS. The passwords stored in a macOS keychain on an Enterprise-managed computer could be stored in Apple's cloud and then be available on a personal computer using the same account. The stored passwords could be for organizational as well as for personal accounts. + If passwords are no longer being used as organizational tokens, they are not in scope for iCloud keychain storage. + Rationale: + Ensure that the iCloud keychain is used consistently with organizational requirements. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudKeychainSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Drive Document and Desktop Sync Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Automated Document synchronization should be planned and controlled to approved storage. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDesktopAndDocuments. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDesktopAndDocuments' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDesktopAndDocuments' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: zwass + +- name: CIS - Ensure Firewall Is Enabled + # platforms: macOS + platform: darwin + description: A firewall minimizes the threat of unauthorized users gaining access to your system while connected to a network or the Internet. + resolution: "Go to the Network pane in System Settings and ensure Firewall is active." + query: SELECT 1 FROM alf WHERE global_state >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Firewall Stealth Mode Is Enabled + # platforms: macOS + platform: darwin + description: | + While in Stealth mode, the computer will not respond to unsolicited probes, dropping that traffic. + Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet. + resolution: | + Perform the following steps to enable firewall stealth mode: + 1. Open System Settings + 2. Select Network + 3. Select Firewall + 4. Select Options... + 5. Set Enabled stealth mode to enabled + query: SELECT 1 FROM alf WHERE global_state >= 1 AND stealth_enabled = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure AirDrop Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + AirDrop can allow malicious files to be downloaded from unknown sources. + Contacts Only limits may expose personal information to devices in the same area. + resolution: | + Ask your system administrator to deploy an MDM profile that disables AirDrop. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAirDrop + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirDrop' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirDrop' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure AirPlay Receiver Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + In macOS Monterey (12.0), Apple has added the capability to share content from + another Apple device to the screen of a host Mac. While there are many valuable uses + of this capability, such sharing on a standard Mac user workstation should be enabled + ad hoc as required rather than allowing a continuous sharing service. The feature can + be restricted by Apple ID or network and is configured to use by accepting the + connection on the Mac. Part of the concern is frequent connection requests may + function as a denial-of-service and access control limits may provide too much + information to an attacker. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAirPlayIncomingRequests + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirPlayIncomingRequests' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirPlayIncomingRequests' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Set Time and Date Automatically Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Ensure that the system is configured to set the date and time automatically from a network time server. Accurate time is critical for log correlation, certificate validation, and Kerberos authentication. + resolution: | + The administrator should configure this via MDM profile. + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is forceAutomaticDateAndTime. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceAutomaticDateAndTime' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceAutomaticDateAndTime' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure the Time Service Is Enabled + # platforms: macOS + platform: darwin + description: | + In macOS 10.14, Apple replace ntp with timed for time services, and is used to ensure correct time is kept. Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. + resolution: | + Ask your system administrator to deploy a script that will configure: + /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.timed.plist + query: | + SELECT 1 WHERE EXISTS(SELECT * FROM processes WHERE path = '/usr/libexec/timed'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth + +- name: CIS - Ensure DVD or CD Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + DVD or CD Sharing allows users to remotely access the system's optical drive. + Disabling DVD or CD Sharing minimizes the risk of an attacker using the optical drive as + a vector for attack and exposure of sensitive data. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set CD/DVD Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.ODSAgent' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Screen Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Screen Sharing allows a computer to connect to another computer on a network and + display the computer’s screen. While sharing the computer’s screen, the user can + control what happens on that computer, such as opening documents or applications, + opening, moving, or closing windows, and even shutting down the computer. + Disabling Screen Sharing mitigates the risk of remote connections being made without + the user of the console knowing that they are sharing the computer. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Screen Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.screensharing' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure File Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + File sharing from a user workstation creates additional risks by + increasing complexity and making security more difficult. Hardened + file servers should be used instead of workstations + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set File Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.smbd' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Printer Sharing is Disabled + # platforms: macOS + platform: darwin + description: | + By enabling Printer Sharing, the computer is set up as a + print server to accept print jobs from other computers. + Dedicated print servers or direct IP printing should be used instead. + Disabling Printer Sharing mitigates the risk of attackers + attempting to exploit the print server to gain access to the system. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Printer Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM file_lines WHERE + path = '/etc/cups/cupsd.conf' AND + line LIKE '%Allow @LOCAL%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Remote Login Is Disabled + # platforms: macOS + platform: darwin + description: | + Remote Login allows an interactive terminal session to a computer. + The SSH server built into macOS should not be enabled on a standard user computer, + particularly one that changes locations and IP addresses. + A standard user that runs local applications, including email, web browser, + and productivity tools, should not use the same device as a server + + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Login to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.openssh.sshd' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Remote Management is Disabled + # platforms: macOS + platform: darwin + description: | + Remote Management is the client portion of Apple Remote Desktop (ARD). + Remote Management can be used by remote administrators to view the current screen, + install software, report on, and generally manage client Macs. + Remote Management should only be enabled on trusted networks with strong + user controls present in a Directory system. + Mobile devices without strict controls are vulnerable to exploit and monitoring. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Management to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM processes WHERE + path = '/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Remote Apple Events is Disabled + # platforms: macOS + platform: darwin + description: | + Apple Events is a technology that allows one program to communicate with other programs. + Remote Apple Events allows a program on one computer to communicate with a program on a + different computer. Disabling Remote Apple Events mitigates the risk of an unauthorized + program gaining access to the system. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Apple Events to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.AEServer' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Internet Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Internet Sharing uses the open source natd process to share an internet connection with other + computers and devices on a local network. This allows the Mac to function as a router and share + the connection to other, possibly unauthorized, devices. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Internet Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM plist WHERE + path = '/Library/Preferences/SystemConfiguration/com.apple.nat.plist' AND + key = 'NAT' AND + subkey = 'Enabled' AND + value = '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Content Caching Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Starting with 10.13 (macOS High Sierra), Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints or greater bandwidth exist on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets, the effectiveness of this capability would be determined by how many Macs were on each subnet at the time new, large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity and bandwidth user endpoints should not store content and act as a cluster to provision data. + resolution: | + Graphical Method: + Perform the following steps to disable Content Caching: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Content Caching to disabled + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowContentCaching + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowContentCaching' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowContentCaching' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Bluetooth Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Bluetooth Sharing allows files to be exchanged with Bluetooth-enabled devices. + This setting only disables the receiving of files and requires both devices to + be paired through Bluetooth as well as accepted by the receiver. This setting + does not disable the ability to send files from the device to another paired + Bluetooth device. + Bluetooth pairing only requires an acceptance dialog on either device attempting + to pair. It does require the Bluetooth pane in System Settings to be open for + any macOS device to be discoverable. While it does give a verification code, it + does not require either device to enter the code, but just accept the dialog + box (on either device). At that point, the two devices are paired and files can + be shared through Bluetooth. To receive files through Bluetooth File Exchange + application, the user does have to accept the file(s) through a dialog box. + Users should only pair to known trusted Bluetooth devices. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Bluetooth Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/ByHost/com.apple.Bluetooth.%.plist' AND + key = 'PrefKeyServicesEnabled' AND + value = '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Media Sharing Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Starting with macOS 10.15, Apple has provided a control which permits a user to share + Apple downloaded content on all Apple devices that are signed in with the same Apple ID. + This allows users to share downloaded Movies, Music, or TV shows with other + controlled macOS, iOS and iPadOS devices, as well as photos with Apple TVs. + Disabling Media Sharing reduces the remote attack surface of the system + resolution: | + Profile Method: + Ask your administrator to deploy a profile that sets + homeSharingUIStatus, legacySharingUIStatus, and mediaSharingUIStatus to 0 + for com.apple.preferences.sharing.SharingPrefsExtension + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'homeSharingUIStatus' AND + value = '0' AND + username = '' + ) AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'legacySharingUIStatus' AND + value = '0' AND + username = '' + ) AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'mediaSharingUIStatus' AND + value = '0' AND + username = '' + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'homeSharingUIStatus' AND + value != '0' + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'legacySharingUIStatus' AND + value != '0' + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.preferences.sharing.SharingPrefsExtension' AND + name = 'mediaSharingUIStatus' AND + value != '0' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Backup Automatically is Enabled If Time Machine Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Backup solutions are only effective if the backups run on a regular basis. + The time to check for backups is before the hard drive fails or the computer goes missing. + In order to simplify the user experience so that backups are more likely to occur, + Time Machine should be on and set to Back Up Automatically whenever the target volume is available. + + FDA (Full Disk Access) is required to read the /Library/Preferences/com.apple.TimeMachine.plist + file that contains the Time Machine configuration and backup destinations. + resolution: | + Ask your system administrator to deploy an MDM profile that enables automatic backup if Time Machine is enabled. + The system administrator can do one of: + A. Disable Time Machine on the device. + B. Run the following command to enable automatic backup on Time Machine destinations: + /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true + query: | + SELECT 'no time machine backups' as output + FROM (SELECT COUNT(*) as c FROM time_machine_backups) t1 WHERE t1.c = 0 + UNION + SELECT 'time machine automatic backup set to true' as output + FROM plist WHERE path='/Library/Preferences/com.apple.TimeMachine.plist' + AND key='AutoBackup' AND (value = 1 OR value = 'true'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure Time Machine Volumes Are Encrypted If Time Machine Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Backup solutions are only effective if the backups run on a regular basis. + The time to check for backups is before the hard drive fails or the computer goes missing. + In order to simplify the user experience so that backups are more likely to occur, + Time Machine should be on and set to Back Up Automatically whenever the target volume is available. + + FDA (Full Disk Access) is required to read the /Library/Preferences/com.apple.TimeMachine.plist + file that contains the Time Machine configuration and backup destinations. + resolution: | + Graphical Method: + Perform the following steps to enable encryption on the Time Machine drive: + 1. Open `System Settings`. + 2. Select `General`. + 3. Select `Time Machine`. + 4. Select the unencrypted drive. + 5. Select `-` to forget that drive as a destination. + 6. Select `+` to add a different drive as the destination. + 7. Select `Set Up Disk...`. + 8. Set Encrypt Backup to enabled. + 9. Enter a password in the `New Password` and the same password in the `Re-enter Password` fields. + 10. A password hint is required, but it is recommended that you do not use any identifying information for the password + query: | + SELECT 'no time machine destinations configured' as output + FROM (SELECT COUNT(*) as c FROM time_machine_destinations) t1 WHERE t1.c = 0 + UNION + SELECT 'time machines destinations with encryption with automatic backup' as output + FROM (SELECT COUNT(*) as c FROM time_machine_destinations WHERE encryption <> 'Encrypted') t2 WHERE t2.c = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Show Wi-Fi status in Menu Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The Wi-Fi status in the menu bar indicates if the system's wireless internet capabilities are enabled. + If so, the system will scan for available wireless networks in order to connect. + Enabling "Show Wi-Fi status in menu bar" is a security awareness method that helps mitigate public area + wireless exploits by making the user aware of their wireless connectivity status. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Wi-Fi status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is `com.apple.controlcenter`. + 2. The key to include is `WiFi`. + 3. The key must be set to `18`. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='WiFi' AND + value = 18 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='WiFi' AND + value != 18 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Show Bluetooth Status in Menu Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Enabling "Show Bluetooth status in menu bar" is a security awareness method that + helps understand the current state of Bluetooth, including whether it is enabled, + discoverable, what paired devices exist, and what paired devices are currently active. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is `com.apple.controlcenter`. + 2. The key to include is `Bluetooth`. + 3. The key must be set to `18`. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='Bluetooth' AND + value = 18 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='Bluetooth' AND + value != 18 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Siri is disabled (MDM required) + # platforms: macOS + platform: darwin + description: | + With macOS 10.12 Sierra, Apple has introduced Siri from iOS to macOS. While + there are data spillage concerns with the use of data-gathering personal + assistant software, the risk here does not seem greater in sending queries to + Apple through Siri than in sending search terms in a browser to Google or + Microsoft. While it is possible that Siri will be used for local actions + rather than Internet searches, Siri could, in theory, tell Apple about + confidential Programs and Projects that should not be revealed. This appears + to be a usage edge case. + In cases where sensitive or protected data is processed and Siri could expose + that information through assisting a user in navigating their machine, it + should be disabled. Siri does need to phone home to Apple, so it should not + be available from air-gapped networks as part of its requirements. + Most of the use case data published has shown that Siri is a tremendous time + saver on iOS where multiple screens and menus need to be navigated through. + Information like sports scores, weather, movie times, and simple to-do items + on existing calendars can be easily found with Siri. None of the standard use + cases should be more risky than already approved activity. + Note: Apple has significantly improved the features of Siri, but also created + a way to purchase products and services using Siri which may be + unintentionally approved. The new Siri Remote application increases the risk. + For more information, read the Apple Siri privacy policy. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAssistant + 3. Set the key to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAssistant' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAssistant' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure Siri field TypeToSiriEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri TypeToSiriEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist TypeToSiriEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'TypeToSiriEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field TypeToSiriEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri TypeToSiriEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist TypeToSiriEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'TypeToSiriEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field StatusMenuVisible is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri StatusMenuVisible field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist StatusMenuVisible -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'StatusMenuVisible' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field StatusMenuVisible is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri StatusMenuVisible field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist StatusMenuVisible -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'StatusMenuVisible' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field VoiceTriggerUserEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri VoiceTriggerUserEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist VoiceTriggerUserEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'VoiceTriggerUserEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field VoiceTriggerUserEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri VoiceTriggerUserEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist VoiceTriggerUserEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'VoiceTriggerUserEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field LockscreenEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri LockscreenEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist LockscreenEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'LockscreenEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field LockscreenEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri LockscreenEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist LockscreenEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'LockscreenEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Enabled + # platforms: macOS + platform: darwin + description: Checks that Location Services option is enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables automatic updates of Apple apps. + Graphical method: + Perform the following steps to enable Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Verify Location Services is enabled + query: SELECT 1 FROM location_services where enabled=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Show Location Icon in Control Center when System Services Request Your Location' Is Enabled + # platforms: macOS + platform: darwin + description: This setting provides the user an understanding of the current status of Location Services and which applications are using it. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the "location services" icon in menu bar when System Services request your location. + Graphical method: + Perform the following steps to enable Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Select Details... + 5. Verify Show location icon in menu bar when System Services request your + location is set to your organization's parameters + query: SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.locationmenu.plist' AND key='ShowSystemServices' AND value=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Disabled to all applications (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. While Location Services may be very useful, it may not be desirable to allow all applications that can use Location Services to use your location for Internet queries in order to provide tailored content based on your current location. + Ensure applications that can use Location Services are authorized and provide that information where the application interacts with external systems. Apple offers feedback within System Preferences and may be enabled to supply information on the menu bar when Location Services are used. + Safari can deny access from websites or prompt for access. + Applications that support Location Services can be individually controlled in the Privacy tab in Security & Privacy under System Preferences. + Access should be evaluated to ensure that privacy controls are as expected. + This query verifies that location services is disabled for all apps. + resolution: | + Graphical Method: + Perform the following steps to disable unnecessary applications from accessing Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Set Location Services to disabled. + query: SELECT 1 FROM location_services WHERE enabled = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Enabled for a specific list of applications (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. While Location Services may be very useful, it may not be desirable to allow all applications that can use Location Services to use your location for Internet queries in order to provide tailored content based on your current location. + Ensure applications that can use Location Services are authorized and provide that information where the application interacts with external systems. Apple offers feedback within System Preferences and may be enabled to supply information on the menu bar when Location Services are used. + Safari can deny access from websites or prompt for access. + Applications that support Location Services can be individually controlled in the Privacy tab in Security & Privacy under System Preferences. + Access should be evaluated to ensure that privacy controls are as expected. + This query verifies that location services is enabled and a specific list of application can use it. + resolution: | + Graphical Method: + Perform the following steps to disable unnecessary applications from accessing Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Set any applications listed to your organization's requirements + 5. Select System Services + 6. Set any System Services listed to your organization's requirements + query: | + -------------------------------------------------------------------------------------------------------- + + -- Instructions for running and modifying this query: + -- Put the list of allowed applications in the designated area below. + -- To see what apps are currently allowed (and get the exact name format of the app name), use this query: + -- SELECT * FROM plist WHERE + -- path='/var/db/locationd/clients.plist' + -- AND subkey = "Authorized" + -- AND value = '1'; + -------------------------------------------------------------------------------------------------------- + + SELECT 1 WHERE + -- If location_services is not allowed at all, we are good. + EXISTS( + SELECT 1 FROM location_services WHERE enabled = 0 + ) + OR + -- If location_services is allowed, make sure allowed apps are approved. + NOT EXISTS( + SELECT 1 FROM plist WHERE + path='/var/db/locationd/clients.plist' + AND subkey = "Authorized" + AND value = '1' + AND NOT( + --------------------------------------------------------------------------------- + + -- Designated area to add applications allowed to use location-services + --------------------------------------------------------------------------------- + + -- Typical app name + key LIKE "%:com.apple.TV" + OR + -- Typical system service name + key LIKE "%com.apple.locationd.bundle-/System/Library/PrivateFrameworks/CoreParsec.framework" + OR + key LIKE "%:com.apple.locationd.bundle-/System/Library/LocationBundles/DoNotDisturb.bundle" + --------------------------------------------------------------------------------- + + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Limit Ad Tracking Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Ensure Limit Ad Tracking Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables apple personalized advertising. + Graphical method: + Perform the following steps to ensure Limit Ad Tracking Is Enabled: + 1. Open Privacy & Security + 2. Select Apple Advertising + 3. Verify that Personalized Ads is not enabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowApplePersonalizedAdvertising' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowApplePersonalizedAdvertising' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure an Administrator Password Is Required to Access System-Wide Preferences (Fleetd required) + # platforms: macOS + platform: darwin + description: Checks that an Administrator Password Is Required to Access System-Wide Preferences + resolution: | + Graphical method: + Perform the following steps to ensure an administrator password is required to access system-wide preferences: + 1. Open System Settings + 2. Open Privacy & Security + 3. Select Advanced + 4. Set Require an administrator password to access system-wide settings to enabled + query: SELECT 1 FROM authdb WHERE right_name = 'system.preferences' AND json_extract(json_result, '$.shared') == 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Screen Saver Corners Are Secure (FDA Required) + # platforms: macOS + platform: darwin + description: | + Setting a hot corner to disable the screen saver poses a potential security risk since an + unauthorized person could use this to bypass the login screen and gain access to the system. + + FDA (Full Disk Access) is required to read the configuration of all the users in the device + ('/Users/*/Library/Preferences/com.apple.dock.plist') + resolution: | + Ask your system administrator to deploy a script that will configure + `wvous-tl-corner`, `wvous-bl-corner`, `wvous-tr-corner`, and `wvous-br-corner` in + domain `com.apple.dock` to a value that is not 6 (for all users of the device). + + Graphical Method: + Perform the following steps to ensure that a Hot Corner is not set to Disable Screen Saver: + 1. Open System Settings + 2. Select Desktop & Dock + 3. Select`Hot Corners...` + 4. Verify that `Disable Screen Saver` is not set to any of the corners. + query: | + SELECT 1 WHERE NOT EXISTS( + SELECT 1 FROM plist + WHERE path LIKE '/Users/%/Library/Preferences/com.apple.dock.plist' AND ( + key = 'wvous-br-corner' OR + key = 'wvous-bl-corner' OR + key = 'wvous-tr-corner' OR + key = 'wvous-tl-corner' + ) AND value = 6); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure Universal Control is enabled (Based on organization's policy) (MDM Required) + # platforms: macOS + platform: darwin + description: | + Universal Control is an Apple feature that allows Mac users to control multiple other Macs and iPads with the same keyboard, mouse, and trackpad using the same Apple ID. The technology relies on already available iCloud services, particularly Handoff. + Universal Control simplifies the use of iCloud connectivity of multiple computers using the same Apple ID. This may simplify data transfer from organizationally-managed and personal devices. The use of the same iCloud account and Handoff is the underlying concern that should be evaluated. The use of the same keyboard or mouse across multiple devices does not by itself decrease organizational security. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is com.apple.universalcontrol. + 2. The key to include is 'Disable'. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Universal Control is disabled (Based on organization's policy) (MDM Required) + # platforms: macOS + platform: darwin + description: | + Universal Control is an Apple feature that allows Mac users to control multiple other Macs and iPads with the same keyboard, mouse, and trackpad using the same Apple ID. The technology relies on already available iCloud services, particularly Handoff. + Universal Control simplifies the use of iCloud connectivity of multiple computers using the same Apple ID. This may simplify data transfer from organizationally-managed and personal devices. The use of the same iCloud account and Handoff is the underlying concern that should be evaluated. The use of the same keyboard or mouse across multiple devices does not by itself decrease organizational security. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Create or edit a configuration profile with the following information: + 1. The `PayloadType` string is com.apple.universalcontrol. + 2. The key to include is 'Disable'. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Power Nap Is Disabled for Intel Macs (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Power Nap allows the system to stay in low power mode, especially while on battery power, and periodically + connect to previously known networks with stored credentials for user applications to phone home and get updates. + This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted + based on the SSID without user input. + Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following command to turn off + Power Nap on the device: + /usr/bin/sudo /usr/bin/pmset -a powernap 0 + query: | + SELECT 1 FROM (SELECT + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.AC Power:'), + '$.powernap' + ), '') AS powernap_ac, + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.Battery Power:'), + '$.powernap' + ), '') AS powernap_battery + FROM pmset WHERE getting = 'custom' AND powernap_battery != '1' AND powernap_ac != '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure sleep and display sleep is enabled on Apple Silicon devices (Fleetd required) + # platforms: macOS + platform: darwin + description: | + MacBooks should be set so that the sleep is 15 minutes or less and the + display should sleep at 10 minutes or less. This setting should allow laptop + users in most cases to stay within physically secured areas while going to a + conference room, auditorium, or other internal location without having to + unlock the encryption. When the user goes home at night, the laptop will + auto-sleep after 15 minutes and to log back into the system when it resumes. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following + commands to set the sleep time and display sleep: + /usr/bin/sudo /usr/bin/pmset -a sleep 15 + /usr/bin/sudo /usr/bin/pmset -a displaysleep 10 + query: | + SELECT 1 AS result + WHERE + -- Pass if not Apple Silicon + NOT EXISTS ( + SELECT 1 FROM system_info WHERE cpu_type LIKE 'arm64%' + ) + OR + -- For Apple Silicon, check sleep settings (Battery Power if available, otherwise AC Power) + EXISTS ( + SELECT 1 + FROM ( + SELECT + CASE + WHEN JSON_EXTRACT(json_result, '$.Battery Power:') IS NOT NULL + THEN JSON_EXTRACT(json_result, '$.Battery Power:') + ELSE JSON_EXTRACT(json_result, '$.AC Power:') + END AS power_settings + FROM pmset + WHERE getting = 'custom' + ) + WHERE + -- Require sleep setting to be 15 minutes or less + CAST(JSON_EXTRACT(power_settings, '$.sleep') AS INTEGER) <= 15 + AND + -- Require display sleep to be 10 minutes or less AND less than or equal to sleep value + CAST(JSON_EXTRACT(power_settings, '$.displaysleep') AS INTEGER) <= 10 + AND + CAST(JSON_EXTRACT(power_settings, '$.displaysleep') AS INTEGER) <= CAST(JSON_EXTRACT(power_settings, '$.sleep') AS INTEGER) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: getvictor + +- name: CIS - Ensure Wake for Network Access Is Disabled (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Wake for Network Access allows the computer to take action when the user is not present and the computer + is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. + + Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following command to turn off + Wake on on the device: + /usr/bin/sudo /usr/bin/pmset -a womp 0 + query: | + SELECT 1 FROM (SELECT + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.AC Power:'), + '$.womp' + ), '') AS womp_ac, + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.Battery Power:'), + '$.womp' + ), '') AS womp_battery + FROM pmset WHERE getting = 'custom' AND womp_battery != '1' AND womp_ac != '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure the OS is not Active When Resuming from Sleep (Fleetd, FDA Required) + # platforms: macOS + platform: darwin + description: | + In order to use a computer with Full Disk Encryption (FDE), macOS must keep encryption keys in memory to allow + the use of the disk that has been FileVault protected. When the system is not in use, the volume is protected + through encryption. When the system is sleeping and available to quickly resume, the encryption keys remain in memory. + If an unauthorized party has possession of the computer and the computer is only slept, there are known attack vectors + that can be attempted against the RAM that has the encryption keys or the running operating system protected + by a login screen. + + MacBooks should be set so that the `standbydelay` is 15 minutes (900 seconds) or less. + Mac systems should be set to hibernate after sleeping for a risk-acceptable time period. + Organizations may still decide to use hibernate after sleeping if there is a security need + (ex. international travel), but it can cause kernel panics in Apple Silicon Macs. + resolution: | + Ask your system administrator to deploy the following script to Macbook devices: + if [[ $(uname -m) == 'arm64' ]]; then + # Apple silicon + /usr/bin/sudo /usr/bin/pmset -a standby 900 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + else + # Intel + /usr/bin/sudo /usr/bin/pmset -a standbydelaylow 900 + /usr/bin/sudo /usr/bin/pmset -a standbydelayhigh 900 + /usr/bin/sudo /usr/bin/pmset -a highstandbythreshold 90 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 + fi + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE + regex_match(hardware_model, '^Mac[0-9,]+$', 0) != '' OR regex_match(hardware_model, '^MacBook', 0) != 0 + ) + AND EXISTS( + SELECT JSON_EXTRACT(system_wide_power_settings, '$.DestroyFVKeyOnStandby') AS destroy_fv_key_on_standby + FROM ( + SELECT JSON_EXTRACT(json_result, '$.System-wide power settings:') AS system_wide_power_settings FROM pmset + ) + WHERE destroy_fv_key_on_standby = '1' + ) + AND EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE cpu_type = 'x86_64h' OR cpu_type = 'x86_64' + ) AND EXISTS( + SELECT + CAST(JSON_EXTRACT(battery, '$.standbydelaylow') AS INTEGER) AS standbydelaylow, + CAST(JSON_EXTRACT(battery, '$.standbydelayhigh') AS INTEGER) AS standbydelayhigh, + CAST(JSON_EXTRACT(battery, '$.highstandbythreshold') AS INTEGER) AS highstandbythreshold, + CAST(JSON_EXTRACT(battery, '$.hibernatemode') AS INTEGER) AS hibernatemode + FROM ( + SELECT JSON_EXTRACT(json_result, '$.Battery Power:') as battery FROM pmset WHERE getting = 'custom' + ) + WHERE standbydelaylow <= 900 AND standbydelayhigh <= 900 AND highstandbythreshold >= 90 AND hibernatemode = 25 + ) + ) OR EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE cpu_type LIKE 'arm64%' + ) AND EXISTS ( + SELECT + CAST(JSON_EXTRACT(battery, '$.standby') AS INTEGER) AS standby + FROM ( + SELECT JSON_EXTRACT(json_result, '$.Battery Power:') AS battery FROM pmset WHERE getting = 'custom' + ) + WHERE standby <= 900 + ) + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled. + Graphical method: + Perform the following steps to ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Require password after screensaver begins or display is turned + off is set with After 0 seconds or After 5 seconds + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPassword' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPasswordDelay' AND + value <= 5 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPassword' AND + (value != 1 AND value != 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPasswordDelay' AND + value > 5 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Gatekeeper Is Enabled + # platforms: macOS + platform: darwin + description: | + Checks that Gatekeeper Is Enabled. Gatekeeper is Apple’s application that utilizes allowlisting to restrict downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization. In an update to Gatekeeper in macOS 13 Ventura, Gatekeeper checks every application on every launch, not just quarantined apps. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Gatekeeper Is Enabled + Graphical method: + Perform the following steps to ensure Gatekeeper Is Enabled: + 1. Open System Settings + 2. Select Privacy & Security + 3. Verify that 'Allow apps downloaded from' is set to' App Store and identified developers' + query: SELECT 1 FROM gatekeeper WHERE assessments_enabled = 1 AND dev_id_enabled = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Sending Diagnostic and Usage Data to Apple Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Sending Diagnostic and Usage Data to Apple Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Sending Diagnostic and Usage Data to Apple. + Graphical method: + Perform the following steps to ensure Sending Diagnostic and Usage Data to Apple Is Disabled: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Analytics & Improvements + 4. Verify that Share Mac Analytics is not enabled + 5. Verify that Share with App Developers is not enabled + 6. Verify that Improve Siri & Dictation is not enabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SubmitDiagInfo' AND + name='AutoSubmit' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowDiagnosticSubmission' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Siri Data Sharing Opt-In Status' AND + value = 2 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SubmitDiagInfo' AND + name='Disable' AND + (value != 0 AND value != 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Disable' AND + (value != 0 AND value != 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Disable' AND + value != 2 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: A locking screen saver is one of the standard security controls to limit access to a computer and the current user's session when the computer is temporarily unused or unattended. In macOS, the screen saver starts after a value is selected in the drop- down menu. 20 minutes or less is an acceptable value. Any value can be selected through the command line or script, but a number that is not reflected in the GUI can be problematic. 20 minutes is the default for new accounts. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver to be Enabled. + Graphical method: + Perform the following steps to ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Start Screen Saver when inactive is set for 20 minutes or less (≤1200 seconds) + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='idleTime' AND + CAST(value AS INT) <= 1200 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='idleTime' AND + CAST(value AS INT) > 1200 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure a Custom Message for the Login Screen Is Enabled + # platforms: macOS + platform: darwin + description: An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored + resolution: | + Graphical method: + Perform the following steps to ensure a Custom Message for the Login Screen Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify Show message when locked is enabled + 4. Select Set + 5. Verify that the message displayed is configured to your organization's required text + query: SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.loginwindow.plist' AND key='LoginwindowText' AND value != ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure FileVault Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that FileVault Is Enabled. FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. This policy checks that filevault is enabled on the device and that the user is not allowed to disable it. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables FileVault and disables turning it off. + Graphical method: + Perform the following steps to ensure FileVault Is Enabled: + 1. Open System Settings + 2. Select Privacy & Privacy + 3. Verify that FileVault states FileVault is turned on for the disk "" + 4. Select Privacy & Security + 5. Select Profile + 6. Verify that an installed profile has FileVault Can't Disable set to True + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value != 1 AND value != 'true') + ) + AND EXISTS ( + SELECT 1 FROM disk_encryption WHERE + user_uuid IS NOT "" AND + filevault_status = 'on' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Login Window Displays as Name and Password Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks Login Window Displays as Name and Password Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Login Window Displays as Name and Password Is Enabled. + Graphical method: + Perform the following steps to ensure Login Window Displays as Name and Password Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Login window shows is set to Name and Password + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='SHOWFULLNAME' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='SHOWFULLNAME' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Show Password Hints Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks Show Password Hints Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensures Show Password Hints Is Disabled. + Graphical method: + Perform the following steps to ensure Show Password Hints Is Disabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Show password hints is disabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='RetriesUntilHint' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='RetriesUntilHint' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Users' Accounts Do Not Have a Password Hint (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Password hints help the user recall their passwords for various systems and/or accounts. In most cases, password hints are simple and closely related to the user's password. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables apple personalized advertising. + Graphical method: + Perform the following steps to ensure Users' Accounts Do Not Have a Password Hint: + 1. Open System Settings + 2. Select Touch ID & Passwords (or Login Password on non-Touch ID Macs) + 3. Select Change... + 4. Change the password and ensure that no text is entered in the Password hint box + query: SELECT 1 FROM user_login_settings WHERE password_hint_enabled = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Guest Account Is Disabled + # platforms: macOS + platform: darwin + description: Checks that Guest Account Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Guest Account. + Graphical method: + Perform the following steps to ensure Guest Account Is Disabled: + 1. Open System Settings + 2. Select Users & Groups + 3. Select the i next to the Guest User + 4. Verify that Allow guests to log in to this computer is disable + query: | + SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.loginwindow.plist' AND key='GuestEnabled' AND value = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Guest Access to Shared Folders Is Disabled + # platforms: macOS + platform: darwin + description: Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will disable guest users from access to shared folders: + /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off + Graphical Method: + Perform the following steps to no longer allow guest user access to shared folders: + 1. Open System Settings + 2. Select Users & Groups + 3. Select the i next to the Guest User + 4. Set Allow guests to connect to shared folders to disabled + query: SELECT 1 from plist where path = '/Library/Preferences/SystemConfiguration/com.apple.smb.server.plist' AND key = 'AllowGuestAccess' AND value = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Automatic Login Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Automatic Login Is Disabled + Graphical method: + Perform the following steps to ensure Automatic Login Is Disabled: + 1. Open System Settings + 2. Select Users & Groups + 3. Set Automatic login in as... to Off + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is com.apple.loginwindow + 2. The key to include is com.apple.login.mcx.DisableAutoLoginClient + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.login.mcx.DisableAutoLoginClient' AND + name='Disable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.login.mcx.DisableAutoLoginClient' AND + name='Disable' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure On-Device Dictation Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + In macOS 14.0 Sonoma, Apple released the ability to limit dictation to staying on-device and not sending data to the Siri severs. The use of dictation is likely to include editing + documents with confidential information. While Apple does have controls to obfuscate voice data that exists on their servers it is recommended that Dictation collected information does not leave the local Mac. + resolution: "Ask your system administrator to deploy an MDM profile that enables On-Device Dictation." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceOnDeviceOnlyDictation' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceOnDeviceOnlyDictation' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-2-18.1, NEEDS_TESTING + # contributors: DefensiveDepth + +- name: CIS - Ensure Security Auditing Is Enabled + # platforms: macOS + platform: darwin + description: | + macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log. Apple has deprecated auditd as of macOS 11.0 Big Sur. In macOS 14.0 Sonoma it is no longer enabled by default.. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will enable security auditing and create the audit_control file:: + /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist + /usr/bin/sudo /bin/cp /etc/security/audit_control.example /etc/security/audit_control + query: | + SELECT 1 WHERE EXISTS ( + SELECT + l.program, l.label, l.program_arguments, + p.path, p.name , p.cmdline + FROM + launchd AS l + INNER JOIN processes AS p + ON (l.program = p.path) + WHERE + (l.label = "com.apple.auditd") + AND + (l.program_arguments = p.cmdline) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Flags For User-Attributable Events Are Configured Per Local Organizational Requirements + # platforms: macOS + platform: darwin + description: | + Auditing is the capture and maintenance of information about security-related events. Auditable events often depend on differing organizational requirements. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Bonjour advertising service. + Terminal Method: + Perform the following to set the required Security Auditing Flags: + Edit the /etc/security/audit_control file and add -fm, ad, -ex, aa, -fr, lo, and -fw to flags. You can also substitute -all for -fm, -ex, -fr, and -fw. + query: | + SELECT 1 WHERE EXISTS ( + SELECT line + FROM file_lines WHERE path = '/etc/security/audit_control' + AND + ( + ( + line LIKE 'flags:%' + AND + line LIKE "%-fm%" + AND + line LIKE "%ad%" + AND + line LIKE "%-ex%" + AND + line LIKE "%aa%" + AND + line LIKE "%-fr%" + AND + line LIKE "%lo%" + AND + line LIKE "%-fw%" + ) + OR + ( + line LIKE 'flags:%' + AND + line LIKE "%-all%" + AND + line LIKE "%ad%" + AND + line LIKE "%aa%" + AND + line LIKE "%lo%" + ) + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure install.log Is Retained for 365 or More Days and No Maximum Size + # platforms: macOS + platform: darwin + description: | + macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. + resolution: | + Automated method: + Ask your system administrator to deploy a script which will ensure proper retention for install.log. + Terminal Method: + Perform the following to ensure that install logs are retained for at least 365 days: + Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line. + query: | + SELECT 1 WHERE + EXISTS ( SELECT line, + CAST ( regex_match(line, 'ttl=(\d+)', 1) AS INTEGER ) AS val + FROM file_lines + WHERE path = '/etc/asl/com.apple.install' + AND val >=365 ) + AND + NOT EXISTS ( SELECT line + FROM file_lines + WHERE path = '/etc/asl/com.apple.install' + AND line LIKE "%all_max=%" ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Retention Is Enabled + # platforms: macOS + platform: darwin + description: | + The macOS audit capability contains important information to investigate security or operational issues. This resource is only completely useful if it is retained long enough to allow technical staff to find the root cause of anomalies in the records. + Retention can be set to respect both size and longevity. To retain as much as possible under a certain size, the recommendation is to use the following: + expire-after:60d OR 5G + This recommendation is based on minimum storage for review and investigation. When a third party tool is in use to allow remote logging or the store and forwarding of logs, this local storage requirement is not required. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will ensure proper Security Auditing Retention: + cp /etc/security/audit_control ./tmp.txt; origExpire=$(cat ./tmp.txt | grep expire-after); sed "s/${origExpire}/expire-after:60d OR 5G/" ./tmp.txt > /etc/security/audit_control; rm ./tmp.txt; + query: | + SELECT 1 WHERE EXISTS ( + SELECT line, + CAST(regex_match(line, 'expire-after:(\d+)d OR (\d+)G', 1) AS INTEGER) AS days, + CAST(regex_match(line, 'expire-after:(\d+)d OR (\d+)G', 2) AS INTEGER) AS size + FROM file_lines + WHERE path = '/etc/security/audit_control' + AND days >=60 + AND size >=5 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Access to Audit Records Is Controlled + # platforms: macOS + platform: darwin + description: | + The audit system on macOS writes important operational and security information that can be both useful for an attacker and a place for an attacker to attempt to obfuscate unwanted changes that were recorded. As part of defense-in-depth, the /etc/security/audit_control configuration and the files in /var/audit should be owned only by root with group wheel with read-only rights and no other access allowed. macOS ACLs should not be used for these files. + + The default folder for storing logs is /var/audit, but it can be changed. This recommendation will ensure that any target directory has appropriate access control in place even if the target directory is not the default of /var/audit. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will Ensure Access to Audit Records Is Controlled: + /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/audit_control + /usr/bin/sudo /bin/chmod -R og-rw /etc/security/audit_control + /usr/bin/sudo /usr/sbin/chown -R root:wheel $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') + /usr/bin/sudo /bin/chmod -R og-rw $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') + query: | + SELECT 1 WHERE + -- For all files in /var/audit: + -- UID, GID should be owned by root. + -- MODE should be 0440 ("-r--r-----") + NOT EXISTS ( SELECT 1 FROM file WHERE path LIKE '/var/audit/%' AND (uid !=0 OR gid !=0 OR mode != "0440") ) + AND + NOT EXISTS ( select 1 from file + where path LIKE + ( + SELECT dir FROM + ( + -- The path we are looking for is written inside /etc/security/audit_control in a line that starts with "dir:" + -- Looking immediately at this and REGEX-ing the path after it (and concatenating "/%") + -- Same explanation for queries below. + select line, CONCAT(regex_match(line, '^dir:(.+)',1 ), '/%') AS dir + FROM file_lines + WHERE path = '/etc/security/audit_control' + AND line LIKE "dir:%" + ) + ) + AND ( uid !=0 OR gid !=0 OR mode != "0440" ) + ) + AND + -- For /etc/security/audit_control the MODE should be 0400 ("-r--------") + NOT EXISTS ( select 1 from file where path = "/etc/security/audit_control" AND mode != "0400" ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Firewall Logging Is Enabled and Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + The socketfilter Firewall is what is used when the Firewall is turned on in the Security & Privacy Preference Pane. In order to appropriately monitor what access is allowed and denied, logging must be enabled. The logging level must be set to "detailed" to be useful in monitoring connection attempts that the firewall detects. Throttled login is not sufficient for examine Firewall connection attempts. + resolution: | + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is com.apple.security.firewall + 2. The key to include is EnableFirewall + 3. The key must be set to + 4. The key to also include is EnableLogging + 5. The key must be set to + 6. The key to also include is LoggingOption + 7. The key must be set to detail + query: | + SELECT 1 WHERE + ( + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='EnableLogging' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='LoggingOption' AND + value = "detail" AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='EnableLogging' AND + (value != 1 AND value != 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.security.firewall' AND + name='LoggingOption' AND + value != "detail" + ) + ) + OR + ( + EXISTS ( + SELECT 1 FROM plist WHERE + path='/Library/Preferences/com.apple.alf.plist' AND + key='loggingenabled' AND + value = 1 + ) + AND EXISTS ( + SELECT 1 FROM plist WHERE + path='/Library/Preferences/com.apple.alf.plist' AND + key='loggingoption' AND + value = 2 + ) + ); + + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Bonjour Advertising Services Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. + DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Bonjour advertising service. + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is `com.apple.mDNSResponder`. + 2. The key to include is `NoMulticastAdvertisements`. + 3. The key must be set to ``. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mDNSResponder' AND + name='NoMulticastAdvertisements' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mDNSResponder' AND + name='NoMulticastAdvertisements' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure HTTP Server Is Disabled + # platforms: macOS + platform: darwin + description: | + Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. + Apache is still part of the Operating System and can be easily turned on to share files and provide remote connectivity + to an end-user computer. Web serving should not be done from a user desktop. Open ports make it easier to exploit the computer. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will disable the Apache service: + /usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist + query: SELECT 1 WHERE NOT EXISTS(SELECT * FROM processes WHERE path = '/usr/sbin/httpd'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure NFS Server Is Disabled + # platforms: macOS + platform: darwin + description: | + macOS can act as an NFS fileserver. NFS sharing could be enabled to allow + someone on another computer to mount shares and gain access to information + from the user's computer. File sharing from a user endpoint has long been + considered questionable, and Apple has removed that capability from the GUI. + NFSD is still part of the Operating System and can be easily turned on to + export shares and provide remote connectivity to an end-user computer. The + etc/exports file contains the list of NFS shared directories. If the file + exists, it is likely that NFS sharing has been enabled in the past or may + be available periodically. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will + disable the NFS service and its directory listing: + /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd + /usr/bin/sudo /bin/rm -rf /etc/exports + Note: Removing /etc/exports also stops the NFS service if it was running. + query: | + SELECT 1 WHERE + NOT EXISTS(SELECT 1 FROM processes WHERE path = '/sbin/nfsd') + AND + NOT EXISTS(SELECT 1 FROM file WHERE path = '/etc/exports'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod, getvictor + +- name: CIS - Ensure Home Folders Are Secure + # platforms: macOS + platform: darwin + description: | + By default, macOS allows all valid users into the top level of every other user's home folder and restricts access to the Apple default folders within. Another user on the same system can see you have a "Documents" folder but cannot see inside it. This configuration does work for personal file sharing but can expose user files to standard accounts on the system. + The best parallel for Enterprise environments is that everyone who has a Dropbox account can see everything that is at the top level but can't see your pictures. Similarly with macOS, users can see into every new Directory that is created because of the default permissions. + Home folders should be restricted to access only by the user. Sharing should be used on dedicated servers or cloud instances that are managing access controls. Some environments may encounter problems if execute rights are removed as well as read and write. Either no access or execute only for group or others is acceptable. + resolution: | + Automated method: + Ask your system administrator to deploy a script that will go over all users and set the mode for all of them either like this: + /usr/bin/sudo /bin/chmod -R og-rwx /Users/ + Or like this if there is a need for excutable access: + /usr/bin/sudo /bin/chmod -R og-rw /Users/ + query: SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM file WHERE ( + path LIKE '/Users/%' + AND path != '/Users/Shared/' + AND mode != "0700" + AND mode !="0701" + AND mode !="0710" + AND mode !="0711" + )); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure System Integrity Protection Status (SIP) Is Enabled + # platforms: macOS + platform: darwin + description: | + System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID. + resolution: | + Terminal Method: + Perform the following steps to enable System Integrity Protection: + 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) + 2. Select Utilities + 3. Select Terminal + 4. Run the following command: + /usr/bin/sudo /usr/bin/csrutil enable + query: SELECT 1 FROM sip_config WHERE config_flag="sip" and enabled=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Apple Mobile File Integrity (AMFI) Is Enabled (fleetd required) + # platforms: macOS + platform: darwin + description: | + Apple Mobile File Integrity (AMFI) was first released in macOS 10.12. The daemon and service block attempts to run unsigned code. AMFI uses launchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation. + Note: AMFI cannot be disabled with SIP enabled, but a change attempt can be made that will appear successful, and report incorrectly as successful. If the AMFI audit fails, and the SIP audit passes, this is still an issue the admin should research. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will Ensure Apple Mobile File Integrity (AMFI) Is Enabled: + /usr/bin/sudo /usr/sbin/nvram boot-args="" + query: SELECT 1 FROM nvram_info WHERE amfi_enabled="1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Sealed System Volume (SSV) Is Enabled (fleetd required) + # platforms: macOS + platform: darwin + description: | + Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. + During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. + The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. + During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree. + resolution: | + If SSV has been disabled, assume that the operating system has been compromised. Back up any files, and do a clean install to a known good Operating System. + query: SELECT 1 FROM csrutil_info WHERE ssv_enabled="1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Appropriate Permissions Are Enabled for System Wide Applications + # platforms: macOS + platform: darwin + description: | + Applications in the System Applications Directory (/Applications) should be world- executable since that is their reason to be on the system. They should not be world- writable and allow any process or user to alter them for other processes or users to then execute modified versions. + resolution: | + Ask your system administrator to deploy a script that will configure all *.app under /Applications folders to have no write permissions for 'others'. + $ /usr/bin/sudo IFS=$'\n' + for apps in $( /usr/bin/find /Applications -iname "*\.app" -type d -perm -2 ); + do + /bin/chmod -R o-w "$apps" + done + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT apps.path FROM apps + LEFT JOIN file on file.path = apps.path + WHERE apps.path LIKE '/Applications/%' AND + -- file.mode's last character are the permissions for 'other', + -- bitwise && with '0x2' selects the write permission, + -- which we do not want here. + CAST(SUBSTRING(file.mode, -1) AS INTEGER) & 0x2 != 0 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure No World Writable Files Exist in the System Folder + # platforms: macOS + platform: darwin + description: | + Software sometimes insists on being installed in the /System/Volumes/Data/System Directory and has inappropriate world-writable permissions. Macs with writable files in System should be investigated forensically. A file with open writable permissions is a sign of at best a rogue application. It could also be a sign of a computer compromise and a persistent presence on the system. + resolution: | + Ask your system administrator to deploy a script that will ensure folders are not world-writable in the /System folder. + /usr/bin/sudo IFS=$'\n' + for sysPermissions in $( /usr/bin/find /System/Volumes/Data/System -type d -perm -2 | /usr/bin/grep -vE "Drop Box|locks" ); + do + /bin/chmod -R o-w "$sysPermissions" + done + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM find_cmd WHERE + directory = '/System/Volumes/Data/System' + AND type = 'd' + AND perm = '-2' + AND path NOT LIKE '%Drop Box%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure No World Writable Folders Exist in the Library Folder (Fleetd required) + # platforms: macOS + platform: darwin + description: | + Software sometimes insists on being installed in the + /System/Volumes/Data/Library directory and has inappropriate world-writable + permissions. This software could be compromised with the folder(s) being + world-writable by unauthorized actions. + Folders in /System/Volumes/Data/Library should not be world-writable. The + audit check excludes folders where the sticky bit is set by Apple. These + folders are required by the operating system to run and should not be + modified. Some security vendors use a world-writable folder for their + security extension tool. This will be considered compliant due to the tools + themselves not allowing a user to write to their folders. This is against + the standard practice on POSIX systems. It is considered compliant here + because of additional security vendor controls that are controlled through + industry standard mitigations. + resolution: | + Ask your system administrator to deploy a script that will ensure folders + are not world-writable in the /Library folder. + /usr/bin/sudo IFS=$'\n' + for libPermissions in $(/usr/bin/find /Library -type d -perm -002 ! -perm -1000 ! -xattrname com.apple.rootless 2>/dev/null); do + /bin/chmod -R o-w "$libPermissions" + done + Note: Applications that are not following standard practices, and have + world-writable files in /System/Volumes/Data/Library may not launch or + operate correctly after the remediation has been run. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM file f + WHERE + f.path LIKE '/Library/%' + AND f.type = 'directory' + AND (CAST(SUBSTR(f.mode,-1) AS INTEGER) & 2) = 2 + AND NOT ((CAST(f.mode AS INTEGER) & 01000) = 01000) + AND NOT EXISTS ( + SELECT 1 FROM extended_attributes ea + WHERE ea.path = f.path + AND ea.key = 'com.apple.rootless' + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: getvictor + +- name: CIS - Ensure Password Account Lockout Threshold Is Configured (Fleetd required) + # platforms: macOS + platform: darwin + description: | + The account lockout threshold specifies the amount of times a user can enter an incorrect password before a lockout will occur. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Password Account Lockout Threshold. + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is maxFailedAttempts + 3. The key must be set to + query: SELECT 1 FROM pwd_policy where max_failed_attempts <= 5; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Password Minimum Length Is Configured + # platforms: macOS + platform: darwin + description: | + A minimum password length is the fewest number of characters a password can contain to meet a system's requirements. Ensure that a minimum of a 15-character password is part of the password policy on the computer. Where the confidentiality of encrypted information in FileVault is more of a concern, requiring a longer password or passphrase may be sufficient rather than imposing additional complexity requirements that may be self-defeating. + resolution: | + Automated method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is minLength + 3. The key must be set to + query: | + SELECT 1 + FROM ( + SELECT cast(lengthtxt as integer(2)) minlength + FROM ( + SELECT SUBSTRING(length, 1, 2) AS lengthtxt + FROM ( + SELECT policy_description, policy_identifier, split(policy_content, '{', 1) AS length + FROM password_policy + WHERE policy_identifier LIKE '%minLength')) + WHERE minlength >= 15); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Alphabetic Characters AND Numeric Characters Is Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + CIS - 5.2.3 - Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that an Alphabetic character is part of the password policy on the computer. + CIS - 5.2.4 - Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that a number or numeric value is part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy an MDM profile that ensures Complex Password Must Contain Alphabetic Characters + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='requireAlphanumeric' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='requireAlphanumeric' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Special Character Is Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. Ensure that a special character is part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy an MDM profile that ensures Complex Password Must Contain Special Characters + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='minComplexChars' AND + value >= 1 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='minComplexChars' AND + value < 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured (Fleetd required) + # platforms: macOS + platform: darwin + description: | + Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that both uppercase and lowercase letters are part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy the following script: + /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase==1>" + query: SELECT 1 FROM pwd_policy where min_mixed_case_characters >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Password Age Is Configured (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users should reset passwords periodically. This control uses 365 days as the acceptable value. Some organizations may be more or less restrictive. This control mainly exists to mitigate against password reuse of the macOS account password in other realms that may be more prone to compromise. Attackers take advantage of exposed information to attack other accounts. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Guest Account. + Profile Method: + Create or edit a configuration profile with the following information: + 1. The Payload Type string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is maxPINAgeInDays + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS(SELECT 1 FROM pwd_policy WHERE expires_every_n_days <= 365) + OR + EXISTS(SELECT 1 FROM pwd_policy WHERE days_to_expiration <= 365); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure password history is set to at least 24 (MDM required) + # platforms: macOS + platform: darwin + description: | + Over time, passwords can be captured by third parties through mistakes, + phishing attacks, third-party breaches, or merely brute-force attacks. To + reduce the risk of exposure and to decrease the incentives of password reuse + (passwords that are not forced to be changed periodically generally are not + ever changed), users must reset passwords periodically. This control ensures + that previous passwords are not reused immediately by keeping a history of + previous password hashes. Ensure that password history checks are part of + the password policy on the computer. This control checks whether a new + password is different than the previous 24. The latest NIST guidance based + on exploit research referenced in this section details how one of the + greatest risks is password exposure rather than password cracking. Passwords + should be changed to a new unique value whenever a password might have been + exposed to anyone other than the account holder. Attackers have maintained + persistent control based on predictable password change patterns and + substantially different patterns should be used in case of a leak. + resolution: | + Profile method: + Ask your administrator to deploy a profile with the following configuration: + 1. The Payload Type string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is pinHistory + 3. The key must be set to + query: SELECT 1 FROM pwd_policy WHERE history_depth >= 24; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure all user storage APFS volumes are encrypted (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Apple developed a new file system which was first made available in 10.12 and then became the + default in 10.13. The file system is optimized for Flash and Solid-State storage and encryption. + https://en.wikipedia.org/wiki/Apple_File_System macOS computers generally have several volumes + created as part of APFS formatting, including Preboot, Recovery and Virtual Memory (VM), as well + as traditional user disks. + All APFS volumes that do not have specific roles and do not require encryption should be + encrypted. "Role" disks include Preboot, Recovery and VM. User disks are labelled with "(No + specific role)" by default. + resolution: | + Manual method: + Use Disk Utility to erase a user disk and format as APFS (Encrypted). + Note: APFS Encrypted disks will be described as "FileVault" whether they are the boot volume or not in the ap list. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM apfs_volumes WHERE + role != "VM" AND + role != "Update" AND + role != "Recovery" AND + role != "Preboot" AND + role != "xART" AND + role != "Hardware" AND + filevault != 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure all user storage CoreStorage volumes are encrypted (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Apple introduced CoreStorage with 10.7. It is used as the default for formatting on macOS volumes prior to 10.13. + While FileVault protects the boot volume, data may be copied to other attached storage and reduce the protection afforded by FileVault. + Ensure all user volumes are encrypted to protect data. + resolution: | + Manual method: + Use Disk Utility to convert volumes to APFS or delete them. + It is no longer possible to encrypt CoreStorage volumes without converting them. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM corestorage_logical_volume_families WHERE EncryptionType != "AES-XTS" + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure the Sudo Timeout Period Is Set to Zero (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. + This five-minute window should be eliminated since it leaves the system extremely vulnerable. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo 'Defaults timestamp_timeout=0' | sudo tee -a /etc/sudoers.d/CIS_54_sudoconfiguration + /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/sudoers.d/ + query: | + SELECT 1 WHERE EXISTS( + SELECT * FROM file WHERE path = '/etc/sudoers.d' AND uid = 0 AND gid = 0 + ) AND EXISTS( + SELECT + COALESCE(JSON_EXTRACT( + json_result, '$.Authentication timestamp timeout' + ), '') AS authentication_timestamp_timeout + FROM sudo_info WHERE authentication_timestamp_timeout = '0.0 minutes' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure a Separate Timestamp Is Enabled for Each User/tty (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Using tty tickets ensures that a user must enter the sudo password in each Terminal session. + With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets + for each interface so that root access is limited to a specific terminal. + The default configuration can be overwritten or not configured correctly on earlier versions of macOS. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo 'Defaults timestamp_type=tty' | sudo tee /etc/sudoers.d/CIS_55_sudoconfiguration + query: | + SELECT 1 WHERE EXISTS( + SELECT + COALESCE(JSON_EXTRACT( + json_result, '$.Type of authentication timestamp record' + ), '') AS type_of_auth_timestamp_record + FROM sudo_info WHERE type_of_auth_timestamp_record = 'tty' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure the "root" Account Is Disabled (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Enabling and using the root account puts the system at risk since any successful exploit or mistake + while the root account is in use could have unlimited access privileges within the system. + Using the sudo command allows users to perform functions as a root user while limiting and password + protecting the access privileges. By default the root account is not enabled on a macOS computer. + An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell). + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + /usr/bin/sudo /usr/sbin/dsenableroot -d + query: | + SELECT 1 from dscl WHERE command = 'read' AND path = '/Users/root' AND key = 'AuthenticationAuthority' AND value = ''; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure an Administrator Account Cannot Login to Another User's Active and Locked Session (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + macOS has a privilege that can be granted to any user that will allow that + user to unlock active users' sessions. Disabling the administrator's and/or + user's ability to log into another user's active and locked session prevents + unauthorized persons from viewing potentially sensitive and/or personal + information. + Note: For organizations that are using Platform Single-Sign-On (PSSO), this + setting can cause issues with syncing with your PSSO. Verify if you are + using PSSO by running: /usr/bin/sudo app-sso platform -s + resolution: | + Automated method: + Ask your administrator to deploy a script that runs the following command: + /usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver authenticate-session-owner + # Note: Running this command will disable Touch ID to unlock the screen + # saver. To re-enable Touch ID for users, run: + /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow screenUnlockMode -int 1 + query: | + SELECT 1 WHERE EXISTS ( + SELECT JSON_EXTRACT(json_result, '$.rule') AS rule + FROM authdb + WHERE right_name = 'system.login.screensaver' AND + rule LIKE '%authenticate-session-owner%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod, getvictor + +- name: CIS - Ensure a Login Window Banner Exists + # platforms: macOS + platform: darwin + description: | + An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid + in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, + acceptable use policy, and authorization requirements. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo "Content of the banner" | sudo tee /Library/Security/PolicyBanner.txt + /usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt + /usr/bin/sudo /bin/chmod o+r /Library/Security/PolicyBanner.txt + query: | + SELECT 1 FROM file + WHERE (path = '/Library/Security/PolicyBanner.txt' OR + path = '/Library/Security/PolicyBanner.rtf') AND mode = '0644' + AND uid = 0 AND gid = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure the Guest Home Folder Does Not Exist + # platforms: macOS + platform: darwin + description: | + The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + /usr/bin/sudo /bin/rm -R /Users/Guest + query: | + SELECT 1 WHERE NOT EXISTS (SELECT * FROM file WHERE path = '/Users/Guest'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Show All Filename Extensions Setting is Enabled + # platforms: macOS + platform: darwin + description: | + A filename extension is a suffix added to a base filename that indicates the + base filename's file format. This is intended for any user that logs into + the GUI and has a home folder and not for service accounts. For the audit, + we will continue to verify that every account with a home folder has + filename extensions enabled. + Visible filename extensions allow the user to identify the file type and the + application it is associated with which leads to quick identification of + misrepresented malicious files. + resolution: | + Automated method: + Ask your administrator to deploy a script that runs the following command + for each user: + /usr/bin/sudo -u /usr/bin/defaults write \ + /Users//Library/Preferences/.GlobalPreferences.plist AppleShowAllExtensions -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/.GlobalPreferences.plist' AND + key = 'AppleShowAllExtensions' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/.GlobalPreferences.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work, getvictor + +- name: CIS - Ensure Automatic Opening of Safe Files in Safari Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Safari will automatically run or execute what it considers safe files. This can include + installers and other files that execute on the operating system. Safari evaluates file safety by + using a list of filetypes maintained by Apple. The list of files include text, image, video and + archive formats that would be run in the context of the OS rather than the browser. + Hackers have taken advantage of this setting via drive-by attacks. These attacks occur when a + user visits a legitimate website that has been corrupted. The user unknowingly downloads a + malicious file either by closing an infected pop-up or hovering over a malicious banner. An + attacker can create a malicious file that will fall within Safari's safe file list that will + download and execute without user input. + resolution: | + Payload Method: + Ask your administrator to deploy a profile which disables AutoOpenSafeDownloads in Safari + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='AutoOpenSafeDownloads' AND + (value = 0 OR value = 'false') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='AutoOpenSafeDownloads' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Audit Safari Web Browser History and Remove History Items (organization decision needed)(MDM Required) + # platforms: macOS + platform: darwin + description: | + Organizational management of user web browsing history is a challenge effected by multiple facets. Organizations should decide whether to manage browser history and how much history should be maintained. + Rationale: + There are conflicting concerns in the retention of browser history. Unlimited retention: + - Consumes disk space + - Preferred by on disk forensics teams + - User searchable for old visited pages + - User privacy concerns + - Security concerns to retain old links that may be stale or lead to compromised + pages or pages with changes or inappropriate content + Old browser history becomes stale and the use or misuse of the data can lead to unwanted outcomes. Search engine results are maintained and often provide much more relevant current information than old website visit information. + resolution: | + Ask your system administrator to deploy an MDM profile that set the history per organization decision + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is HistoryAgeInDaysLimit + 3. The key must be set to: <1,7,14,31,365,36500> + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='HistoryAgeInDaysLimit' AND + /* + Please replace the checked value below to match the one decided by your organization. + 1 - After one day + 7 - After one week + 14 - After two weeks + 31 - After one month + 365 - After one year + 36500 - Set Manually + */ + value = 1 AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='HistoryAgeInDaysLimit' AND + value != 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Warn When Visiting A Fraudulent Website in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Apple uses the Google Safe Browsing API to check for fraudulent websites and report them to the + user attempting visit one. Attackers use crafted web pages to social engineer users to load + unwanted content. Warning users prior to loading the content enables better security. + resolution: | + Payload Method: + Ask your administrator to deploy a profile which enables WarnAboutFraudulentWebsites in Safari + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WarnAboutFraudulentWebsites' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='WarnAboutFraudulentWebsites' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Prevent Cross-site Tracking in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Cross-tracking allows data-brokers to follow you across the Internet to enable their business model of + selling personal data. Users should protect their data and not volunteer it to marketing companies. + resolution: | + Automated method: + Ask your system administrator to deploy a profile via MDM with the following information: + 1. The PayloadType string is com.apple.Safari. + 2. The key to include is BlockStoragePolicy. + 3. The key must be set to: 2 + 4. The key to also include is WebKitPreferences.storageBlockingPolicy + 5. The key must be set to: 1 + 6. The key to also include is WebKitStorageBlockingPolicy + 7. The key must be set to: 1 + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='BlockStoragePolicy' AND + value = '2' AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitPreferences.storageBlockingPolicy' AND + value = '1' AND + username = '' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitStorageBlockingPolicy' AND + value = '1' AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='BlockStoragePolicy' AND + value != '2' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitPreferences.storageBlockingPolicy' AND + value != '1' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitStorageBlockingPolicy' AND + value != '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure the Hide IP Address in Safari is Enabled (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Public (Routable) IP addresses can be used to track people to their current location, including + home and business addresses. While a valid IP address is necessary to load the site the valid + address does not need to be provided to known trackers and should be hidden. + resolution: | + Ask your system administrator to deploy a script that will configure "Hide IP Address in Safari" to Enabled + $ /usr/bin/sudo -u /usr/bin/defaults write + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences + /com.apple.Safari WBSPrivacyProxyAvailabilityTraffic -int 130276 + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WBSPrivacyProxyAvailabilityTraffic' AND + ((value >> 2) & 1) = 1) AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: artemist-work + +- name: CIS - Ensure the Hide IP Address in Safari is Disabled (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Public (Routable) IP addresses can be used to track people to their current location, including + home and business addresses. While a valid IP address is necessary to load the site the valid + address does not need to be provided to known trackers and should be hidden. + However, enabling this setting will proxy web information through a 3rd party service, which may + not be allowed by your organization's policy. + resolution: | + Ask your system administrator to deploy a script that will configure "Hide IP Address in Safari" to Enabled + $ /usr/bin/sudo -u /usr/bin/defaults write + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences + /com.apple.Safari WBSPrivacyProxyAvailabilityTraffic -int 130272 + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WBSPrivacyProxyAvailabilityTraffic' AND + ((value >> 2) & 1) = 0) AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: artemist-work + +- name: CIS - Ensure Advertising Privacy Protection in Safari Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Apple provides a framework that allows advertisers to target Apple users and end-users with advertisements. + While many people prefer that when they see advertising it is relevant to them and their interests, the detailed + information that is data mining collected, correlated, and available to advertisers in repositories is often disconcerting. + This information is valuable to both advertisers and attackers and has been used with other metadata to reveal users' identities. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + # For each user run: + /usr/bin/sudo -u /usr/bin/defaults write \ + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari \ + WebKitPreferences.privateClickMeasurementEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WebKitPreferences.privateClickMeasurementEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Show Full Website Address in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Attackers use websites with malicious or unwanted content to exploit the user or the computer. Part of the attack chain is to lure someone to load their content rather than the desired content. In order to reduce the risk in interacting with unwanted content the full website address should always be displayed in Safari. + resolution: | + Graphical Method: + Perform the following steps to set Safari to show full website addresses: + 1. Open Safari + 2. Select Safari from the menu bar + 3. Select Settings + 4. Select Security + 5. Set Show full website address to enabled + Automated method: + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is ShowFullURLInSmartSearchField + 3. The key must be set to: + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowFullURLInSmartSearchField' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowFullURLInSmartSearchField' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Show Status Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The Status Bar in Safari shows the full URL of any link on hover. It protects the user from visiting sites where the domain has been obfuscated by allowing the user to review whether the link points to an unexpected location. + resolution: | + Automated method: + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is ShowOverlayStatusBar + 3. The key must be set to: + query: | + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowOverlayStatusBar' AND + (value = 1 OR value = 'true'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth + +- name: CIS - Ensure Secure Keyboard Entry Terminal.app Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Secure Keyboard Entry prevents other applications on the system and/or network from detecting and recording what is typed into Terminal. Unauthorized applications and malicious code could intercept keystrokes entered in the Terminal. + Enabling Secure Keyboard Entry minimizes the risk of a key logger from detecting what is entered in Terminal. + resolution: | + Profile Method: + Create or edit a configuration profile with the following information: + 1. The PayloadType string is com.apple.Terminal + 2. The key to include is SecureKeyboardEntry + 3. The key must be set to + + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Terminal' AND + name='SecureKeyboardEntry' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Terminal' AND + name='SecureKeyboardEntry' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.10.3.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.10.3.sh new file mode 100755 index 0000000000..048bf03195 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.10.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Test Message 1" \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.10.4.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.10.4.sh new file mode 100755 index 0000000000..2862a52444 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.10.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.10.5.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.10.5.sh new file mode 100755 index 0000000000..2c3b51b2d6 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.10.5.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.11.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.11.1.sh new file mode 100755 index 0000000000..9b1afbb660 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.11.1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure No Login Items Exist With Passwords in User Keychain +# Removes password hints for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + # Remove the hint attribute if it exists + if dscl . -read "/Users/$username" hint &>/dev/null; then + sudo dscl . -delete "/Users/$username" hint + fi +done diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.12.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.12.1.sh new file mode 100755 index 0000000000..619f9153c9 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.12.1.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false +sudo /usr/bin/defaults write /Library/Preferences/com.apple.MCX DisableGuestAccount -bool true \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.12.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.12.2.sh new file mode 100755 index 0000000000..a6bccab0d1 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.12.2.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off + + +# For testing +# Get Status: /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess status +# Set to enabled: /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess on + diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.12.3.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.12.3.sh new file mode 100755 index 0000000000..fbf775dbdc --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.12.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.1.sh new file mode 100755 index 0000000000..a5b1ec6cea --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.1.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.ODSAgent diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.2.sh new file mode 100755 index 0000000000..fcf8757ea6 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.3.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.3.sh new file mode 100755 index 0000000000..7feaa14a92 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.smbd diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.4.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.4.sh new file mode 100755 index 0000000000..e539ce313c --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/cupsctl --no-share-printers diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.5.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.5.sh new file mode 100755 index 0000000000..4019f9fa67 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.5.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.openssh.sshd diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.6.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.6.sh new file mode 100755 index 0000000000..628b998cac --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.6.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.7.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.7.sh new file mode 100755 index 0000000000..9eac6cd0c8 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.7.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/systemsetup -setremoteappleevents off diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.8.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.8.sh new file mode 100755 index 0000000000..4d241732a7 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.3.8.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0 diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.3.4.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.3.4.1.sh new file mode 100755 index 0000000000..e6b78d3083 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.3.4.1.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# NOTE(lucas): I was not able to set `com.apple.TimeMachine`'s `AutoBackup` via a configuration profile. +# I tried the profile method documented on the CIS Benchmarks document and after applying it successfully +# it did not update the value of `AutoBackup`. +# +# So for now we are using the following shell command to enable automatic backup of Time Machine destinations. +/usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.6.1.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.6.1.2.sh new file mode 100755 index 0000000000..120d2d1c6e --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.6.1.2.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# CIS - Ensure Location Services Is Enabled +sudo /usr/bin/defaults write /Library/Preferences/com.apple.locationmenu.plist ShowSystemServices -bool true diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.6.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.6.2.sh new file mode 100644 index 0000000000..753bfcfa14 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.6.2.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# CIS - Ensure Sending Diagnostic and Usage Data to Apple Is Disabled +# Part 1: System-level diagnostic settings +sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit -bool false +sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" ThirdPartyDataSubmit -bool false +sudo /bin/chmod 644 "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" +sudo /usr/sbin/chgrp admin "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" + +# Part 2: Per-user Siri data sharing opt-out +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + if [ -d "$home_dir" ]; then + sudo -u "$username" /usr/bin/defaults write "$home_dir/Library/Preferences/com.apple.assistant.support" "Siri Data Sharing Opt-In Status" -int 2 + fi +done diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.6.4.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.6.4.sh new file mode 100755 index 0000000000..9d62022c8f --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.6.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/sbin/spctl --master-enable diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.6.7.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.6.7.sh new file mode 100644 index 0000000000..e2563cf423 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.6.7.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -eu + +sudo security authorizationdb read system.preferences > /tmp/system.preferences.plist +defaults write /tmp/system.preferences.plist shared -bool false +sudo security authorizationdb write system.preferences < /tmp/system.preferences.plist diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.7.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.7.1.sh new file mode 100644 index 0000000000..fccd6fd899 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.7.1.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Set corner action to 0 (no-op). +# If you wish to not comply with the policy, set any of them to 6. + +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-br-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-bl-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-tr-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-tl-corner -integer 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.9.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.9.1.sh new file mode 100644 index 0000000000..993ddd2af1 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.9.1.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/pmset -a powernap 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.9.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.9.2.sh new file mode 100644 index 0000000000..2ecab92e99 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.9.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/pmset -a womp 0 diff --git a/docs/solutions/cis/macos-14/scripts/CIS_2.9.3.sh b/docs/solutions/cis/macos-14/scripts/CIS_2.9.3.sh new file mode 100755 index 0000000000..cc877132f3 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_2.9.3.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [[ $(uname -m) == 'arm64' ]]; then + # Apple silicon + /usr/bin/sudo /usr/bin/pmset -a standby 900 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 +else + # Intel + /usr/bin/sudo /usr/bin/pmset -a standbydelaylow 900 + /usr/bin/sudo /usr/bin/pmset -a standbydelayhigh 900 + /usr/bin/sudo /usr/bin/pmset -a highstandbythreshold 90 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 +fi diff --git a/docs/solutions/cis/macos-14/scripts/CIS_3.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_3.1.sh new file mode 100755 index 0000000000..6e3aa1955d --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_3.1.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist + +# For Testing: After the above command executed: +# This will stop the service: /usr/bin/sudo /bin/launchctl stop com.apple.auditd +# This will start the service: /usr/bin/sudo /bin/launchctl start com.apple.auditd \ No newline at end of file diff --git a/docs/solutions/cis/macos-14/scripts/CIS_3.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_3.2.sh new file mode 100755 index 0000000000..a43625369e --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_3.2.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# CIS - Ensure Security Auditing Flags Are Configured Per Local Organizational Requirements +# Sets audit flags to: -fm,ad,-ex,aa,-fr,lo,-fw + +AUDIT_CONTROL="/etc/security/audit_control" +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +cp "$AUDIT_CONTROL" "$tmpfile" +origFlags=$(grep 'flags:' "$tmpfile" | grep -v 'naflags') +sed "s/${origFlags}/flags:-fm,ad,-ex,aa,-fr,lo,-fw/" "$tmpfile" | sudo tee "$AUDIT_CONTROL" > /dev/null diff --git a/docs/solutions/cis/macos-14/scripts/CIS_3.3.sh b/docs/solutions/cis/macos-14/scripts/CIS_3.3.sh new file mode 100755 index 0000000000..d7d8fb8c48 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_3.3.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure install.log Is Retained for 365 or More Days +# Removes any all_max= setting from /etc/asl/com.apple.install + +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +# Remove all_max= entries (both M and G suffixes) +sudo sed -E 's/all_max=[0-9]+[MG]//g' /etc/asl/com.apple.install > "$tmpfile" +sudo cp "$tmpfile" /etc/asl/com.apple.install diff --git a/docs/solutions/cis/macos-14/scripts/CIS_3.4.sh b/docs/solutions/cis/macos-14/scripts/CIS_3.4.sh new file mode 100755 index 0000000000..48ffbcd7ec --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_3.4.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# CIS - Ensure Security Auditing Retention Is Configured +# Sets audit retention to: expire-after:60d OR 5G + +AUDIT_CONTROL="/etc/security/audit_control" +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +cp "$AUDIT_CONTROL" "$tmpfile" +origExpire=$(grep 'expire-after' "$tmpfile") +sed "s/${origExpire}/expire-after:60d OR 5G/" "$tmpfile" | sudo tee "$AUDIT_CONTROL" > /dev/null + +# Explanation: +# In your /etc/security/audit_control, look for a line starting at: expire-after +# SHOULD PASS: expire-after:60d OR 5G +# SHOULD PASS: expire-after:61d OR 5G +# SHOULD PASS: expire-after:60d OR 6G +# SHOULD PASS: expire-after:61d OR 6G +# SHOULD FAIL: expire-after:60d (no size component) +# SHOULD FAIL: expire-after:5G (no time component) +# SHOULD FAIL: expire-after:59d OR 5G +# SHOULD FAIL: expire-after:60d OR 4G diff --git a/docs/solutions/cis/macos-14/scripts/CIS_3.5.sh b/docs/solutions/cis/macos-14/scripts/CIS_3.5.sh new file mode 100755 index 0000000000..29c09f5df7 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_3.5.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/audit_control +/usr/bin/sudo /bin/chmod -R o-rw /etc/security/audit_control +/usr/bin/sudo /usr/sbin/chown -R root:wheel /var/audit/ +/usr/bin/sudo /bin/chmod -R o-rw /var/audit/ + diff --git a/docs/solutions/cis/macos-14/scripts/CIS_4.2.sh b/docs/solutions/cis/macos-14/scripts/CIS_4.2.sh new file mode 100644 index 0000000000..c9fe75751e --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_4.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist diff --git a/docs/solutions/cis/macos-14/scripts/CIS_4.3.sh b/docs/solutions/cis/macos-14/scripts/CIS_4.3.sh new file mode 100755 index 0000000000..ce62d02ac0 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_4.3.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd +/usr/bin/sudo /bin/rm /etc/exports diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.1.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.1.1.sh new file mode 100755 index 0000000000..1276aa8f73 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.1.1.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for i in $(/usr/bin/sudo dscl . list /Users | grep -v "^_"); do + /usr/bin/sudo /bin/chmod -R og-rwx /Users/"$i" +done diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.1.5.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.1.5.sh new file mode 100755 index 0000000000..5749d5ca4b --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.1.5.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the Applications Folder + +IFS=$'\n' +for apps in $(/usr/bin/find /Applications -iname "*.app" -type d -perm -2); do + sudo /bin/chmod -R o-w "$apps" +done +unset IFS diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.1.6.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.1.6.sh new file mode 100755 index 0000000000..00f090e223 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.1.6.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the System Folder + +IFS=$'\n' +for sysPermissions in $(/usr/bin/find /System/Volumes/Data/System -type d -perm -2 | /usr/bin/grep -v "Drop Box"); do + sudo /bin/chmod -R o-w "$sysPermissions" +done +unset IFS diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.1.7.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.1.7.sh new file mode 100755 index 0000000000..5f89ef6307 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.1.7.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the Library Folder + +IFS=$'\n' +for libPermissions in $(/usr/bin/find /System/Volumes/Data/Library -type d -perm -2 | /usr/bin/grep -v Caches | /usr/bin/grep -v /Preferences/Audio/Data); do + sudo /bin/chmod -R o-w "$libPermissions" +done +unset IFS diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.10.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.10.sh new file mode 100755 index 0000000000..044c28ee64 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.10.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/rm -R /Users/Guest diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.4.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.4.sh new file mode 100644 index 0000000000..294619fd15 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.4.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# CIS - Ensure a Separate Timestamp Is Not Used for Each User-tty Combo +# Sets sudo timeout to 0 (require password every time). + +SUDOERS_FILE="/etc/sudoers.d/CIS_54_sudoconfiguration" + +echo 'Defaults timestamp_timeout=0' | sudo tee "$SUDOERS_FILE" > /dev/null +sudo /bin/chmod 0440 "$SUDOERS_FILE" +sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" + +# Validate syntax +if ! sudo /usr/sbin/visudo -cf "$SUDOERS_FILE"; then + echo "ERROR: sudoers syntax check failed. Removing invalid configuration." + sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.5.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.5.sh new file mode 100644 index 0000000000..398f85ea7f --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.5.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# CIS - Ensure a Separate Timestamp Is Used for Each User-tty Combo +# Sets sudo timestamp_type to tty (per-terminal authentication). + +SUDOERS_FILE="/etc/sudoers.d/CIS_55_sudoconfiguration" + +echo 'Defaults timestamp_type=tty' | sudo tee "$SUDOERS_FILE" > /dev/null +sudo /bin/chmod 0440 "$SUDOERS_FILE" +sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" + +# Validate syntax +if ! sudo /usr/sbin/visudo -cf "$SUDOERS_FILE"; then + echo "ERROR: sudoers syntax check failed. Removing invalid configuration." + sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.6.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.6.sh new file mode 100644 index 0000000000..1597cee0df --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.6.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/dsenableroot -d diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.7.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.7.sh new file mode 100644 index 0000000000..0442b1ba85 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.7.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver use-login-window-ui diff --git a/docs/solutions/cis/macos-14/scripts/CIS_5.8.sh b/docs/solutions/cis/macos-14/scripts/CIS_5.8.sh new file mode 100755 index 0000000000..6e582a62f7 --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_5.8.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "Content of the banner" | sudo tee /Library/Security/PolicyBanner.txt +/usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt +/usr/bin/sudo /bin/chmod o+r /Library/Security/PolicyBanner.txt diff --git a/docs/solutions/cis/macos-14/scripts/CIS_6.1.1.sh b/docs/solutions/cis/macos-14/scripts/CIS_6.1.1.sh new file mode 100755 index 0000000000..5945531b2e --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_6.1.1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure Show All Filename Extensions Setting is Enabled +# Applies AppleShowAllExtensions for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + if [ -d "$home_dir" ]; then + /usr/bin/sudo -u "$username" /usr/bin/defaults write "$home_dir/Library/Preferences/.GlobalPreferences.plist" AppleShowAllExtensions -bool true + fi +done diff --git a/docs/solutions/cis/macos-14/scripts/CIS_6.3.6.sh b/docs/solutions/cis/macos-14/scripts/CIS_6.3.6.sh new file mode 100644 index 0000000000..6981b3494c --- /dev/null +++ b/docs/solutions/cis/macos-14/scripts/CIS_6.3.6.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# CIS - Ensure Safari Advertising Privacy Protection Is Enabled +# Applies privateClickMeasurementEnabled for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + pref_path="$home_dir/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari" + if [ -d "$home_dir" ]; then + /usr/bin/sudo -u "$username" /usr/bin/defaults write "$pref_path" WebKitPreferences.privateClickMeasurementEnabled -bool true + fi +done diff --git a/docs/solutions/cis/macos-15/README.md b/docs/solutions/cis/macos-15/README.md new file mode 100644 index 0000000000..875aeb63fe --- /dev/null +++ b/docs/solutions/cis/macos-15/README.md @@ -0,0 +1,46 @@ +# macOS 15 Sequoia benchmark + +Fleet's policies have been written against v1.1.0 of the benchmark. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. + +For requirements and usage details, see the [CIS Benchmarks](https://fleetdm.com/docs/using-fleet/cis-benchmarks) documentation. + +### Contents + +| Folder | Description | +|--------|-------------| +| `policies/` | GitOps-compatible policy YAML — import via `fleetctl apply` or reference with `- path:` in `fleet.yml` | +| `configuration-profiles/` | Apple `.mobileconfig` profiles — upload via Fleet UI or `fleetctl apply` to enforce the settings checked by the policies | +| `scripts/` | Shell scripts — upload via Fleet UI or `fleetctl apply` and link as `run_script` remediation in the corresponding policy | + +### Limitations + +The following CIS benchmarks cannot be checked with a policy in Fleet: +1. 2.1.2 Audit App Store Password Settings +2. 2.3.3.12 Ensure Computer Name Does Not Contain PII or Protected Organizational Information +3. 2.6.6 Audit Lockdown Mode +4. 2.11.2 Audit Touch ID and Wallet & Apple Pay Settings +5. 2.13.1 Audit Passwords System Preference Setting +6. 2.14.1 Audit Notification & Focus Settings +7. 3.7 Audit Software Inventory +8. 6.2.1 Ensure Protect Mail Activity in Mail Is Enabled +9. 2.6.3.5 Ensure Share iCloud Analytics Is Disabled (manual) + +### Checks that require decision + +CIS has left the parameters of the following checks up to the benchmark implementer. CIS recommends that an organization make a conscious decision for these benchmarks, but does not make a specific recommendation. + +Fleet has provided both an "enabled" and "disabled" version of these benchmarks. When both policies are added, at least one will fail. Once your organization has made a decision, you can delete one or the other policy. +The policy will be appended with a `-enabled` or `-disabled` label, such as `2.1.1.1-enabled`. + +- 2.1.1.1 Audit iCloud Keychain +- 2.1.1.2 Audit iCloud Drive +- 2.5.1 Audit Siri +- 2.8.1 Audit Universal Control + +Furthermore, CIS has decided to not require the following password complexity settings: +- 5.2.3 Ensure Complex Password Must Contain Alphabetic Characters Is Configured +- 5.2.4 Ensure Complex Password Must Contain Numeric Character Is Configured +- 5.2.5 Ensure Complex Password Must Contain Special Character Is Configured +- 5.2.6 Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured + +However, Fleet has provided these as policies. If your organization declines to implement these, simply delete the corresponding policies. diff --git a/docs/solutions/cis/macos-15/configuration-profiles/1.3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/1.3.mobileconfig new file mode 100644 index 0000000000..a2bd6671ec --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/1.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.3.check + PayloadUUID + 5FDE6D58-79CD-447A-AFB0-BA32D889C396 + AutomaticDownload + + + + PayloadDescription + test + PayloadDisplayName + Ensure Download New Updates When Available Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0A1C2F97-D6FA-4CDB-ABB6-47DF2B151F4F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/1.4.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/1.4.mobileconfig new file mode 100644 index 0000000000..bee74453b5 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/1.4.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.4.check + PayloadUUID + 15BF7634-276A-411B-8C4E-52D89B4ED82C + AutomaticallyInstallMacOSUpdates + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install of macOS Updates Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7DB8733E-BD11-4E88-9AE0-273EF2D0974B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/1.5.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/1.5.mobileconfig new file mode 100644 index 0000000000..416b7a0d85 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/1.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SoftwareUpdate + PayloadIdentifier + com.fleetdm.cis-1.5.check + PayloadUUID + 6B0285F8-5DB8-4F68-AA6E-2333CCD6CE04 + AutomaticallyInstallAppUpdates + + + + PayloadDescription + test + PayloadDisplayName + Ensure Install Application Updates from the App Store Is Enabled + PayloadIdentifier + com.fleetdm.cis-1.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1C4C0EC4-64A7-4AF0-8807-A3DD44A6DC76 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/1.7.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/1.7.mobileconfig new file mode 100644 index 0000000000..1dcca5b3b0 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/1.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-1.7.check + PayloadUUID + 123FD592-D1C3-41FD-BC41-F91F3E1E2CF4 + enforcedSoftwareUpdateDelay + 29 + + + PayloadDescription + test + PayloadDisplayName + Ensure Software Update Deferment Is Less Than or Equal to 30 Days + PayloadIdentifier + com.zwass.cis-1.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 385A0C13-2472-41B3-851C-1311FA12EB49 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.1-enable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.1-enable.mobileconfig new file mode 100644 index 0000000000..9a8bc0992f --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.1.check-enable + PayloadUUID + 68D8C498-FB81-4262-9EF4-E689B5A6B40F + allowCloudKeychainSync + + + + PayloadDescription + test + PayloadDisplayName + Ensure iCloud Keychain is enabled + PayloadIdentifier + com.fleetdm.cis-2.1.1.1-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + EE1BA83A-E145-4F5B-9597-836DC357BBE7 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-disable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-disable.mobileconfig new file mode 100644 index 0000000000..f701b8fa75 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.2.check-disable + PayloadUUID + 1028E002-9AFE-446A-84E0-27DA5DA39B4A + allowCloudDocumentSync + + + + PayloadDescription + test + PayloadDisplayName + Disable iCloud Drive storage solution usage + PayloadIdentifier + com.fleetdm.cis-2.1.1.2-disable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7B3DE4EA-0AFA-44F5-9716-37526EE441EA + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-enable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-enable.mobileconfig new file mode 100644 index 0000000000..50d8788d77 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.2-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.2.check-enable + PayloadUUID + 8618AA0E-B6AC-4D1C-AE01-C46956EC1926 + allowCloudDocumentSync + + + + PayloadDescription + test + PayloadDisplayName + Enable iCloud Drive storage solution usage + PayloadIdentifier + com.fleetdm.cis-2.1.1.2-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2C2FC587-14E8-4A52-98B5-30BA1C975BBA + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.3.mobileconfig new file mode 100644 index 0000000000..a210df0a09 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.1.1.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.1.1.3.check + PayloadUUID + 5F0EF767-200C-4E10-A43D-04204A4A8E06 + allowCloudDesktopAndDocuments + + + + PayloadDescription + test + PayloadDisplayName + Ensure iCloud Drive Document and Desktop Sync Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.1.1.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2EAF168E-3DC9-4375-AA37-501EDB3C8422 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.10.3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.10.3.mobileconfig new file mode 100644 index 0000000000..c9ecbd26d5 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.10.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.loginwindow + PayloadIdentifier + com.fleetdm.cis-2.10.3.check + PayloadUUID + 3E4C4ED8-ADB6-4EFB-8198-58027B94DF86 + LoginwindowText + Some Test Message + + + PayloadDescription + test + PayloadDisplayName + Ensure a Custom Message for the Login Screen Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.10.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 9359CA59-D3C1-4A0D-8595-9E5F1F0CAE12 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.12.3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.12.3.mobileconfig new file mode 100644 index 0000000000..217b1d5ebe --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.12.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.loginwindow + PayloadIdentifier + com.fleetdm.cis-2.12.3.check + PayloadUUID + CB576629-19E2-4649-84FC-C007826732A0 + com.apple.login.mcx.DisableAutoLoginClient + + + + PayloadDescription + test + PayloadDisplayName + Ensure Automatic Login Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.12.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0AEDE730-9466-47D1-B322-3C6F325B3737 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.3.1.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.3.1.1.mobileconfig new file mode 100644 index 0000000000..5453a36d7e --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.3.1.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.1.1.check + PayloadUUID + 22F2E52E-E593-40F7-8635-E067EDEE4F60 + allowAirDrop + + + + PayloadDescription + test + PayloadDisplayName + Ensure AirDrop Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.1.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 55DC048E-1490-4A26-8A97-4A4EA91A7302 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.3.1.2.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.3.1.2.mobileconfig new file mode 100644 index 0000000000..707f9c26c6 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.3.1.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.1.2.check + PayloadUUID + BF58FD50-E4EC-4427-A549-1BCD7B88FCEB + allowAirPlayIncomingRequests + + + + PayloadDescription + test + PayloadDisplayName + Ensure AirPlay Receiver Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.1.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 633BD4E3-849E-485E-A784-AA80D86E83A3 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.3.2.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.3.2.1.mobileconfig new file mode 100644 index 0000000000..f299a44c1f --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.3.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.2.1.check + PayloadUUID + C5CFF95F-7E77-4B0E-8136-2729A481D60A + forceAutomaticDateAndTime + + + + PayloadDescription + test + PayloadDisplayName + Ensure Set Time and Date Automatically Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.3.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + CEA7E3A6-E5DF-4A93-ABB7-45F36BF3D3E8 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.3.3.9.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.3.3.9.mobileconfig new file mode 100644 index 0000000000..7c5eb6352e --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.3.3.9.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.3.3.9.check + PayloadUUID + 85956359-CF0A-46C8-BD7C-26060ABB9119 + allowContentCaching + + + + PayloadDescription + test + PayloadDisplayName + Ensure Content Caching Is Disabled + PayloadIdentifier + com.fleetdm.cis-2.3.3.9 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + AA4372B4-5D36-4660-A2FC-07067C94A91F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.4.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.4.1.mobileconfig new file mode 100644 index 0000000000..528cd219b6 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.controlcenter + PayloadIdentifier + com.fleetdm.cis-2.4.1.check + PayloadUUID + B97CBDF6-1EB7-424C-86DE-E11892B223F3 + WiFi + 18 + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Wi-Fi status in Menu Bar Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2357BB9E-FD15-4E1D-A1CC-12C7798E1483 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.4.2.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.4.2.mobileconfig new file mode 100644 index 0000000000..0d0349d040 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.4.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.controlcenter + PayloadIdentifier + com.fleetdm.cis-2.4.2.check + PayloadUUID + FC6045C3-FFD7-4C0A-A3D5-ED0ADB9FF391 + Bluetooth + 18 + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Bluetooth Status in Menu Bar Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.4.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F997FFD6-7E39-48C7-A451-B12A79B6FA22 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.5.1-disable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.5.1-disable.mobileconfig new file mode 100644 index 0000000000..cf61d53acb --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.5.1-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.5.1.check-disable + PayloadUUID + 4B56DF79-ECAF-4175-AACC-95F08A980B6C + allowAssistant + + + + PayloadDescription + test + PayloadDisplayName + Disable Siri + PayloadIdentifier + com.fleetdm.cis-2.5.1-disable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + FB3E1980-5FE2-4C8F-BCF8-6FFF4117C962 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.5.1-enable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.5.1-enable.mobileconfig new file mode 100644 index 0000000000..5bac3db11a --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.5.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.5.1.check-enable + PayloadUUID + DC0652C5-E996-408F-84A0-9F09657FD771 + allowAssistant + + + + PayloadDescription + test + PayloadDisplayName + Enable Siri + PayloadIdentifier + com.fleetdm.cis-2.5.1-enable + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F5001E34-CC4D-4951-A7A3-A95DC02F0090 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part1.mobileconfig new file mode 100644 index 0000000000..c57d32092c --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.2-part1.check + PayloadUUID + 9A6BF497-B715-453A-A7F7-D27C325EB5B3 + allowDiagnosticSubmission + + + + PayloadDescription + test + PayloadDisplayName + Ensure Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 1) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 7D03459B-AA53-41AB-85C4-AAED7CE95EE9 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part2.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part2.mobileconfig new file mode 100644 index 0000000000..363a447e55 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.SubmitDiagInfo + PayloadIdentifier + com.fleetdm.cis-2.6.2-part2.check + PayloadUUID + 756EF527-5F37-4685-9A0F-21B596D1F895 + AutoSubmit + + + + PayloadDescription + test + PayloadDisplayName + Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 2) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C720744B-BBF2-4FE2-B8A9-4638CECC8BB2 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part3.mobileconfig new file mode 100644 index 0000000000..c0e551443d --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.6.2-part3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.2-part3.check + PayloadUUID + 0FD378F2-B497-42D9-AEAE-C58D855E56FD + Siri Data Sharing Opt-In Status + 2 + + + PayloadDescription + test + PayloadDisplayName + Ensure Ensure Sending Diagnostic and Usage Data to Apple Is Disabled(part 3) + PayloadIdentifier + com.fleetdm.cis-2.6.2-part3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 49A101C5-3401-47E7-90AF-9071D4D65E5D + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.6.3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.6.3.mobileconfig new file mode 100644 index 0000000000..2bed86338e --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.6.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-2.6.3.check + PayloadUUID + 6C5400FF-BBB3-471F-B139-59D86ADA9A3A + allowApplePersonalizedAdvertising + + + + PayloadDescription + test + PayloadDisplayName + Ensure Limit Ad Tracking Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C215AA26-C3D0-4A77-B884-8B8C918FD197 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.6.5.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.6.5.mobileconfig new file mode 100644 index 0000000000..da7247ad2b --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.6.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.MCX + PayloadIdentifier + com.fleetdm.cis-2.6.5.check + PayloadUUID + D56F90DC-6F90-4BEB-8D0F-263D062EC612 + dontAllowFDEDisable + + + + PayloadDescription + test + PayloadDisplayName + Ensure FileVault Is Enabled + PayloadIdentifier + com.fleetdm.cis-2.6.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 804CCF1F-2814-4B73-95EE-DB0B4FF67103 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.8.1-disable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.8.1-disable.mobileconfig new file mode 100644 index 0000000000..82816dd0ef --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.8.1-disable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.universalcontrol + PayloadIdentifier + com.fleetdm.cis-2.8.1.check-disabled + PayloadUUID + A6481AEB-354C-4718-9E01-B4562C7F341A + Disable + + + + PayloadDescription + test + PayloadDisplayName + Ensure Universal Control is disabled + PayloadIdentifier + com.fleetdm.cis-2.8.1-disabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 8EA6B5B4-A0EF-49B3-8A6E-C8F02C27456B + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/2.8.1-enable.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/2.8.1-enable.mobileconfig new file mode 100644 index 0000000000..126c98c07c --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/2.8.1-enable.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.universalcontrol + PayloadIdentifier + com.fleetdm.cis-2.8.1.check-enabled + PayloadUUID + F39058CB-027B-453D-B2DF-414F9B84D241 + Disable + + + + PayloadDescription + test + PayloadDisplayName + Ensure Universal Control is enabled + PayloadIdentifier + com.fleetdm.cis-2.8.1-enabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + ECC41516-FFD8-4321-9696-63B1939CB956 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/4.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/4.1.mobileconfig new file mode 100644 index 0000000000..ceecc14821 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mDNSResponder + PayloadIdentifier + com.fleetdm.cis-4.1.check + PayloadUUID + 08FEA43B-CE9B-4098-804C-11459D109992 + NoMulticastAdvertisements + + + + PayloadDescription + test + PayloadDisplayName + Ensure Bonjour Advertising Services Is Disabled + PayloadIdentifier + com.fleetdm.cis-4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 25BD1312-2B79-40C7-99FA-E60B49A1883E + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/5.2.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/5.2.1.mobileconfig new file mode 100644 index 0000000000..224bb96c40 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/5.2.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.1.check + PayloadUUID + 749F9F38-7AD2-4FC6-8F88-672F3AB79F82 + maxFailedAttempts + 5 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Account Lockout Threshold Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + F886BF2C-12D2-428B-BCF0-55823908F426 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/5.2.2.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/5.2.2.mobileconfig new file mode 100644 index 0000000000..d2b4195a47 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/5.2.2.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.2.check + PayloadUUID + A7C54C32-6519-4335-A673-B20D3015B432 + minLength + 15 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Minimum Length Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 415F567D-83F4-4AB5-BCFA-7AC8B707DCFD + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/5.2.3-and-5.2.4.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/5.2.3-and-5.2.4.mobileconfig new file mode 100644 index 0000000000..6555d780ce --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/5.2.3-and-5.2.4.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.3-and-5.2.4.check + PayloadUUID + 207388F7-0144-4518-9CCD-9E488EF9C5D7 + requireAlphanumeric + + + + PayloadDescription + test + PayloadDisplayName + Require AlphaNumeric characters in password + PayloadIdentifier + com.fleetdm.cis-5.2.3-and-5.2.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 19BDCDC8-7E9E-48A6-9468-F87EE865F677 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/5.2.5.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/5.2.5.mobileconfig new file mode 100644 index 0000000000..6194054bec --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/5.2.5.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.5.check + PayloadUUID + 46BD11BD-116C-4E95-9575-6EDFDE0F110F + minComplexChars + 1 + + + PayloadDescription + test + PayloadDisplayName + Require Special characters in password + PayloadIdentifier + com.fleetdm.cis-5.2.5 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C8CEE953-50F3-48E6-B462-FA98D931A906 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/5.2.7.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/5.2.7.mobileconfig new file mode 100644 index 0000000000..9645354659 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/5.2.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.7.check + PayloadUUID + F5515451-97EC-4CCB-B442-CDF0C546BC27 + maxPINAgeInDays + 365 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password Age Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + AEF56396-50CC-4E5A-9C6D-CBAE6A5E13B5 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/5.2.8.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/5.2.8.mobileconfig new file mode 100644 index 0000000000..a52c57d2cd --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/5.2.8.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.mobiledevice.passwordpolicy + PayloadIdentifier + com.fleetdm.cis-5.2.8.check + PayloadUUID + 5227E361-F971-44B3-B706-B04BA0D3B186 + pinHistory + 15 + + + PayloadDescription + test + PayloadDisplayName + Ensure Password History Is Configured + PayloadIdentifier + com.fleetdm.cis-5.2.8 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 0AD34391-5C19-4229-AA10-EB6A169D15EB + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/6.3.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/6.3.1.mobileconfig new file mode 100644 index 0000000000..10a6bdba7b --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/6.3.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.1.check + PayloadUUID + 3CAAC721-D492-45AC-95E4-8ECBF81EA21E + AutoOpenSafeDownloads + + + + PayloadDescription + test + PayloadDisplayName + Ensure Automatic Opening of Safe Files in Safari Is Disabled + PayloadIdentifier + com.fleetdm.cis-6.3.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 2556F162-9AE5-4163-92C1-F89A2847C80E + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/6.3.2.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/6.3.2.mobileconfig new file mode 100644 index 0000000000..bf7839b4ce --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/6.3.2.mobileconfig @@ -0,0 +1,38 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.2.check + PayloadUUID + 61BC98A2-9482-4EB3-9184-FB6A8B8E33E8 + HistoryAgeInDaysLimit + 1 + + + PayloadDescription + test + PayloadDisplayName + Audit History and Remove History Items + PayloadIdentifier + com.fleetdm.cis-6.3.2 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 1D6C407D-8C28-4BDC-9837-DF5ED49E8059 + PayloadVersion + 1 + + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/6.3.3.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/6.3.3.mobileconfig new file mode 100644 index 0000000000..250550d143 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/6.3.3.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.3.check + PayloadUUID + AA1CF4AE-446C-41B0-8B06-ADEAEF9F0505 + WarnAboutFraudulentWebsites + + + + PayloadDescription + test + PayloadDisplayName + Ensure Warn When Visiting A Fraudulent Website in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.3 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 130308F8-916A-449D-9711-34A31DCCD39D + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/6.3.4.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/6.3.4.mobileconfig new file mode 100644 index 0000000000..88bde35973 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/6.3.4.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.4.check + PayloadUUID + E0560069-04EF-4985-815E-987A304F8EB7 + BlockStoragePolicy + 2 + WebKitPreferences.storageBlockingPolicy + 1 + WebKitStorageBlockingPolicy + 1 + + + PayloadDescription + test + PayloadDisplayName + Ensure Prevent Cross-site Tracking in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.4 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E1D04566-15CE-458C-A0D1-5F6C7B9A6472 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/6.3.7.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/6.3.7.mobileconfig new file mode 100644 index 0000000000..9351714af6 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/6.3.7.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Safari + PayloadIdentifier + com.fleetdm.cis-6.3.7.check + PayloadUUID + A78B534C-0E6D-46C0-97F1-D50178AC5AD0 + ShowFullURLInSmartSearchField + + + + PayloadDescription + test + PayloadDisplayName + Ensure Show Full Website Address in Safari Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.3.7 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + 5A412D8E-5951-42A3-95ED-BD82AD6D3038 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/6.4.1.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/6.4.1.mobileconfig new file mode 100644 index 0000000000..9aca882491 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/6.4.1.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + test + PayloadType + com.apple.Terminal + PayloadIdentifier + com.fleetdm.cis-6.4.1.check + PayloadUUID + E8D36749-D7F8-4280-9B17-D6224B67B63B + SecureKeyboardEntry + + + + PayloadDescription + test + PayloadDisplayName + Ensure Secure Keyboard Entry Terminal.app Is Enabled + PayloadIdentifier + com.fleetdm.cis-6.4.1 + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + D4C0B4CC-D39A-4F0F-AF8A-AB5A73D02B3F + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-extensions.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-extensions.mobileconfig new file mode 100644 index 0000000000..618349d2f9 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-extensions.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + Disable external intelligence extensions + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-extensions.check + PayloadUUID + A1B2C3D4-E5F6-7890-ABCD-EF1234567801 + allowExternalIntelligenceIntegrations + + + + PayloadDescription + Disables external Apple Intelligence extensions (e.g. ChatGPT) to prevent data being sent to third-party AI services. CIS macOS 15 benchmark. + PayloadDisplayName + CIS - Ensure external intelligence extensions is disabled + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-extensions + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + A1B2C3D4-E5F6-7890-ABCD-EF1234567802 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-mail.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-mail.mobileconfig new file mode 100644 index 0000000000..2615e9cb7c --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-mail.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + Disable Apple Intelligence in Mail + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-mail.check + PayloadUUID + C3D4E5F6-A7B8-9012-CDEF-123456789012 + PayloadVersion + 1 + allowMailSmartReplies + + allowMailSummary + + + + PayloadDescription + Disables Apple Intelligence features in Mail (smart replies, email summarization) to prevent mail content from being processed by AI. CIS macOS 15 benchmark. + PayloadDisplayName + CIS - Ensure Apple Intelligence in Mail is disabled + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-mail + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + C3D4E5F6-A7B8-9012-CDEF-123456789013 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-notes.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-notes.mobileconfig new file mode 100644 index 0000000000..813a577437 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-notes.mobileconfig @@ -0,0 +1,41 @@ + + + + + PayloadContent + + + PayloadDisplayName + Disable Apple Intelligence in Notes + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-notes.check + PayloadUUID + D4E5F6A7-B8C9-0123-DEF0-234567890123 + PayloadVersion + 1 + allowNotesTranscription + + allowNotesTranscriptionSummary + + + + PayloadDescription + Disables Apple Intelligence features in Notes (transcription, AI summarization) to prevent note content from being processed by AI. CIS macOS 15 benchmark. + PayloadDisplayName + CIS - Ensure Apple Intelligence in Notes is disabled + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-notes + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + D4E5F6A7-B8C9-0123-DEF0-234567890124 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-writing-tools.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-writing-tools.mobileconfig new file mode 100644 index 0000000000..aa123e512c --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/apple-intelligence-writing-tools.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + Disable Apple Intelligence writing tools + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-writing-tools.check + PayloadUUID + B2C3D4E5-F6A7-8901-BCDE-F12345678901 + allowWritingTools + + + + PayloadDescription + Disables Apple Intelligence writing tools to prevent AI-assisted text composition from processing organizational data. CIS macOS 15 benchmark. + PayloadDisplayName + CIS - Ensure Apple Intelligence writing tools is disabled + PayloadIdentifier + com.fleetdm.cis-apple-intelligence-writing-tools + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + B2C3D4E5-F6A7-8901-BCDE-F12345678902 + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/configuration-profiles/on-device-dictation-enabled.mobileconfig b/docs/solutions/cis/macos-15/configuration-profiles/on-device-dictation-enabled.mobileconfig new file mode 100644 index 0000000000..933ee01f92 --- /dev/null +++ b/docs/solutions/cis/macos-15/configuration-profiles/on-device-dictation-enabled.mobileconfig @@ -0,0 +1,37 @@ + + + + + PayloadContent + + + PayloadDisplayName + On-Device Dictation Restriction + PayloadType + com.apple.applicationaccess + PayloadIdentifier + com.fleetdm.cis.check-cis-on-device-dictation-enabled + PayloadUUID + 4E203BCD-CAFB-4248-B6B0-F2A1AEC55EB1 + forceOnDeviceOnlyDictation + + + + PayloadDescription + Ensures dictation requests are processed on-device only and never sent to external servers. + PayloadDisplayName + Ensure On-Device Dictation Is Enabled + PayloadIdentifier + com.fleetdm.cis-on-device-dictation-enabled + PayloadRemovalDisallowed + + PayloadScope + System + PayloadType + Configuration + PayloadUUID + E155A81F-DCF0-467B-B177-972E67562BFF + PayloadVersion + 1 + + diff --git a/docs/solutions/cis/macos-15/policies/cis-policy-queries.yml b/docs/solutions/cis/macos-15/policies/cis-policy-queries.yml new file mode 100644 index 0000000000..e719b423a6 --- /dev/null +++ b/docs/solutions/cis/macos-15/policies/cis-policy-queries.yml @@ -0,0 +1,3296 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- name: CIS - Ensure All Apple-provided Software Is Current (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Software vendors release security patches and software updates for their products when security vulnerabilities are discovered. There is no simple way to complete this action without a network connection to an Apple software repository. Please ensure appropriate access for this control. This check is only for what Apple provides through software update. + Note: This query may be longer than the avg query and may take more than 10 seconds to run. + resolution: | + Graphical Method: + Perform the following to install all available software updates: + 1. Open System Settings + 2. Select General + 3. Select Software Update + 4. Select Update All + query: SELECT 1 FROM software_update WHERE software_update_required = '0'; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Download New Updates When Available Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that the system is configured via MDM to automatically download updates. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic update downloads." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticDownload' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticDownload' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Install of macOS Updates Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Ensure that macOS updates are installed after they are available from Apple. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic install of macOS updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallMacOSUpdates' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallMacOSUpdates' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Install Application Updates from the App Store Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Ensure that application updates are installed after they are available from Apple. + resolution: Ask your system administrator to deploy an MDM profile that enables automatic updates of Apple apps. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallAppUpdates' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='AutomaticallyInstallAppUpdates' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure XProtect Is Running and Updated + # platforms: macOS + platform: darwin + description: | + XProtect is Apple's native signature-based antivirus technology. XProtect both finds and blocks the execution of known malware. There are many AV and Endpoint Threat Detection and Response (ETDR) tools available for Mac OS. The native Apple provisioned tool looks for specific known malware and is completely integrated into the OS. No matter what other tools are being used, XProtect should have the latest signatures available. + resolution: | + Ask your system administrator to deploy a script that will configure: + /usr/bin/sudo /bin/launchctl load -w /Library/Apple/System/Library/LaunchDaemons/com.apple.XProtect.daemon.scan.plist + /usr/bin/sudo /bin/launchctl load -w /Library/Apple/System/Library/LaunchDaemons/com.apple.XprotectFramework.PluginService.plist + /usr/bin/sudo /usr/bin/xprotect update + query: | + SELECT 1 + WHERE ( + SELECT COUNT(*) + FROM launchd + WHERE path IN ( + '/Library/Apple/System/Library/LaunchDaemons/com.apple.XprotectFramework.PluginService.plist', + '/Library/Apple/System/Library/LaunchDaemons/com.apple.XProtect.daemon.scan.plist' + ) + ) = 2; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth, getvictor + +- name: CIS - Ensure Install Security Responses and System Files Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Ensure that system and security updates are installed after they are available from + Apple. This setting enables definition updates for XProtect and Gatekeeper. With this + setting in place, new malware and adware that Apple has added to the list of malware or + untrusted software will not execute. + resolution: "Ask your system administrator to deploy an MDM profile that enables automatic critical system and security updates." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='CriticalUpdateInstall' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SoftwareUpdate' AND + name='CriticalUpdateInstall' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Software Update Deferment Is Less Than or Equal to 30 Days (MDM Required) + # platforms: macOS + platform: darwin + description: | + Apple provides the capability to manage software updates on Apple devices through + mobile device management. Part of those capabilities permit organizations to defer + software updates and allow for testing. Many organizations have specialized software + and configurations that may be negatively impacted by Apple updates. If software + updates are deferred, they should not be deferred for more than 30 days. + This control only verifies that deferred software updates are not deferred for more than 30 days. + resolution: "Ask your system administrator to deploy an MDM profile configures update deferment to a value of 30 days or less." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='enforcedSoftwareUpdateDelay' AND + value <= 30 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='enforcedSoftwareUpdateDelay' AND + value > 30 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure iCloud Drive storage solution is disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + iCloud Drive is Apple's storage solution for applications on both macOS and iOS to use the same files that are resident in Apple's cloud storage. The iCloud Drive folder is available much like Dropbox, Microsoft OneDrive, or Google Drive. + One of the concerns in public cloud storage is that proprietary data may be inappropriately stored in an end user's personal repository. Organizations that need specific controls on information should ensure that this service is turned off or the user knows what information must be stored on services that are approved for storage of controlled information. + This query will check for the existence of the policy not its value (That should be set per organization's decision) + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDocumentSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Drive storage solution is enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + iCloud Drive is Apple's storage solution for applications on both macOS and iOS to use the same files that are resident in Apple's cloud storage. The iCloud Drive folder is available much like Dropbox, Microsoft OneDrive, or Google Drive. + One of the concerns in public cloud storage is that proprietary data may be inappropriately stored in an end user's personal repository. Organizations that need specific controls on information should ensure that this service is turned off or the user knows what information must be stored on services that are approved for storage of controlled information. + This query will check for the existence of the policy not its value (That should be set per organization's decision) + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDocumentSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDocumentSync' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Keychain is disabled (if your org policy is to disable it) (MDM Required) + # platforms: macOS + platform: darwin + description: | + The iCloud keychain is Apple's password manager that works with macOS and iOS. The capability allows users to store passwords in either iOS or macOS for use in Safari on both platforms and other iOS-integrated applications. The most pervasive use is driven by iOS use rather than macOS. The passwords stored in a macOS keychain on an Enterprise-managed computer could be stored in Apple's cloud and then be available on a personal computer using the same account. The stored passwords could be for organizational as well as for personal accounts. + If passwords are no longer being used as organizational tokens, they are not in scope for iCloud keychain storage. + Rationale: + Ensure that the iCloud keychain is used consistently with organizational requirements. + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudKeychainSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Keychain is enabled (if your org policy is to enable it) (MDM Required) + # platforms: macOS + platform: darwin + description: | + The iCloud keychain is Apple's password manager that works with macOS and iOS. The capability allows users to store passwords in either iOS or macOS for use in Safari on both platforms and other iOS-integrated applications. The most pervasive use is driven by iOS use rather than macOS. The passwords stored in a macOS keychain on an Enterprise-managed computer could be stored in Apple's cloud and then be available on a personal computer using the same account. The stored passwords could be for organizational as well as for personal accounts. + If passwords are no longer being used as organizational tokens, they are not in scope for iCloud keychain storage. + Rationale: + Ensure that the iCloud keychain is used consistently with organizational requirements. + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudKeychainSync. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudKeychainSync' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure iCloud Drive Document and Desktop Sync Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Automated Document synchronization should be planned and controlled to approved storage. + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is allowCloudDesktopAndDocuments. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDesktopAndDocuments' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowCloudDesktopAndDocuments' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: zwass + +- name: CIS - Ensure Firewall Is Enabled + # platforms: macOS + platform: darwin + description: A firewall minimizes the threat of unauthorized users gaining access to your system while connected to a network or the Internet. + resolution: "Go to the Network pane in System Settings and ensure Firewall is active." + query: SELECT 1 FROM alf WHERE global_state >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Firewall Stealth Mode Is Enabled + # platforms: macOS + platform: darwin + description: | + While in Stealth mode, the computer will not respond to unsolicited probes, dropping that traffic. + Stealth mode on the firewall minimizes the threat of system discovery tools while connected to a network or the Internet. + resolution: | + Perform the following steps to enable firewall stealth mode: + 1. Open System Settings + 2. Select Network + 3. Select Firewall + 4. Select Options... + 5. Set Enabled stealth mode to enabled + query: SELECT 1 FROM alf WHERE global_state >= 1 AND stealth_enabled = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure AirDrop Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + AirDrop can allow malicious files to be downloaded from unknown sources. + Contacts Only limits may expose personal information to devices in the same area. + resolution: | + Ask your system administrator to deploy an MDM profile that disables AirDrop. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAirDrop + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirDrop' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirDrop' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure AirPlay Receiver Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + In macOS Monterey (12.0), Apple has added the capability to share content from + another Apple device to the screen of a host Mac. While there are many valuable uses + of this capability, such sharing on a standard Mac user workstation should be enabled + ad hoc as required rather than allowing a continuous sharing service. The feature can + be restricted by Apple ID or network and is configured to use by accepting the + connection on the Mac. Part of the concern is frequent connection requests may + function as a denial-of-service and access control limits may provide too much + information to an attacker. + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAirPlayIncomingRequests + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirPlayIncomingRequests' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAirPlayIncomingRequests' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Set Time and Date Automatically Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Ensure that the system is configured to set the date and time automatically from a network time server. Accurate time is critical for log correlation, certificate validation, and Kerberos authentication. + resolution: | + The administrator should configure this via MDM profile. + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess. + 2. The key to include is forceAutomaticDateAndTime. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceAutomaticDateAndTime' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceAutomaticDateAndTime' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure the Time Service Is Enabled + # platforms: macOS + platform: darwin + description: | + In macOS 10.14, Apple replace ntp with timed for time services, and is used to ensure correct time is kept. Correct date and time settings are required for authentication protocols, file creation, modification dates and log entries. + resolution: | + Ask your system administrator to deploy a script that will configure: + /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.timed.plist + query: | + SELECT 1 WHERE EXISTS(SELECT * FROM processes WHERE path = '/usr/libexec/timed'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth + +- name: CIS - Ensure Screen Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Screen Sharing allows a computer to connect to another computer on a network and + display the computer’s screen. While sharing the computer’s screen, the user can + control what happens on that computer, such as opening documents or applications, + opening, moving, or closing windows, and even shutting down the computer. + Disabling Screen Sharing mitigates the risk of remote connections being made without + the user of the console knowing that they are sharing the computer. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Screen Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.screensharing' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure File Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + File sharing from a user workstation creates additional risks by + increasing complexity and making security more difficult. Hardened + file servers should be used instead of workstations + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set File Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.smbd' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Printer Sharing is Disabled + # platforms: macOS + platform: darwin + description: | + By enabling Printer Sharing, the computer is set up as a + print server to accept print jobs from other computers. + Dedicated print servers or direct IP printing should be used instead. + Disabling Printer Sharing mitigates the risk of attackers + attempting to exploit the print server to gain access to the system. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Printer Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM file_lines WHERE + path = '/etc/cups/cupsd.conf' AND + line LIKE '%Allow @LOCAL%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Remote Login Is Disabled + # platforms: macOS + platform: darwin + description: | + Remote Login allows an interactive terminal session to a computer. + The SSH server built into macOS should not be enabled on a standard user computer, + particularly one that changes locations and IP addresses. + A standard user that runs local applications, including email, web browser, + and productivity tools, should not use the same device as a server + + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Login to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.openssh.sshd' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Remote Management is Disabled + # platforms: macOS + platform: darwin + description: | + Remote Management is the client portion of Apple Remote Desktop (ARD). + Remote Management can be used by remote administrators to view the current screen, + install software, report on, and generally manage client Macs. + Remote Management should only be enabled on trusted networks with strong + user controls present in a Directory system. + Mobile devices without strict controls are vulnerable to exploit and monitoring. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Management to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM processes WHERE + path = '/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Remote Apple Events is Disabled + # platforms: macOS + platform: darwin + description: | + Apple Events is a technology that allows one program to communicate with other programs. + Remote Apple Events allows a program on one computer to communicate with a program on a + different computer. Disabling Remote Apple Events mitigates the risk of an unauthorized + program gaining access to the system. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Remote Apple Events to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path = '/var/db/com.apple.xpc.launchd/disabled.plist' AND + key = 'com.apple.AEServer' AND + value = '0' + ); + # We are not using the launchd table because it does not check if services + # are disabled via disabled.plist, which the preference pane uses whenever + # a service is disabled after it has been enabled in the past. + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Internet Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Internet Sharing uses the open source natd process to share an internet connection with other + computers and devices on a local network. This allows the Mac to function as a router and share + the connection to other, possibly unauthorized, devices. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Internet Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM plist WHERE + path = '/Library/Preferences/SystemConfiguration/com.apple.nat.plist' AND + key = 'NAT' AND + subkey = 'Enabled' AND + value = '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Content Caching Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Starting with 10.13 (macOS High Sierra), Apple introduced a service to make it easier to deploy data from Apple, including software updates, where there are bandwidth constraints to the Internet and fewer constraints or greater bandwidth exist on the local subnet. This capability can be very valuable for organizations that have throttled and possibly metered Internet connections. In heterogeneous enterprise networks with multiple subnets, the effectiveness of this capability would be determined by how many Macs were on each subnet at the time new, large updates were made available upstream. This capability requires the use of mac OS clients as P2P nodes for updated Apple content. Unless there is a business requirement to manage operational Internet connectivity and bandwidth user endpoints should not store content and act as a cluster to provision data. + resolution: | + Graphical Method: + Perform the following steps to disable Content Caching: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Content Caching to disabled + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowContentCaching + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowContentCaching' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowContentCaching' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Bluetooth Sharing Is Disabled + # platforms: macOS + platform: darwin + description: | + Bluetooth Sharing allows files to be exchanged with Bluetooth-enabled devices. This + setting only disables the receiving of files and requires both devices to be paired + through Bluetooth as well as accepted by the receiver. This setting does not disable the + ability to send files from the device to another paired Bluetooth device. + Bluetooth pairing only requires an acceptance dialog on either device attempting to pair. + It does require the Bluetooth pane in System Settings to be open for any macOS + device to be discoverable. While it does give a verification code, it does not require + either device to enter the code, but just accept the dialog box (on either device). At that + point, the two devices are paired and files can be shared through Bluetooth. To receive + files through Bluetooth File Exchange application, the user does have to accept the + file(s) through a dialog box. + Users should only pair to known trusted Bluetooth devices. + resolution: | + Graphical Method: + 1. Open System Settings + 2. Select General + 3. Select Sharing + 4. Set Bluetooth Sharing to disabled + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/ByHost/com.apple.Bluetooth.%.plist' AND + key = 'PrefKeyServicesEnabled' AND + value = '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Media Sharing Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Starting with macOS 10.15, Apple has provided a control which permits a user to share + Apple downloaded content on all Apple devices that are signed in with the same Apple ID. + This allows users to share downloaded Movies, Music, or TV shows with other + controlled macOS, iOS and iPadOS devices, as well as photos with Apple TVs. + Disabling Media Sharing reduces the remote attack surface of the system + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowMediaSharing + 3. The key must be set to + 4. The key to also include is allowMediaSharingModification + 5. The key must be set to + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowMediaSharing' AND + (value = 0 OR value = 'false') + ) AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowMediaSharingModification' AND + (value = 0 OR value = 'false') + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowMediaSharing' AND + (value != 0 AND value != 'false') + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowMediaSharingModification' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: getvictor + +- name: CIS - Ensure Backup Automatically is Enabled If Time Machine Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Backup solutions are only effective if the backups run on a regular basis. + The time to check for backups is before the hard drive fails or the computer goes missing. + In order to simplify the user experience so that backups are more likely to occur, + Time Machine should be on and set to Back Up Automatically whenever the target volume is available. + + FDA (Full Disk Access) is required to read the /Library/Preferences/com.apple.TimeMachine.plist + file that contains the Time Machine configuration and backup destinations. + resolution: | + Ask your system administrator to deploy an MDM profile that enables automatic backup if Time Machine is enabled. + The system administrator can do one of: + A. Disable Time Machine on the device. + B. Run the following command to enable automatic backup on Time Machine destinations: + /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true + query: | + SELECT 'no time machine backups' as output + FROM (SELECT COUNT(*) as c FROM time_machine_backups) t1 WHERE t1.c = 0 + UNION + SELECT 'time machine automatic backup set to true' as output + FROM plist WHERE path='/Library/Preferences/com.apple.TimeMachine.plist' + AND key='AutoBackup' AND (value = 1 OR value = 'true'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure Time Machine Volumes Are Encrypted If Time Machine Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Backup solutions are only effective if the backups run on a regular basis. + The time to check for backups is before the hard drive fails or the computer goes missing. + In order to simplify the user experience so that backups are more likely to occur, + Time Machine should be on and set to Back Up Automatically whenever the target volume is available. + + FDA (Full Disk Access) is required to read the /Library/Preferences/com.apple.TimeMachine.plist + file that contains the Time Machine configuration and backup destinations. + resolution: | + Graphical Method: + Perform the following steps to enable encryption on the Time Machine drive: + 1. Open `System Settings`. + 2. Select `General`. + 3. Select `Time Machine`. + 4. Select the unencrypted drive. + 5. Select `-` to forget that drive as a destination. + 6. Select `+` to add a different drive as the destination. + 7. Select `Set Up Disk...`. + 8. Set Encrypt Backup to enabled. + 9. Enter a password in the `New Password` and the same password in the `Re-enter Password` fields. + 10. A password hint is required, but it is recommended that you do not use any identifying information for the password + query: | + SELECT 'no time machine destinations configured' as output + FROM (SELECT COUNT(*) as c FROM time_machine_destinations) t1 WHERE t1.c = 0 + UNION + SELECT 'time machines destinations with encryption with automatic backup' as output + FROM (SELECT COUNT(*) as c FROM time_machine_destinations WHERE encryption <> 'Encrypted') t2 WHERE t2.c = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Show Wi-Fi status in Menu Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The Wi-Fi status in the menu bar indicates if the system's wireless internet capabilities are enabled. + If so, the system will scan for available wireless networks in order to connect. + Enabling "Show Wi-Fi status in menu bar" is a security awareness method that helps mitigate public area + wireless exploits by making the user aware of their wireless connectivity status. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Wi-Fi status in the menu bar. + Ask your administrator to deploy a profile with the following configuration: + 1. The `PayloadType` string is `com.apple.controlcenter`. + 2. The key to include is `WiFi`. + 3. The key must be set to `18`. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='WiFi' AND + value = 18 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='WiFi' AND + value != 18 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Show Bluetooth Status in Menu Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Enabling "Show Bluetooth status in menu bar" is a security awareness method that + helps understand the current state of Bluetooth, including whether it is enabled, + discoverable, what paired devices exist, and what paired devices are currently active. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Ask your administrator to deploy a profile with the following configuration: + 1. The `PayloadType` string is `com.apple.controlcenter`. + 2. The key to include is `Bluetooth`. + 3. The key must be set to `18`. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='Bluetooth' AND + value = 18 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.controlcenter' AND + name='Bluetooth' AND + value != 18 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Siri is disabled (MDM required) + # platforms: macOS + platform: darwin + description: | + With macOS 10.12 Sierra, Apple has introduced Siri from iOS to macOS. While there are data spillage concerns with the use of data-gathering personal assistant software, the risk here does not seem greater in sending queries to Apple through Siri than in sending search terms in a browser to Google or Microsoft. While it is possible that Siri will be used for local actions rather than Internet searches, Siri could, in theory, tell Apple about confidential Programs and Projects that should not be revealed. This appears to be a usage edge case. + In cases where sensitive or protected data is processed and Siri could expose that information through assisting a user in navigating their machine, it should be disabled. Siri does need to phone home to Apple, so it should not be available from air-gapped networks as part of its requirements. + Most of the use case data published has shown that Siri is a tremendous time saver on iOS where multiple screens and menus need to be navigated through. Information like sports scores, weather, movie times, and simple to-do items on existing calendars can be easily found with Siri. None of the standard use cases should be more risky than already approved activity. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowAssistant + 3. Set the key to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAssistant' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowAssistant' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure Siri field TypeToSiriEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri TypeToSiriEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist TypeToSiriEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'TypeToSiriEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field TypeToSiriEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri TypeToSiriEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist TypeToSiriEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'TypeToSiriEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field StatusMenuVisible is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri StatusMenuVisible field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist StatusMenuVisible -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'StatusMenuVisible' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field StatusMenuVisible is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri StatusMenuVisible field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist StatusMenuVisible -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'StatusMenuVisible' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field VoiceTriggerUserEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri VoiceTriggerUserEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist VoiceTriggerUserEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'VoiceTriggerUserEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field VoiceTriggerUserEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri VoiceTriggerUserEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist VoiceTriggerUserEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'VoiceTriggerUserEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field LockscreenEnabled is true (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri LockscreenEnabled field is true. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist LockscreenEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'LockscreenEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Siri field LockscreenEnabled is false (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Extension of CIS-2.5.1. This will check that Siri LockscreenEnabled field is false. + resolution: | + Ask your system administrator to deploy a script that will configure + $ /usr/bin/sudo -u /usr/bin/defaults write com.apple.Siri.plist LockscreenEnabled -bool false + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/com.apple.Siri.plist' AND + key = 'LockscreenEnabled' AND + value = '0') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/com.apple.Siri.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Enabled + # platforms: macOS + platform: darwin + description: Checks that Location Services option is enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables automatic updates of Apple apps. + Graphical method: + Perform the following steps to enable Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Verify Location Services is enabled + query: SELECT 1 FROM location_services where enabled=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Show Location Icon in Control Center when System Services Request Your Location' Is Enabled + # platforms: macOS + platform: darwin + description: This setting provides the user an understanding of the current status of Location Services and which applications are using it. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the "location services" icon in menu bar when System Services request your location. + Graphical method: + Perform the following steps to enable Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Select Details... + 5. Verify Show location icon in menu bar when System Services request your + location is set to your organization's parameters + query: SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.locationmenu.plist' AND key='ShowSystemServices' AND value=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Disabled to all applications (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. While Location Services may be very useful, it may not be desirable to allow all applications that can use Location Services to use your location for Internet queries in order to provide tailored content based on your current location. + Ensure applications that can use Location Services are authorized and provide that information where the application interacts with external systems. Apple offers feedback within System Preferences and may be enabled to supply information on the menu bar when Location Services are used. + Safari can deny access from websites or prompt for access. + Applications that support Location Services can be individually controlled in the Privacy tab in Security & Privacy under System Preferences. + Access should be evaluated to ensure that privacy controls are as expected. + This query verifies that location services is disabled for all apps. + resolution: | + Graphical Method: + Perform the following steps to disable unnecessary applications from accessing Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Set Location Services to disabled. + query: SELECT 1 FROM location_services WHERE enabled = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Location Services Is Enabled for a specific list of applications (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + macOS uses location information gathered through local Wi-Fi networks to enable applications to supply relevant information to users. While Location Services may be very useful, it may not be desirable to allow all applications that can use Location Services to use your location for Internet queries in order to provide tailored content based on your current location. + Ensure applications that can use Location Services are authorized and provide that information where the application interacts with external systems. Apple offers feedback within System Preferences and may be enabled to supply information on the menu bar when Location Services are used. + Safari can deny access from websites or prompt for access. + Applications that support Location Services can be individually controlled in the Privacy tab in Security & Privacy under System Preferences. + Access should be evaluated to ensure that privacy controls are as expected. + This query verifies that location services is enabled and a specific list of application can use it. + resolution: | + Graphical Method: + Perform the following steps to disable unnecessary applications from accessing Location Services: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Location Services + 4. Set any applications listed to your organization's requirements + 5. Select System Services + 6. Set any System Services listed to your organization's requirements + query: | + -------------------------------------------------------------------------------------------------------- + + -- Instructions for running and modifying this query: + -- Put the list of allowed applications in the designated area below. + -- To see what apps are currently allowed (and get the exact name format of the app name), use this query: + -- SELECT * FROM plist WHERE + -- path='/var/db/locationd/clients.plist' + -- AND subkey = "Authorized" + -- AND value = '1'; + -------------------------------------------------------------------------------------------------------- + + SELECT 1 WHERE + -- If location_services is not allowed at all, we are good. + EXISTS( + SELECT 1 FROM location_services WHERE enabled = 0 + ) + OR + -- If location_services is allowed, make sure allowed apps are approved. + NOT EXISTS( + SELECT 1 FROM plist WHERE + path='/var/db/locationd/clients.plist' + AND subkey = "Authorized" + AND value = '1' + AND NOT( + --------------------------------------------------------------------------------- + + -- Designated area to add applications allowed to use location-services + --------------------------------------------------------------------------------- + + -- Typical app name + key LIKE "%:com.apple.TV" + OR + -- Typical system service name + key LIKE "%com.apple.locationd.bundle-/System/Library/PrivateFrameworks/CoreParsec.framework" + OR + key LIKE "%:com.apple.locationd.bundle-/System/Library/LocationBundles/DoNotDisturb.bundle" + --------------------------------------------------------------------------------- + + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Limit Ad Tracking Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Ensure Limit Ad Tracking Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables apple personalized advertising. + Graphical method: + Perform the following steps to ensure Limit Ad Tracking Is Enabled: + 1. Open Privacy & Security + 2. Select Apple Advertising + 3. Verify that Personalized Ads is not enabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowApplePersonalizedAdvertising' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowApplePersonalizedAdvertising' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure an Administrator Password Is Required to Access System-Wide Preferences (Fleetd required) + # platforms: macOS + platform: darwin + description: Checks that an Administrator Password Is Required to Access System-Wide Preferences + resolution: | + Graphical method: + Perform the following steps to ensure an administrator password is required to access system-wide preferences: + 1. Open System Settings + 2. Open Privacy & Security + 3. Select Advanced + 4. Set Require an administrator password to access system-wide settings to enabled + query: SELECT 1 FROM authdb WHERE right_name = 'system.preferences' AND json_extract(json_result, '$.shared') == 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Screen Saver Corners Are Secure (FDA Required) + # platforms: macOS + platform: darwin + description: | + Setting a hot corner to disable the screen saver poses a potential security risk since an + unauthorized person could use this to bypass the login screen and gain access to the system. + + FDA (Full Disk Access) is required to read the configuration of all the users in the device + ('/Users/*/Library/Preferences/com.apple.dock.plist') + resolution: | + Ask your system administrator to deploy a script that will configure + `wvous-tl-corner`, `wvous-bl-corner`, `wvous-tr-corner`, and `wvous-br-corner` in + domain `com.apple.dock` to a value that is not 6 (for all users of the device). + + Graphical Method: + Perform the following steps to ensure that a Hot Corner is not set to Disable Screen Saver: + 1. Open System Settings + 2. Select Desktop & Dock + 3. Select`Hot Corners...` + 4. Verify that `Disable Screen Saver` is not set to any of the corners. + query: | + SELECT 1 WHERE NOT EXISTS( + SELECT 1 FROM plist + WHERE path LIKE '/Users/%/Library/Preferences/com.apple.dock.plist' AND ( + key = 'wvous-br-corner' OR + key = 'wvous-bl-corner' OR + key = 'wvous-tr-corner' OR + key = 'wvous-tl-corner' + ) AND value = 6); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure Universal Control is enabled (Based on organization's policy) (MDM Required) + # platforms: macOS + platform: darwin + description: | + Universal Control is an Apple feature that allows Mac users to control multiple other Macs and iPads with the same keyboard, mouse, and trackpad using the same Apple ID. The technology relies on already available iCloud services, particularly Handoff. + Universal Control simplifies the use of iCloud connectivity of multiple computers using the same Apple ID. This may simplify data transfer from organizationally-managed and personal devices. The use of the same iCloud account and Handoff is the underlying concern that should be evaluated. The use of the same keyboard or mouse across multiple devices does not by itself decrease organizational security. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Ask your administrator to deploy a profile with the following configuration: + 1. The `PayloadType` string is com.apple.universalcontrol. + 2. The key to include is 'Disable'. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value != 0 AND value != 'false') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Universal Control is disabled (Based on organization's policy) (MDM Required) + # platforms: macOS + platform: darwin + description: | + Universal Control is an Apple feature that allows Mac users to control multiple other Macs and iPads with the same keyboard, mouse, and trackpad using the same Apple ID. The technology relies on already available iCloud services, particularly Handoff. + Universal Control simplifies the use of iCloud connectivity of multiple computers using the same Apple ID. This may simplify data transfer from organizationally-managed and personal devices. The use of the same iCloud account and Handoff is the underlying concern that should be evaluated. The use of the same keyboard or mouse across multiple devices does not by itself decrease organizational security. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables the Bluetooth status in the menu bar. + Ask your administrator to deploy a profile with the following configuration: + 1. The `PayloadType` string is com.apple.universalcontrol. + 2. The key to include is 'Disable'. + 3. The key must be set to . + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.universalcontrol' AND + name='Disable' AND + (value != 1 AND value != 'true') + ); + /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). + Depending on your organization's decision, you can delete this policy or its counterpart.*/ + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: sharon-fdm + +- name: CIS - Ensure Power Nap Is Disabled for Intel Macs (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Power Nap allows the system to stay in low power mode, especially while on battery power, and periodically + connect to previously known networks with stored credentials for user applications to phone home and get updates. + This capability requires FileVault to remain unlocked and the use of previously joined networks to be risk accepted + based on the SSID without user input. + Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following command to turn off + Power Nap on the device: + /usr/bin/sudo /usr/bin/pmset -a powernap 0 + query: | + SELECT 1 FROM (SELECT + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.AC Power:'), + '$.powernap' + ), '') AS powernap_ac, + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.Battery Power:'), + '$.powernap' + ), '') AS powernap_battery + FROM pmset WHERE getting = 'custom' AND powernap_battery != '1' AND powernap_ac != '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure sleep and display sleep is enabled on Apple Silicon devices (Fleetd required) + # platforms: macOS + platform: darwin + description: | + MacBooks should be set so that the sleep is 15 minutes or less and the + display should sleep at 10 minutes or less. This setting should allow laptop + users in most cases to stay within physically secured areas while going to a + conference room, auditorium, or other internal location without having to + unlock the encryption. When the user goes home at night, the laptop will + auto-sleep after 15 minutes and to log back into the system when it resumes. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following + commands to set the sleep time and display sleep: + /usr/bin/sudo /usr/bin/pmset -a sleep 15 + /usr/bin/sudo /usr/bin/pmset -a displaysleep 10 + query: | + SELECT 1 AS result + WHERE + -- Pass if not Apple Silicon + NOT EXISTS ( + SELECT 1 FROM system_info WHERE cpu_type LIKE 'arm64%' + ) + OR + -- For Apple Silicon, check sleep settings (Battery Power if available, otherwise AC Power) + EXISTS ( + SELECT 1 + FROM ( + SELECT + CASE + WHEN JSON_EXTRACT(json_result, '$.Battery Power:') IS NOT NULL + THEN JSON_EXTRACT(json_result, '$.Battery Power:') + ELSE JSON_EXTRACT(json_result, '$.AC Power:') + END AS power_settings + FROM pmset + WHERE getting = 'custom' + ) + WHERE + -- Require sleep setting to be 15 minutes or less + CAST(JSON_EXTRACT(power_settings, '$.sleep') AS INTEGER) <= 15 + AND + -- Require display sleep to be 10 minutes or less AND less than or equal to sleep value + CAST(JSON_EXTRACT(power_settings, '$.displaysleep') AS INTEGER) <= 10 + AND + CAST(JSON_EXTRACT(power_settings, '$.displaysleep') AS INTEGER) <= CAST(JSON_EXTRACT(power_settings, '$.sleep') AS INTEGER) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: getvictor + +- name: CIS - Ensure Wake for Network Access Is Disabled (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Wake for Network Access allows the computer to take action when the user is not present and the computer + is in energy saving mode. These tools require FileVault to remain unlocked and fully rejoin known networks. + + Disabling this feature mitigates the risk of an attacker remotely waking the system and gaining access. + resolution: | + Automated method: + Ask your system administrator to deploy a script that runs the following command to turn off + Wake on on the device: + /usr/bin/sudo /usr/bin/pmset -a womp 0 + query: | + SELECT 1 FROM (SELECT + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.AC Power:'), + '$.womp' + ), '') AS womp_ac, + COALESCE(JSON_EXTRACT( + JSON_EXTRACT(json_result, '$.Battery Power:'), + '$.womp' + ), '') AS womp_battery + FROM pmset WHERE getting = 'custom' AND womp_battery != '1' AND womp_ac != '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure the OS is not Active When Resuming from Sleep (Fleetd, FDA Required) + # platforms: macOS + platform: darwin + description: | + In order to use a computer with Full Disk Encryption (FDE), macOS must keep encryption keys in memory to allow + the use of the disk that has been FileVault protected. When the system is not in use, the volume is protected + through encryption. When the system is sleeping and available to quickly resume, the encryption keys remain in memory. + If an unauthorized party has possession of the computer and the computer is only slept, there are known attack vectors + that can be attempted against the RAM that has the encryption keys or the running operating system protected + by a login screen. + + MacBooks should be set so that the `standbydelay` is 15 minutes (900 seconds) or less. + Mac systems should be set to hibernate after sleeping for a risk-acceptable time period. + Organizations may still decide to use hibernate after sleeping if there is a security need + (ex. international travel), but it can cause kernel panics in Apple Silicon Macs. + resolution: | + Ask your system administrator to deploy the following script to Macbook devices: + if [[ $(uname -m) == 'arm64' ]]; then + # Apple silicon + /usr/bin/sudo /usr/bin/pmset -a standby 900 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + else + # Intel + /usr/bin/sudo /usr/bin/pmset -a standbydelaylow 900 + /usr/bin/sudo /usr/bin/pmset -a standbydelayhigh 900 + /usr/bin/sudo /usr/bin/pmset -a highstandbythreshold 90 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 + fi + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE + regex_match(hardware_model, '^Mac[0-9,]+$', 0) != '' OR regex_match(hardware_model, '^MacBook', 0) != 0 + ) + AND EXISTS( + SELECT JSON_EXTRACT(system_wide_power_settings, '$.DestroyFVKeyOnStandby') AS destroy_fv_key_on_standby + FROM ( + SELECT JSON_EXTRACT(json_result, '$.System-wide power settings:') AS system_wide_power_settings FROM pmset + ) + WHERE destroy_fv_key_on_standby = '1' + ) + AND EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE cpu_type = 'x86_64h' OR cpu_type = 'x86_64' + ) AND EXISTS( + SELECT + CAST(JSON_EXTRACT(battery, '$.standbydelaylow') AS INTEGER) AS standbydelaylow, + CAST(JSON_EXTRACT(battery, '$.standbydelayhigh') AS INTEGER) AS standbydelayhigh, + CAST(JSON_EXTRACT(battery, '$.highstandbythreshold') AS INTEGER) AS highstandbythreshold, + CAST(JSON_EXTRACT(battery, '$.hibernatemode') AS INTEGER) AS hibernatemode + FROM ( + SELECT JSON_EXTRACT(json_result, '$.Battery Power:') as battery FROM pmset WHERE getting = 'custom' + ) + WHERE standbydelaylow <= 900 AND standbydelayhigh <= 900 AND highstandbythreshold >= 90 AND hibernatemode = 25 + ) + ) OR EXISTS( + SELECT 1 WHERE EXISTS( + SELECT 1 FROM system_info WHERE cpu_type LIKE 'arm64%' + ) AND EXISTS ( + SELECT + CAST(JSON_EXTRACT(battery, '$.standby') AS INTEGER) AS standby + FROM ( + SELECT JSON_EXTRACT(json_result, '$.Battery Power:') AS battery FROM pmset WHERE getting = 'custom' + ) + WHERE standby <= 900 + ) + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled. + Graphical method: + Perform the following steps to ensure a Password is Required to Wake the Computer From Sleep or Screen Saver Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Require password after screensaver begins or display is turned + off is set with After 0 seconds or After 5 seconds + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPassword' AND + (value = 1 OR value = 'true') + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPasswordDelay' AND + value <= 5 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPassword' AND + (value != 1 AND value != 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='askForPasswordDelay' AND + value > 5 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Gatekeeper Is Enabled + # platforms: macOS + platform: darwin + description: | + Checks that Gatekeeper Is Enabled. Gatekeeper is Apple’s application that utilizes allowlisting to restrict downloaded applications from launching. It functions as a control to limit applications from unverified sources from running without authorization. In an update to Gatekeeper in macOS 13 Ventura, Gatekeeper checks every application on every launch, not just quarantined apps. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Gatekeeper Is Enabled + Graphical method: + Perform the following steps to ensure Gatekeeper Is Enabled: + 1. Open System Settings + 2. Select Privacy & Security + 3. Verify that 'Allow apps downloaded from' is set to' App Store and identified developers' + query: SELECT 1 FROM gatekeeper WHERE assessments_enabled = 1 AND dev_id_enabled = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Sending Diagnostic and Usage Data to Apple Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that Sending Diagnostic and Usage Data to Apple Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Sending Diagnostic and Usage Data to Apple. + Graphical method: + Perform the following steps to ensure Sending Diagnostic and Usage Data to Apple Is Disabled: + 1. Open System Settings + 2. Select Privacy & Security + 3. Select Analytics & Improvements + 4. Verify that Share Mac Analytics is not enabled + 5. Verify that Share with App Developers is not enabled + 6. Verify that Improve Siri & Dictation is not enabled + 7. Verify that Improve Assistive Voice Features is not enabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SubmitDiagInfo' AND + name='AutoSubmit' AND + (value = 0 OR value = 'false') + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='allowDiagnosticSubmission' AND + (value = 0 OR value = 'false') + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Accessibility' AND + name='AXSAudioDonationSiriImprovementEnabled' AND + (value = 0 OR value = 'false') + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Siri Data Sharing Opt-In Status' AND + value = 2 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.SubmitDiagInfo' AND + name='Disable' AND + (value != 0 AND value != 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Disable' AND + (value != 0 AND value != 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='Disable' AND + value != 2 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: A locking screen saver is one of the standard security controls to limit access to a computer and the current user's session when the computer is temporarily unused or unattended. In macOS, the screen saver starts after a value is selected in the drop- down menu. 20 minutes or less is an acceptable value. Any value can be selected through the command line or script, but a number that is not reflected in the GUI can be problematic. 20 minutes is the default for new accounts. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver to be Enabled. + Graphical method: + Perform the following steps to ensure an Inactivity Interval of 20 Minutes Or Less for the Screen Saver Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Start Screen Saver when inactive is set for 20 minutes or less (≤1200 seconds) + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='idleTime' AND + CAST(value AS INT) <= 1200 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.screensaver' AND + name='idleTime' AND + CAST(value AS INT) > 1200 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure a Custom Message for the Login Screen Is Enabled + # platforms: macOS + platform: darwin + description: An access warning informs the user that the system is reserved for authorized use only, and that the use of the system may be monitored + resolution: | + Graphical method: + Perform the following steps to ensure a Custom Message for the Login Screen Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify Show message when locked is enabled + 4. Select Set + 5. Verify that the message displayed is configured to your organization's required text + query: SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.loginwindow.plist' AND key='LoginwindowText' AND value != ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure FileVault Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks that FileVault Is Enabled. FileVault secures a system's data by automatically encrypting its boot volume and requiring a password or recovery key to access it. This policy checks that filevault is enabled on the device and that the user is not allowed to disable it. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that enables FileVault and disables turning it off. + Graphical method: + Perform the following steps to ensure FileVault Is Enabled: + 1. Open System Settings + 2. Select Privacy & Privacy + 3. Verify that FileVault states FileVault is turned on for the disk "" + 4. Select Privacy & Security + 5. Select Profile + 6. Verify that an installed profile has FileVault Can't Disable set to True + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value != 1 AND value != 'true') + ) + AND EXISTS ( + SELECT 1 FROM disk_encryption WHERE + user_uuid IS NOT "" AND + filevault_status = 'on' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Login Window Displays as Name and Password Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks Login Window Displays as Name and Password Is Enabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Login Window Displays as Name and Password Is Enabled. + Graphical method: + Perform the following steps to ensure Login Window Displays as Name and Password Is Enabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Login window shows is set to Name and Password + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='SHOWFULLNAME' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='SHOWFULLNAME' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Show Password Hints Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: Checks Show Password Hints Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensures Show Password Hints Is Disabled. + Graphical method: + Perform the following steps to ensure Show Password Hints Is Disabled: + 1. Open System Settings + 2. Select Lock Screen + 3. Verify that Show password hints is disabled + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='RetriesUntilHint' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='RetriesUntilHint' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Users' Accounts Do Not Have a Password Hint (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Password hints help the user recall their passwords for various systems and/or accounts. In most cases, password hints are simple and closely related to the user's password. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables apple personalized advertising. + Graphical method: + Perform the following steps to ensure Users' Accounts Do Not Have a Password Hint: + 1. Open System Settings + 2. Select Touch ID & Passwords (or Login Password on non-Touch ID Macs) + 3. Select Change... + 4. Change the password and ensure that no text is entered in the Password hint box + query: SELECT 1 FROM user_login_settings WHERE password_hint_enabled = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Guest Account Is Disabled + # platforms: macOS + platform: darwin + description: Checks that Guest Account Is Disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Guest Account. + Graphical method: + Perform the following steps to ensure Guest Account Is Disabled: + 1. Open System Settings + 2. Select Users & Groups + 3. Select the i next to the Guest User + 4. Verify that Allow guests to log in to this computer is disable + query: | + SELECT 1 FROM plist WHERE path='/Library/Preferences/com.apple.loginwindow.plist' AND key='GuestEnabled' AND value = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Guest Access to Shared Folders Is Disabled + # platforms: macOS + platform: darwin + description: Allowing guests to connect to shared folders enables users to access selected shared folders and their contents from different computers on a network + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will disable guest users from access to shared folders: + /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off + Graphical Method: + Perform the following steps to no longer allow guest user access to shared folders: + 1. Open System Settings + 2. Select Users & Groups + 3. Select the i next to the Guest User + 4. Set Allow guests to connect to shared folders to disabled + query: SELECT 1 from plist where path = '/Library/Preferences/SystemConfiguration/com.apple.smb.server.plist' AND key = 'AllowGuestAccess' AND value = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Automatic Login Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The automatic login feature saves a user's system access credentials and bypasses the login screen. Instead, the system automatically loads to the user's desktop screen + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Automatic Login Is Disabled + Graphical method: + Perform the following steps to ensure Automatic Login Is Disabled: + 1. Open System Settings + 2. Select Users & Groups + 3. Set Automatic login in as... to Off + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The Payload Type string is com.apple.loginwindow + 2. The key to include is com.apple.login.mcx.DisableAutoLoginClient + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='com.apple.login.mcx.DisableAutoLoginClient' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='com.apple.login.mcx.DisableAutoLoginClient' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure On-Device Dictation Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + In macOS 14.0 Sonoma, Apple released the ability to limit dictation to staying on-device and not sending data to the Siri severs. The use of dictation is likely to include editing + documents with confidential information. While Apple does have controls to obfuscate voice data that exists on their servers it is recommended that Dictation collected information does not leave the local Mac. + resolution: "Ask your system administrator to deploy an MDM profile that enables On-Device Dictation." + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceOnDeviceOnlyDictation' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.applicationaccess' AND + name='forceOnDeviceOnlyDictation' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS-macos-2-18.1, NEEDS_TESTING + # contributors: DefensiveDepth + +- name: CIS - Ensure Security Auditing Is Enabled + # platforms: macOS + platform: darwin + description: | + macOS's audit facility, auditd, receives notifications from the kernel when certain system calls, such as open, fork, and exit, are made. These notifications are captured and written to an audit log. Apple has deprecated auditd as of macOS 11.0 Big Sur. In macOS 14.0 Sonoma it is no longer enabled by default.. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will enable security auditing and create the audit_control file:: + /usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist + /usr/bin/sudo /bin/cp /etc/security/audit_control.example /etc/security/audit_control + query: | + SELECT 1 WHERE EXISTS ( + SELECT + l.program, l.label, l.program_arguments, + p.path, p.name , p.cmdline + FROM + launchd AS l + INNER JOIN processes AS p + ON (l.program = p.path) + WHERE + (l.label = "com.apple.auditd") + AND + (l.program_arguments = p.cmdline) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Flags For User-Attributable Events Are Configured Per Local Organizational Requirements + # platforms: macOS + platform: darwin + description: | + Auditing is the capture and maintenance of information about security-related events. Auditable events often depend on differing organizational requirements. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Bonjour advertising service. + Terminal Method: + Perform the following to set the required Security Auditing Flags: + Edit the /etc/security/audit_control file and add -fm, ad, -ex, aa, -fr, lo, and -fw to flags. You can also substitute -all for -fm, -ex, -fr, and -fw. + query: | + SELECT 1 WHERE EXISTS ( + SELECT line + FROM file_lines WHERE path = '/etc/security/audit_control' + AND + ( + ( + line LIKE 'flags:%' + AND + line LIKE "%-fm%" + AND + line LIKE "%ad%" + AND + line LIKE "%-ex%" + AND + line LIKE "%aa%" + AND + line LIKE "%-fr%" + AND + line LIKE "%lo%" + AND + line LIKE "%-fw%" + ) + OR + ( + line LIKE 'flags:%' + AND + line LIKE "%-all%" + AND + line LIKE "%ad%" + AND + line LIKE "%aa%" + AND + line LIKE "%lo%" + ) + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure install.log Is Retained for 365 or More Days and No Maximum Size + # platforms: macOS + platform: darwin + description: | + macOS writes information pertaining to system-related events to the file /var/log/install.log and has a configurable retention policy for this file. The default logging setting limits the file size of the logs and the maximum size for all logs. The default allows for an errant application to fill the log files and does not enforce sufficient log retention. The Benchmark recommends a value based on standard use cases. The value should align with local requirements within the organization. + resolution: | + Automated method: + Ask your system administrator to deploy a script which will ensure proper retention for install.log. + Terminal Method: + Perform the following to ensure that install logs are retained for at least 365 days: + Edit the /etc/asl/com.apple.install file and add or modify the ttl value to 365 or greater on the file line. Also, remove the all_max= setting and value from the file line. + query: | + SELECT 1 WHERE + EXISTS ( SELECT line, + CAST ( regex_match(line, 'ttl=(\d+)', 1) AS INTEGER ) AS val + FROM file_lines + WHERE path = '/etc/asl/com.apple.install' + AND val >=365 ) + AND + NOT EXISTS ( SELECT line + FROM file_lines + WHERE path = '/etc/asl/com.apple.install' + AND line LIKE "%all_max=%" ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Security Auditing Retention Is Enabled + # platforms: macOS + platform: darwin + description: | + The macOS audit capability contains important information to investigate security or operational issues. This resource is only completely useful if it is retained long enough to allow technical staff to find the root cause of anomalies in the records. + Retention can be set to respect both size and longevity. To retain as much as possible under a certain size, the recommendation is to use the following: + expire-after:60d OR 5G + This recommendation is based on minimum storage for review and investigation. When a third party tool is in use to allow remote logging or the store and forwarding of logs, this local storage requirement is not required. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will ensure proper Security Auditing Retention: + cp /etc/security/audit_control ./tmp.txt; origExpire=$(cat ./tmp.txt | grep expire-after); sed "s/${origExpire}/expire-after:60d OR 5G/" ./tmp.txt > /etc/security/audit_control; rm ./tmp.txt; + query: | + SELECT 1 WHERE EXISTS ( + SELECT line, + CAST(regex_match(line, 'expire-after:(\d+)d OR (\d+)G', 1) AS INTEGER) AS days, + CAST(regex_match(line, 'expire-after:(\d+)d OR (\d+)G', 2) AS INTEGER) AS size + FROM file_lines + WHERE path = '/etc/security/audit_control' + AND days >=60 + AND size >=5 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Access to Audit Records Is Controlled + # platforms: macOS + platform: darwin + description: | + The audit system on macOS writes important operational and security information that can be both useful for an attacker and a place for an attacker to attempt to obfuscate unwanted changes that were recorded. As part of defense-in-depth, the /etc/security/audit_control configuration and the files in /var/audit should be owned only by root with group wheel with read-only rights and no other access allowed. macOS ACLs should not be used for these files. + + The default folder for storing logs is /var/audit, but it can be changed. This recommendation will ensure that any target directory has appropriate access control in place even if the target directory is not the default of /var/audit. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will Ensure Access to Audit Records Is Controlled: + /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/audit_control + /usr/bin/sudo /bin/chmod -R og-rw /etc/security/audit_control + /usr/bin/sudo /usr/sbin/chown -R root:wheel $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') + /usr/bin/sudo /bin/chmod -R og-rw $(/usr/bin/sudo /usr/bin/grep '^dir' /etc/security/audit_control | /usr/bin/awk -F: '{print $2}') + query: | + SELECT 1 WHERE + -- For all files in /var/audit: + -- UID, GID should be owned by root. + -- MODE should be 0440 ("-r--r-----") + NOT EXISTS ( SELECT 1 FROM file WHERE path LIKE '/var/audit/%' AND (uid !=0 OR gid !=0 OR mode != "0440") ) + AND + NOT EXISTS ( select 1 from file + where path LIKE + ( + SELECT dir FROM + ( + -- The path we are looking for is written inside /etc/security/audit_control in a line that starts with "dir:" + -- Looking immediately at this and REGEX-ing the path after it (and concatenating "/%") + -- Same explanation for queries below. + select line, CONCAT(regex_match(line, '^dir:(.+)',1 ), '/%') AS dir + FROM file_lines + WHERE path = '/etc/security/audit_control' + AND line LIKE "dir:%" + ) + ) + AND ( uid !=0 OR gid !=0 OR mode != "0440" ) + ) + AND + -- For /etc/security/audit_control the MODE should be 0400 ("-r--------") + NOT EXISTS ( select 1 from file where path = "/etc/security/audit_control" AND mode != "0400" ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Bonjour Advertising Services Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Bonjour is an auto-discovery mechanism for TCP/IP devices which enumerate devices and services within a local subnet. + DNS on macOS is integrated with Bonjour and should not be turned off, but the Bonjour advertising service can be disabled. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Bonjour advertising service. + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The Payload Type string is `com.apple.mDNSResponder`. + 2. The key to include is `NoMulticastAdvertisements`. + 3. The key must be set to ``. + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mDNSResponder' AND + name='NoMulticastAdvertisements' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mDNSResponder' AND + name='NoMulticastAdvertisements' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure HTTP Server Is Disabled + # platforms: macOS + platform: darwin + description: | + Personal web sharing could be enabled to allow someone on another computer to download files or information from the user's computer. + Apache is still part of the Operating System and can be easily turned on to share files and provide remote connectivity + to an end-user computer. Web serving should not be done from a user desktop. Open ports make it easier to exploit the computer. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will disable the Apache service: + /usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist + query: SELECT 1 WHERE NOT EXISTS(SELECT * FROM processes WHERE path = '/usr/sbin/httpd'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure NFS Server Is Disabled + # platforms: macOS + platform: darwin + description: | + macOS can act as an NFS fileserver. NFS sharing could be enabled to allow + someone on another computer to mount shares and gain access to information + from the user's computer. File sharing from a user endpoint has long been + considered questionable, and Apple has removed that capability from the GUI. + NFSD is still part of the Operating System and can be easily turned on to + export shares and provide remote connectivity to an end-user computer. The + /etc/exports file contains the list of NFS shared directories. If the file + exists, it is likely that NFS sharing has been enabled in the past or may + be available periodically. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will + disable the NFS service and its directory listing: + /usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd + /usr/bin/sudo /bin/rm -rf /etc/exports + Note: Removing /etc/exports also stops the NFS service if it was running. + query: | + SELECT 1 WHERE + NOT EXISTS(SELECT 1 FROM processes WHERE path = '/sbin/nfsd') + AND + NOT EXISTS(SELECT 1 FROM file WHERE path = '/etc/exports'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod, getvictor + +- name: CIS - Ensure Home Folders Are Secure + # platforms: macOS + platform: darwin + description: | + By default, macOS allows all valid users into the top level of every other user's home folder and restricts access to the Apple default folders within. Another user on the same system can see you have a "Documents" folder but cannot see inside it. This configuration does work for personal file sharing but can expose user files to standard accounts on the system. + The best parallel for Enterprise environments is that everyone who has a Dropbox account can see everything that is at the top level but can't see your pictures. Similarly with macOS, users can see into every new Directory that is created because of the default permissions. + Home folders should be restricted to access only by the user. Sharing should be used on dedicated servers or cloud instances that are managing access controls. Some environments may encounter problems if execute rights are removed as well as read and write. Either no access or execute only for group or others is acceptable. + resolution: | + Automated method: + Ask your system administrator to deploy a script that will go over all users and set the mode for all of them either like this: + /usr/bin/sudo /bin/chmod -R og-rwx /Users/ + Or like this if there is a need for excutable access: + /usr/bin/sudo /bin/chmod -R og-rw /Users/ + query: SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM file WHERE ( + path LIKE '/Users/%' + AND path != '/Users/Shared/' + AND mode != "0700" + AND mode !="0701" + AND mode !="0710" + AND mode !="0711" + )); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure System Integrity Protection Status (SIP) Is Enabled + # platforms: macOS + platform: darwin + description: | + System Integrity Protection is a security feature introduced in OS X 10.11 El Capitan. System Integrity Protection restricts access to System domain locations and restricts runtime attachment to system processes. Any attempt to inspect or attach to a system process will fail. Kernel Extensions are now restricted to /Library/Extensions and are required to be signed with a Developer ID. + resolution: | + Terminal Method: + Perform the following steps to enable System Integrity Protection: + 1. Reboot into the Recovery Partition (reboot and hold down Command (⌘) + R) + 2. Select Utilities + 3. Select Terminal + 4. Run the following command: + /usr/bin/sudo /usr/bin/csrutil enable + query: SELECT 1 FROM sip_config WHERE config_flag="sip" and enabled=1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Apple Mobile File Integrity (AMFI) Is Enabled (fleetd required) + # platforms: macOS + platform: darwin + description: | + Apple Mobile File Integrity (AMFI) was first released in macOS 10.12. The daemon and service block attempts to run unsigned code. AMFI uses launchd, code signatures, certificates, entitlements, and provisioning profiles to create a filtered entitlement dictionary for an app. AMFI is the macOS kernel module that enforces code-signing and library validation. + Note: AMFI cannot be disabled with SIP enabled, but a change attempt can be made that will appear successful, and report incorrectly as successful. If the AMFI audit fails, and the SIP audit passes, this is still an issue the admin should research. + resolution: | + Automated method: + Ask your system administrator to deploy the following script which will Ensure Apple Mobile File Integrity (AMFI) Is Enabled: + /usr/bin/sudo /usr/sbin/nvram boot-args="" + query: SELECT 1 FROM nvram_info WHERE amfi_enabled="1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Sealed System Volume (SSV) Is Enabled (fleetd required) + # platforms: macOS + platform: darwin + description: | + Sealed System Volume is a security feature introduced in macOS 11.0 Big Sur. + During system installation, a SHA-256 cryptographic hash is calculated for all immutable system files and stored in a Merkle tree which itself is hashed as the Seal. Both are stored in the metadata of the snapshot created of the System volume. + The seal is verified by the boot loader at startup. macOS will not boot if system files have been tampered with. If validation fails, the user will be instructed to reinstall the operating system. + During read operations for files located in the Sealed System Volume, a hash is calculated and compared to the value stored in the Merkle tree. + resolution: | + If SSV has been disabled, assume that the operating system has been compromised. Back up any files, and do a clean install to a known good Operating System. + query: SELECT 1 FROM csrutil_info WHERE ssv_enabled="1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Appropriate Permissions Are Enabled for System Wide Applications + # platforms: macOS + platform: darwin + description: | + Applications in the System Applications Directory (/Applications) should be world- executable since that is their reason to be on the system. They should not be world- writable and allow any process or user to alter them for other processes or users to then execute modified versions. + resolution: | + Ask your system administrator to deploy a script that will configure all *.app under /Applications folders to have no write permissions for 'others'. + $ /usr/bin/sudo IFS=$'\n' + for apps in $( /usr/bin/find /Applications -iname "*\.app" -type d -perm -2 ); + do + /bin/chmod -R o-w "$apps" + done + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT apps.path FROM apps + LEFT JOIN file on file.path = apps.path + WHERE apps.path LIKE '/Applications/%' AND + -- file.mode's last character are the permissions for 'other', + -- bitwise && with '0x2' selects the write permission, + -- which we do not want here. + CAST(SUBSTRING(file.mode, -1) AS INTEGER) & 0x2 != 0 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure No World Writable Files Exist in the System Folder + # platforms: macOS + platform: darwin + description: | + Software sometimes insists on being installed in the /System/Volumes/Data/System Directory and has inappropriate world-writable permissions. Macs with writable files in System should be investigated forensically. A file with open writable permissions is a sign of at best a rogue application. It could also be a sign of a computer compromise and a persistent presence on the system. + resolution: | + Ask your system administrator to deploy a script that will ensure folders are not world-writable in the /System folder. + /usr/bin/sudo IFS=$'\n' + for sysPermissions in $( /usr/bin/find /System/Volumes/Data/System -type d -perm -2 | /usr/bin/grep -vE "Drop Box|locks" ); + do + /bin/chmod -R o-w "$sysPermissions" + done + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM find_cmd WHERE + directory = '/System/Volumes/Data/System' + AND type = 'd' + AND perm = '-2' + AND path NOT LIKE '%Drop Box%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure No World Writable Folders Exist in the Library Folder (Fleetd required) + # platforms: macOS + platform: darwin + description: | + Software sometimes insists on being installed in the + /System/Volumes/Data/Library directory and has inappropriate world-writable + permissions. This software could be compromised with the folder(s) being + world-writable by unauthorized actions. + Folders in /System/Volumes/Data/Library should not be world-writable. The + audit check excludes folders where the sticky bit is set by Apple. These + folders are required by the operating system to run and should not be + modified. Some security vendors use a world-writable folder for their + security extension tool. This will be considered compliant due to the tools + themselves not allowing a user to write to their folders. This is against + the standard practice on POSIX systems. It is considered compliant here + because of additional security vendor controls that are controlled through + industry standard mitigations. + resolution: | + Ask your system administrator to deploy a script that will ensure folders + are not world-writable in the /Library folder. + /usr/bin/sudo IFS=$'\n' + for libPermissions in $(/usr/bin/find /Library -type d -perm -002 ! -perm -1000 ! -xattrname com.apple.rootless 2>/dev/null); do + /bin/chmod -R o-w "$libPermissions" + done + Note: Applications that are not following standard practices, and have + world-writable files in /System/Volumes/Data/Library may not launch or + operate correctly after the remediation has been run. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM file f + WHERE + f.path LIKE '/Library/%' + AND f.type = 'directory' + AND (CAST(SUBSTR(f.mode,-1) AS INTEGER) & 2) = 2 + AND NOT ((CAST(f.mode AS INTEGER) & 01000) = 01000) + AND NOT EXISTS ( + SELECT 1 FROM extended_attributes ea + WHERE ea.path = f.path + AND ea.key = 'com.apple.rootless' + ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: getvictor + +- name: CIS - Ensure Password Account Lockout Threshold Is Configured (Fleetd required) + # platforms: macOS + platform: darwin + description: | + The account lockout threshold specifies the amount of times a user can enter an incorrect password before a lockout will occur. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that Ensure Password Account Lockout Threshold. + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is maxFailedAttempts + 3. The key must be set to + query: SELECT 1 FROM pwd_policy where max_failed_attempts <= 5; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Password Minimum Length Is Configured + # platforms: macOS + platform: darwin + description: | + A minimum password length is the fewest number of characters a password can contain to meet a system's requirements. Ensure that a minimum of a 15-character password is part of the password policy on the computer. Where the confidentiality of encrypted information in FileVault is more of a concern, requiring a longer password or passphrase may be sufficient rather than imposing additional complexity requirements that may be self-defeating. + resolution: | + Automated method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is minLength + 3. The key must be set to + query: | + SELECT 1 + FROM ( + SELECT cast(lengthtxt as integer(2)) minlength + FROM ( + SELECT SUBSTRING(length, 1, 2) AS lengthtxt + FROM ( + SELECT policy_description, policy_identifier, split(policy_content, '{', 1) AS length + FROM password_policy + WHERE policy_identifier LIKE '%minLength')) + WHERE minlength >= 15); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Alphabetic Characters AND Numeric Characters Is Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + CIS - 5.2.3 - Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that an Alphabetic character is part of the password policy on the computer. + CIS - 5.2.4 - Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that a number or numeric value is part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy an MDM profile that ensures Complex Password Must Contain Alphabetic Characters + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='requireAlphanumeric' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='requireAlphanumeric' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Special Character Is Configured (MDM Required) + # platforms: macOS + platform: darwin + description: | + Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. Ensure that a special character is part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy an MDM profile that ensures Complex Password Must Contain Special Characters + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='minComplexChars' AND + value >= 1 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.mobiledevice.passwordpolicy' AND + name='minComplexChars' AND + value < 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured (Fleetd required) + # platforms: macOS + platform: darwin + description: | + Complex passwords contain one character from each of the following classes: English uppercase letters, English lowercase letters, Westernized Arabic numerals, and non- alphanumeric characters. + Ensure that both uppercase and lowercase letters are part of the password policy on the computer. + resolution: | + Ask your system administrator to deploy the following script: + /usr/bin/sudo /usr/bin/pwpolicy -n /Local/Default -setglobalpolicy "requiresMixedCase==1>" + query: SELECT 1 FROM pwd_policy where min_mixed_case_characters >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Password Age Is Configured (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Over time, passwords can be captured by third parties through mistakes, phishing attacks, third-party breaches, or merely brute-force attacks. To reduce the risk of exposure and to decrease the incentives of password reuse (passwords that are not forced to be changed periodically generally are not ever changed), users should reset passwords periodically. This control uses 365 days as the acceptable value. Some organizations may be more or less restrictive. This control mainly exists to mitigate against password reuse of the macOS account password in other realms that may be more prone to compromise. Attackers take advantage of exposed information to attack other accounts. + resolution: | + Automated method: + Ask your system administrator to deploy an MDM profile that disables Guest Account. + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The Payload Type string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is maxPINAgeInDays + 3. The key must be set to + query: | + SELECT 1 WHERE + EXISTS(SELECT 1 FROM pwd_policy WHERE expires_every_n_days <= 365) + OR + EXISTS(SELECT 1 FROM pwd_policy WHERE days_to_expiration <= 365); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure password history is set to at least 24 (MDM required) + # platforms: macOS + platform: darwin + description: | + Over time, passwords can be captured by third parties through mistakes, + phishing attacks, third-party breaches, or merely brute-force attacks. To + reduce the risk of exposure and to decrease the incentives of password reuse + (passwords that are not forced to be changed periodically generally are not + ever changed), users must reset passwords periodically. This control ensures + that previous passwords are not reused immediately by keeping a history of + previous password hashes. Ensure that password history checks are part of + the password policy on the computer. This control checks whether a new + password is different than the previous 24. The latest NIST guidance based + on exploit research referenced in this section details how one of the + greatest risks is password exposure rather than password cracking. Passwords + should be changed to a new unique value whenever a password might have been + exposed to anyone other than the account holder. Attackers have maintained + persistent control based on predictable password change patterns and + substantially different patterns should be used in case of a leak. + resolution: | + Profile method: + Ask your administrator to deploy a profile with the following configuration: + 1. The Payload Type string is com.apple.mobiledevice.passwordpolicy + 2. The key to include is pinHistory + 3. The key must be set to + query: SELECT 1 FROM pwd_policy WHERE history_depth >= 24; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm, getvictor + +- name: CIS - Ensure all user storage APFS volumes are encrypted (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Apple developed a new file system which was first made available in 10.12 and then became the + default in 10.13. The file system is optimized for Flash and Solid-State storage and encryption. + https://en.wikipedia.org/wiki/Apple_File_System macOS computers generally have several volumes + created as part of APFS formatting, including Preboot, Recovery and Virtual Memory (VM), as well + as traditional user disks. + All APFS volumes that do not have specific roles and do not require encryption should be + encrypted. "Role" disks include Preboot, Recovery and VM. User disks are labelled with "(No + specific role)" by default. + resolution: | + Manual method: + Use Disk Utility to erase a user disk and format as APFS (Encrypted). + Note: APFS Encrypted disks will be described as "FileVault" whether they are the boot volume or not in the ap list. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM apfs_volumes WHERE + role != "VM" AND + role != "Update" AND + role != "Recovery" AND + role != "Preboot" AND + role != "xART" AND + role != "Hardware" AND + filevault != 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure all user storage CoreStorage volumes are encrypted (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Apple introduced CoreStorage with 10.7. It is used as the default for formatting on macOS volumes prior to 10.13. + While FileVault protects the boot volume, data may be copied to other attached storage and reduce the protection afforded by FileVault. + Ensure all user volumes are encrypted to protect data. + resolution: | + Manual method: + Use Disk Utility to convert volumes to APFS or delete them. + It is no longer possible to encrypt CoreStorage volumes without converting them. + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM corestorage_logical_volume_families WHERE EncryptionType != "AES-XTS" + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure the Sudo Timeout Period Is Set to Zero (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + The sudo command stays logged in as the root user for five minutes before timing out and re-requesting a password. + This five-minute window should be eliminated since it leaves the system extremely vulnerable. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo 'Defaults timestamp_timeout=0' | sudo tee -a /etc/sudoers.d/CIS_54_sudoconfiguration + /usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/sudoers.d/ + query: | + SELECT 1 WHERE EXISTS( + SELECT * FROM file WHERE path = '/etc/sudoers.d' AND uid = 0 AND gid = 0 + ) AND EXISTS( + SELECT + COALESCE(JSON_EXTRACT( + json_result, '$.Authentication timestamp timeout' + ), '') AS authentication_timestamp_timeout + FROM sudo_info WHERE authentication_timestamp_timeout = '0.0 minutes' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure a Separate Timestamp Is Enabled for Each User/tty (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Using tty tickets ensures that a user must enter the sudo password in each Terminal session. + With sudo versions 1.8 and higher, introduced in 10.12, the default value is to have tty tickets + for each interface so that root access is limited to a specific terminal. + The default configuration can be overwritten or not configured correctly on earlier versions of macOS. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo 'Defaults timestamp_type=tty' | sudo tee /etc/sudoers.d/CIS_55_sudoconfiguration + query: | + SELECT 1 WHERE EXISTS( + SELECT + COALESCE(JSON_EXTRACT( + json_result, '$.Type of authentication timestamp record' + ), '') AS type_of_auth_timestamp_record + FROM sudo_info WHERE type_of_auth_timestamp_record = 'tty' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure the "root" Account Is Disabled (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + Enabling and using the root account puts the system at risk since any successful exploit or mistake + while the root account is in use could have unlimited access privileges within the system. + Using the sudo command allows users to perform functions as a root user while limiting and password + protecting the access privileges. By default the root account is not enabled on a macOS computer. + An administrator can escalate privileges using the sudo command (use -s or -i to get a root shell). + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + /usr/bin/sudo /usr/sbin/dsenableroot -d + query: | + SELECT 1 from dscl WHERE command = 'read' AND path = '/Users/root' AND key = 'AuthenticationAuthority' AND value = ''; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure an Administrator Account Cannot Login to Another User's Active and Locked Session (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + macOS has a privilege that can be granted to any user that will allow that + user to unlock active users' sessions. Disabling the administrator's and/or + user's ability to log into another user's active and locked session prevents + unauthorized persons from viewing potentially sensitive and/or personal + information. + Note: For organizations that are using Platform Single-Sign-On (PSSO), this + setting can cause issues with syncing with your PSSO. Verify if you are + using PSSO by running: /usr/bin/sudo app-sso platform -s + resolution: | + Automated method: + Ask your administrator to deploy a script that runs the following command: + /usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver authenticate-session-owner + # Note: Running this command will disable Touch ID to unlock the screen + # saver. To re-enable Touch ID for users, run: + /usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow screenUnlockMode -int 1 + query: | + SELECT 1 WHERE EXISTS ( + SELECT JSON_EXTRACT(json_result, '$.rule') AS rule + FROM authdb + WHERE right_name = 'system.login.screensaver' AND + rule LIKE '%authenticate-session-owner%' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod, getvictor + +- name: CIS - Ensure a Login Window Banner Exists + # platforms: macOS + platform: darwin + description: | + An access warning may reduce a casual attacker's tendency to target the system. Access warnings may also aid + in the prosecution of an attacker by evincing the attacker's knowledge of the system's private status, + acceptable use policy, and authorization requirements. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + echo "Content of the banner" | sudo tee /Library/Security/PolicyBanner.txt + /usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt + /usr/bin/sudo /bin/chmod o+r /Library/Security/PolicyBanner.txt + query: | + SELECT 1 FROM file + WHERE (path = '/Library/Security/PolicyBanner.txt' OR + path = '/Library/Security/PolicyBanner.rtf') AND mode = '0644' + AND uid = 0 AND gid = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: lucasmrod + +- name: CIS - Ensure the Guest Home Folder Does Not Exist + # platforms: macOS + platform: darwin + description: | + The Guest home folders are unneeded after the Guest account is disabled and could be used inappropriately. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + /usr/bin/sudo /bin/rm -R /Users/Guest + query: | + SELECT 1 WHERE NOT EXISTS (SELECT * FROM file WHERE path = '/Users/Guest'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure Show All Filename Extensions Setting is Enabled + # platforms: macOS + platform: darwin + description: | + A filename extension is a suffix added to a base filename that indicates the + base filename's file format. This is intended for any user that logs into + the GUI and has a home folder and not for service accounts. For the audit, + we will continue to verify that every account with a home folder has + filename extensions enabled. + Visible filename extensions allow the user to identify the file type and the + application it is associated with which leads to quick identification of + misrepresented malicious files. + resolution: | + Automated method: + Ask your administrator to deploy a script that runs the following command + for each user: + /usr/bin/sudo -u /usr/bin/defaults write \ + /Users//Library/Preferences/.GlobalPreferences.plist AppleShowAllExtensions -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Preferences/.GlobalPreferences.plist' AND + key = 'AppleShowAllExtensions' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Preferences/.GlobalPreferences.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work, getvictor + +- name: CIS - Ensure Automatic Opening of Safe Files in Safari Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Safari will automatically run or execute what it considers safe files. This can include + installers and other files that execute on the operating system. Safari evaluates file safety by + using a list of filetypes maintained by Apple. The list of files include text, image, video and + archive formats that would be run in the context of the OS rather than the browser. + Hackers have taken advantage of this setting via drive-by attacks. These attacks occur when a + user visits a legitimate website that has been corrupted. The user unknowingly downloads a + malicious file either by closing an infected pop-up or hovering over a malicious banner. An + attacker can create a malicious file that will fall within Safari's safe file list that will + download and execute without user input. + resolution: | + Payload Method: + Ask your administrator to deploy a profile which disables AutoOpenSafeDownloads in Safari + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='AutoOpenSafeDownloads' AND + (value = 0 OR value = 'false') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='AutoOpenSafeDownloads' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Audit Safari Web Browser History and Remove History Items (organization decision needed)(MDM Required) + # platforms: macOS + platform: darwin + description: | + Organizational management of user web browsing history is a challenge effected by multiple facets. Organizations should decide whether to manage browser history and how much history should be maintained. + Rationale: + There are conflicting concerns in the retention of browser history. Unlimited retention: + - Consumes disk space + - Preferred by on disk forensics teams + - User searchable for old visited pages + - User privacy concerns + - Security concerns to retain old links that may be stale or lead to compromised + pages or pages with changes or inappropriate content + Old browser history becomes stale and the use or misuse of the data can lead to unwanted outcomes. Search engine results are maintained and often provide much more relevant current information than old website visit information. + resolution: | + Ask your system administrator to deploy an MDM profile that set the history per organization decision + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is HistoryAgeInDaysLimit + 3. The key must be set to: <1,7,14,31,365,36500> + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='HistoryAgeInDaysLimit' AND + /* + Please replace the checked value below to match the one decided by your organization. + 1 - After one day + 7 - After one week + 14 - After two weeks + 31 - After one month + 365 - After one year + 36500 - Set Manually + */ + value = 1 + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='HistoryAgeInDaysLimit' AND + value != 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure Warn When Visiting A Fraudulent Website in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Apple uses the Google Safe Browsing API to check for fraudulent websites and report them to the + user attempting visit one. Attackers use crafted web pages to social engineer users to load + unwanted content. Warning users prior to loading the content enables better security. + resolution: | + Payload Method: + Ask your administrator to deploy a profile which enables WarnAboutFraudulentWebsites in Safari + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WarnAboutFraudulentWebsites' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.loginwindow' AND + name='WarnAboutFraudulentWebsites' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Prevent Cross-site Tracking in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Cross-tracking allows data-brokers to follow you across the Internet to enable their business model of + selling personal data. Users should protect their data and not volunteer it to marketing companies. + resolution: | + Automated method: + Ask your system administrator to deploy a profile via MDM with the following information: + 1. The PayloadType string is com.apple.Safari. + 2. The key to include is BlockStoragePolicy. + 3. The key must be set to: 2 + 4. The key to also include is WebKitPreferences.storageBlockingPolicy + 5. The key must be set to: 1 + 6. The key to also include is WebKitStorageBlockingPolicy + 7. The key must be set to: 1 + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='BlockStoragePolicy' AND + value = '2' + + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitPreferences.storageBlockingPolicy' AND + value = '1' + ) + AND EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitStorageBlockingPolicy' AND + value = '1' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='BlockStoragePolicy' AND + value != '2' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitPreferences.storageBlockingPolicy' AND + value != '1' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='WebKitStorageBlockingPolicy' AND + value != '1' + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: lucasmrod + +- name: CIS - Ensure the Hide IP Address in Safari is Enabled (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Public (Routable) IP addresses can be used to track people to their current location, including + home and business addresses. While a valid IP address is necessary to load the site the valid + address does not need to be provided to known trackers and should be hidden. + resolution: | + Ask your system administrator to deploy a script that will configure "Hide IP Address in Safari" to Enabled + $ /usr/bin/sudo -u /usr/bin/defaults write + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences + /com.apple.Safari WBSPrivacyProxyAvailabilityTraffic -int 130276 + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WBSPrivacyProxyAvailabilityTraffic' AND + ((value >> 2) & 1) = 1) AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: artemist-work + +- name: CIS - Ensure the Hide IP Address in Safari is Disabled (Based on organization's policy) + # platforms: macOS + platform: darwin + description: | + Public (Routable) IP addresses can be used to track people to their current location, including + home and business addresses. While a valid IP address is necessary to load the site the valid + address does not need to be provided to known trackers and should be hidden. + However, enabling this setting will proxy web information through a 3rd party service, which may + not be allowed by your organization's policy. + resolution: | + Ask your system administrator to deploy a script that will configure "Hide IP Address in Safari" to Enabled + $ /usr/bin/sudo -u /usr/bin/defaults write + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences + /com.apple.Safari WBSPrivacyProxyAvailabilityTraffic -int 130272 + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WBSPrivacyProxyAvailabilityTraffic' AND + ((value >> 2) & 1) = 0) AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, decision-needed + # contributors: artemist-work + +- name: CIS - Ensure Advertising Privacy Protection in Safari Is Enabled (FDA Required) + # platforms: macOS + platform: darwin + description: | + Apple provides a framework that allows advertisers to target Apple users and end-users with advertisements. + While many people prefer that when they see advertising it is relevant to them and their interests, the detailed + information that is data mining collected, correlated, and available to advertisers in repositories is often disconcerting. + This information is valuable to both advertisers and attackers and has been used with other metadata to reveal users' identities. + resolution: | + Automated method: + Ask your system administrator to deploy the following script: + # For each user run: + /usr/bin/sudo -u /usr/bin/defaults write \ + /Users//Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari \ + WebKitPreferences.privateClickMeasurementEnabled -bool true + query: | + SELECT 1 WHERE NOT EXISTS ( + SELECT 1 FROM users AS u + LEFT JOIN ( + SELECT * FROM plist WHERE + path LIKE '/Users/%/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist' AND + key = 'WebKitPreferences.privateClickMeasurementEnabled' AND + value = '1') AS p + ON p.path = CONCAT(u.directory, '/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari.plist') + WHERE u.directory LIKE '/Users/%' AND + p.value IS NULL + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure Show Full Website Address in Safari Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Attackers use websites with malicious or unwanted content to exploit the user or the computer. Part of the attack chain is to lure someone to load their content rather than the desired content. In order to reduce the risk in interacting with unwanted content the full website address should always be displayed in Safari. + resolution: | + Graphical Method: + Perform the following steps to set Safari to show full website addresses: + 1. Open Safari + 2. Select Safari from the menu bar + 3. Select Settings + 4. Select Security + 5. Set Show full website address to enabled + Automated method: + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is ShowFullURLInSmartSearchField + 3. The key must be set to: + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowFullURLInSmartSearchField' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowFullURLInSmartSearchField' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Show Status Bar Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + The Status Bar in Safari shows the full URL of any link on hover. It protects the user from visiting sites where the domain has been obfuscated by allowing the user to review whether the link points to an unexpected location. + resolution: | + Automated method: + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.Safari + 2. The key to include is ShowOverlayStatusBar + 3. The key must be set to: + query: | + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Safari' AND + name='ShowOverlayStatusBar' AND + (value = 1 OR value = 'true'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: defensivedepth + +- name: CIS - Ensure Secure Keyboard Entry Terminal.app Is Enabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Secure Keyboard Entry prevents other applications on the system and/or network from detecting and recording what is typed into Terminal. Unauthorized applications and malicious code could intercept keystrokes entered in the Terminal. + Enabling Secure Keyboard Entry minimizes the risk of a key logger from detecting what is entered in Terminal. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.Terminal + 2. The key to include is SecureKeyboardEntry + 3. The key must be set to + + query: | + SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Terminal' AND + name='SecureKeyboardEntry' AND + (value = 1 OR value = 'true') + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.Terminal' AND + name='SecureKeyboardEntry' AND + (value != 1 AND value != 'true') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure Logging Is Enabled for Sudo (Fleetd Required) + # platforms: macOS + platform: darwin + description: | + In order to properly monitor the use of the sudo command, logs events for + any use of sudo should be captured in the unified log. + resolution: | + Automated method: + Ask your administrator to deploy a script that will configure: + /usr/bin/sudo /usr/sbin/visudo -f /etc/sudoers.d/10_cissudoconfiguration + Add the line to the file: 'Defaults log_allowed' + Note: Unlike other Unix/Linux distros, macOS will ignore configuration files + in the sudoers.d folder that contain a period, so do not add a file + extension to the configuration file. The 'Defaults log_allowed' line can be + added to an existing configuration file or a new one. + query: | + SELECT 1 AS result + FROM ( + SELECT 1 FROM file_lines + WHERE path = '/etc/sudoers' + AND line LIKE '%Defaults%log_allowed%' + AND line NOT LIKE '%!log_allowed%' + AND line NOT LIKE '#%' + + UNION ALL + + SELECT 1 FROM file_lines + WHERE path LIKE '/etc/sudoers.d/%' + AND line LIKE '%Defaults%log_allowed%' + AND line NOT LIKE '%!log_allowed%' + AND line NOT LIKE '#%' + ) AS matches + LIMIT 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: getvictor + +- name: CIS - Ensure External Intelligence Extensions Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + In macOS 15.0 Sequoia, Apple has introduced what it calls Apple Intelligence, + which includes new capabilities for processing language and images with AI + technologies. While Apple Intelligence integrates deeply with personal context + and generally runs on-device, external intelligence extensions are able to + connect to external services like ChatGPT or other third-party AI providers. + These external connections may send user data to third-party servers outside + of Apple's control. + Organizations handling sensitive or confidential information should disable + external intelligence extensions to prevent potential data leakage to + third-party AI services. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowExternalIntelligenceIntegrations + 3. The key must be set to + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowExternalIntelligenceIntegrations' AND + (value = 0 OR value = 'false') + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowExternalIntelligenceIntegrations' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: getvictor + +- name: CIS - Ensure Writing Tools Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Writing Tools is a feature of Apple Intelligence that provides AI-powered + writing assistance including proofreading, rewriting, and summarization + capabilities. While these features process text on-device when possible, + they may still process sensitive or confidential information that + organizations need to control. + Organizations handling sensitive documents should consider disabling Writing + Tools to prevent potential exposure of confidential information through AI + processing. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The key to include is allowWritingTools + 3. The key must be set to + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowWritingTools' AND + (value = 0 OR value = 'false') + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowWritingTools' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: getvictor + +- name: CIS - Ensure Mail Summarization Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Mail Summarization is a feature of Apple Intelligence that uses AI to + automatically generate summaries of email content. This feature processes + email content through AI models which may include sensitive or confidential + information. + Organizations should disable Mail Summarization to prevent AI processing of + potentially sensitive email communications. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The keys to include are allowMailSmartReplies and allowMailSummary + 3. Both keys must be set to + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowMailSummary' AND + (value = 0 OR value = 'false') + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowMailSummary' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: getvictor + +- name: CIS - Ensure Notes Summarization Is Disabled (MDM Required) + # platforms: macOS + platform: darwin + description: | + Notes Summarization is a feature of Apple Intelligence that uses AI to + automatically generate summaries of notes content. This feature processes + notes through AI models which may include sensitive or confidential + information. + Organizations should disable Notes Summarization to prevent AI processing of + potentially sensitive notes and documentation. + resolution: | + Profile Method: + Ask your administrator to deploy a profile with the following configuration: + 1. The PayloadType string is com.apple.applicationaccess + 2. The keys to include are allowNotesTranscription and allowNotesTranscriptionSummary + 3. Both keys must be set to + query: | + SELECT 1 WHERE EXISTS( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowNotesTranscriptionSummary' AND + (value = 0 OR value = 'false') + ) AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain = 'com.apple.applicationaccess' AND + name = 'allowNotesTranscriptionSummary' AND + (value != 0 AND value != 'false') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: getvictor diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.10.3.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.10.3.sh new file mode 100755 index 0000000000..048bf03195 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.10.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Test Message 1" \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.10.4.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.10.4.sh new file mode 100755 index 0000000000..2862a52444 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.10.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.10.5.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.10.5.sh new file mode 100755 index 0000000000..2c3b51b2d6 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.10.5.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow RetriesUntilHint -int 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.11.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.11.1.sh new file mode 100755 index 0000000000..9b1afbb660 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.11.1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure No Login Items Exist With Passwords in User Keychain +# Removes password hints for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + # Remove the hint attribute if it exists + if dscl . -read "/Users/$username" hint &>/dev/null; then + sudo dscl . -delete "/Users/$username" hint + fi +done diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.12.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.12.1.sh new file mode 100755 index 0000000000..619f9153c9 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.12.1.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false +sudo /usr/bin/defaults write /Library/Preferences/com.apple.MCX DisableGuestAccount -bool true \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.12.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.12.2.sh new file mode 100755 index 0000000000..a6bccab0d1 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.12.2.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess off + + +# For testing +# Get Status: /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess status +# Set to enabled: /usr/bin/sudo /usr/sbin/sysadminctl -smbGuestAccess on + diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.12.3.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.12.3.sh new file mode 100755 index 0000000000..fbf775dbdc --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.12.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/bin/defaults delete /Library/Preferences/com.apple.loginwindow autoLoginUser \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.1.sh new file mode 100755 index 0000000000..a5b1ec6cea --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.1.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.ODSAgent diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.2.sh new file mode 100755 index 0000000000..fcf8757ea6 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.screensharing diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.3.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.3.sh new file mode 100755 index 0000000000..7feaa14a92 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.3.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.smbd diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.4.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.4.sh new file mode 100755 index 0000000000..e539ce313c --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/cupsctl --no-share-printers diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.5.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.5.sh new file mode 100755 index 0000000000..4019f9fa67 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.5.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.openssh.sshd diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.6.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.6.sh new file mode 100755 index 0000000000..628b998cac --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.6.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.7.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.7.sh new file mode 100755 index 0000000000..9eac6cd0c8 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.7.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/systemsetup -setremoteappleevents off diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.8.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.8.sh new file mode 100755 index 0000000000..4d241732a7 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.3.8.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict Enabled -int 0 diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.3.4.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.3.4.1.sh new file mode 100755 index 0000000000..e6b78d3083 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.3.4.1.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# NOTE(lucas): I was not able to set `com.apple.TimeMachine`'s `AutoBackup` via a configuration profile. +# I tried the profile method documented on the CIS Benchmarks document and after applying it successfully +# it did not update the value of `AutoBackup`. +# +# So for now we are using the following shell command to enable automatic backup of Time Machine destinations. +/usr/bin/sudo /usr/bin/defaults write /Library/Preferences/com.apple.TimeMachine.plist AutoBackup -bool true diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.6.1.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.6.1.2.sh new file mode 100755 index 0000000000..120d2d1c6e --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.6.1.2.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# CIS - Ensure Location Services Is Enabled +sudo /usr/bin/defaults write /Library/Preferences/com.apple.locationmenu.plist ShowSystemServices -bool true diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.6.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.6.2.sh new file mode 100644 index 0000000000..753bfcfa14 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.6.2.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# CIS - Ensure Sending Diagnostic and Usage Data to Apple Is Disabled +# Part 1: System-level diagnostic settings +sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" AutoSubmit -bool false +sudo /usr/bin/defaults write "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" ThirdPartyDataSubmit -bool false +sudo /bin/chmod 644 "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" +sudo /usr/sbin/chgrp admin "/Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist" + +# Part 2: Per-user Siri data sharing opt-out +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + if [ -d "$home_dir" ]; then + sudo -u "$username" /usr/bin/defaults write "$home_dir/Library/Preferences/com.apple.assistant.support" "Siri Data Sharing Opt-In Status" -int 2 + fi +done diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.6.4.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.6.4.sh new file mode 100755 index 0000000000..9d62022c8f --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.6.4.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/sbin/spctl --master-enable diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.6.7.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.6.7.sh new file mode 100644 index 0000000000..e2563cf423 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.6.7.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -eu + +sudo security authorizationdb read system.preferences > /tmp/system.preferences.plist +defaults write /tmp/system.preferences.plist shared -bool false +sudo security authorizationdb write system.preferences < /tmp/system.preferences.plist diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.7.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.7.1.sh new file mode 100644 index 0000000000..fccd6fd899 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.7.1.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Set corner action to 0 (no-op). +# If you wish to not comply with the policy, set any of them to 6. + +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-br-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-bl-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-tr-corner -integer 0 +/usr/bin/sudo -u $USER /usr/bin/defaults write com.apple.dock wvous-tl-corner -integer 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.9.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.9.1.sh new file mode 100644 index 0000000000..993ddd2af1 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.9.1.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/pmset -a powernap 0 \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.9.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.9.2.sh new file mode 100644 index 0000000000..2ecab92e99 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.9.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/pmset -a womp 0 diff --git a/docs/solutions/cis/macos-15/scripts/CIS_2.9.3.sh b/docs/solutions/cis/macos-15/scripts/CIS_2.9.3.sh new file mode 100755 index 0000000000..cc877132f3 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_2.9.3.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [[ $(uname -m) == 'arm64' ]]; then + # Apple silicon + /usr/bin/sudo /usr/bin/pmset -a standby 900 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 +else + # Intel + /usr/bin/sudo /usr/bin/pmset -a standbydelaylow 900 + /usr/bin/sudo /usr/bin/pmset -a standbydelayhigh 900 + /usr/bin/sudo /usr/bin/pmset -a highstandbythreshold 90 + /usr/bin/sudo /usr/bin/pmset -a destroyfvkeyonstandby 1 + /usr/bin/sudo /usr/bin/pmset -a hibernatemode 25 +fi diff --git a/docs/solutions/cis/macos-15/scripts/CIS_3.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_3.1.sh new file mode 100755 index 0000000000..6e3aa1955d --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_3.1.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist + +# For Testing: After the above command executed: +# This will stop the service: /usr/bin/sudo /bin/launchctl stop com.apple.auditd +# This will start the service: /usr/bin/sudo /bin/launchctl start com.apple.auditd \ No newline at end of file diff --git a/docs/solutions/cis/macos-15/scripts/CIS_3.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_3.2.sh new file mode 100755 index 0000000000..a43625369e --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_3.2.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# CIS - Ensure Security Auditing Flags Are Configured Per Local Organizational Requirements +# Sets audit flags to: -fm,ad,-ex,aa,-fr,lo,-fw + +AUDIT_CONTROL="/etc/security/audit_control" +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +cp "$AUDIT_CONTROL" "$tmpfile" +origFlags=$(grep 'flags:' "$tmpfile" | grep -v 'naflags') +sed "s/${origFlags}/flags:-fm,ad,-ex,aa,-fr,lo,-fw/" "$tmpfile" | sudo tee "$AUDIT_CONTROL" > /dev/null diff --git a/docs/solutions/cis/macos-15/scripts/CIS_3.3.sh b/docs/solutions/cis/macos-15/scripts/CIS_3.3.sh new file mode 100755 index 0000000000..d7d8fb8c48 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_3.3.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure install.log Is Retained for 365 or More Days +# Removes any all_max= setting from /etc/asl/com.apple.install + +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +# Remove all_max= entries (both M and G suffixes) +sudo sed -E 's/all_max=[0-9]+[MG]//g' /etc/asl/com.apple.install > "$tmpfile" +sudo cp "$tmpfile" /etc/asl/com.apple.install diff --git a/docs/solutions/cis/macos-15/scripts/CIS_3.4.sh b/docs/solutions/cis/macos-15/scripts/CIS_3.4.sh new file mode 100755 index 0000000000..48ffbcd7ec --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_3.4.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# CIS - Ensure Security Auditing Retention Is Configured +# Sets audit retention to: expire-after:60d OR 5G + +AUDIT_CONTROL="/etc/security/audit_control" +tmpfile=$(mktemp) +trap 'rm -f "$tmpfile"' EXIT + +cp "$AUDIT_CONTROL" "$tmpfile" +origExpire=$(grep 'expire-after' "$tmpfile") +sed "s/${origExpire}/expire-after:60d OR 5G/" "$tmpfile" | sudo tee "$AUDIT_CONTROL" > /dev/null + +# Explanation: +# In your /etc/security/audit_control, look for a line starting at: expire-after +# SHOULD PASS: expire-after:60d OR 5G +# SHOULD PASS: expire-after:61d OR 5G +# SHOULD PASS: expire-after:60d OR 6G +# SHOULD PASS: expire-after:61d OR 6G +# SHOULD FAIL: expire-after:60d (no size component) +# SHOULD FAIL: expire-after:5G (no time component) +# SHOULD FAIL: expire-after:59d OR 5G +# SHOULD FAIL: expire-after:60d OR 4G diff --git a/docs/solutions/cis/macos-15/scripts/CIS_3.5.sh b/docs/solutions/cis/macos-15/scripts/CIS_3.5.sh new file mode 100755 index 0000000000..29c09f5df7 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_3.5.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/chown -R root:wheel /etc/security/audit_control +/usr/bin/sudo /bin/chmod -R o-rw /etc/security/audit_control +/usr/bin/sudo /usr/sbin/chown -R root:wheel /var/audit/ +/usr/bin/sudo /bin/chmod -R o-rw /var/audit/ + diff --git a/docs/solutions/cis/macos-15/scripts/CIS_4.2.sh b/docs/solutions/cis/macos-15/scripts/CIS_4.2.sh new file mode 100644 index 0000000000..c9fe75751e --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_4.2.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist diff --git a/docs/solutions/cis/macos-15/scripts/CIS_4.3.sh b/docs/solutions/cis/macos-15/scripts/CIS_4.3.sh new file mode 100755 index 0000000000..ce62d02ac0 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_4.3.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +/usr/bin/sudo /bin/launchctl disable system/com.apple.nfsd +/usr/bin/sudo /bin/rm /etc/exports diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.1.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.1.1.sh new file mode 100755 index 0000000000..1276aa8f73 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.1.1.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for i in $(/usr/bin/sudo dscl . list /Users | grep -v "^_"); do + /usr/bin/sudo /bin/chmod -R og-rwx /Users/"$i" +done diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.1.5.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.1.5.sh new file mode 100755 index 0000000000..5749d5ca4b --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.1.5.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the Applications Folder + +IFS=$'\n' +for apps in $(/usr/bin/find /Applications -iname "*.app" -type d -perm -2); do + sudo /bin/chmod -R o-w "$apps" +done +unset IFS diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.1.6.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.1.6.sh new file mode 100755 index 0000000000..00f090e223 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.1.6.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the System Folder + +IFS=$'\n' +for sysPermissions in $(/usr/bin/find /System/Volumes/Data/System -type d -perm -2 | /usr/bin/grep -v "Drop Box"); do + sudo /bin/chmod -R o-w "$sysPermissions" +done +unset IFS diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.1.7.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.1.7.sh new file mode 100755 index 0000000000..5f89ef6307 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.1.7.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# CIS - Ensure No World Writable Folders Exist in the Library Folder + +IFS=$'\n' +for libPermissions in $(/usr/bin/find /System/Volumes/Data/Library -type d -perm -2 | /usr/bin/grep -v Caches | /usr/bin/grep -v /Preferences/Audio/Data); do + sudo /bin/chmod -R o-w "$libPermissions" +done +unset IFS diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.10.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.10.sh new file mode 100755 index 0000000000..044c28ee64 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.10.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /bin/rm -R /Users/Guest diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.4.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.4.sh new file mode 100644 index 0000000000..294619fd15 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.4.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# CIS - Ensure a Separate Timestamp Is Not Used for Each User-tty Combo +# Sets sudo timeout to 0 (require password every time). + +SUDOERS_FILE="/etc/sudoers.d/CIS_54_sudoconfiguration" + +echo 'Defaults timestamp_timeout=0' | sudo tee "$SUDOERS_FILE" > /dev/null +sudo /bin/chmod 0440 "$SUDOERS_FILE" +sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" + +# Validate syntax +if ! sudo /usr/sbin/visudo -cf "$SUDOERS_FILE"; then + echo "ERROR: sudoers syntax check failed. Removing invalid configuration." + sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.5.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.5.sh new file mode 100644 index 0000000000..398f85ea7f --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.5.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# CIS - Ensure a Separate Timestamp Is Used for Each User-tty Combo +# Sets sudo timestamp_type to tty (per-terminal authentication). + +SUDOERS_FILE="/etc/sudoers.d/CIS_55_sudoconfiguration" + +echo 'Defaults timestamp_type=tty' | sudo tee "$SUDOERS_FILE" > /dev/null +sudo /bin/chmod 0440 "$SUDOERS_FILE" +sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" + +# Validate syntax +if ! sudo /usr/sbin/visudo -cf "$SUDOERS_FILE"; then + echo "ERROR: sudoers syntax check failed. Removing invalid configuration." + sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.6.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.6.sh new file mode 100644 index 0000000000..1597cee0df --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.6.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/sbin/dsenableroot -d diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.7.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.7.sh new file mode 100644 index 0000000000..0442b1ba85 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.7.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/sudo /usr/bin/security authorizationdb write system.login.screensaver use-login-window-ui diff --git a/docs/solutions/cis/macos-15/scripts/CIS_5.8.sh b/docs/solutions/cis/macos-15/scripts/CIS_5.8.sh new file mode 100755 index 0000000000..6e582a62f7 --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_5.8.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "Content of the banner" | sudo tee /Library/Security/PolicyBanner.txt +/usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt +/usr/bin/sudo /bin/chmod o+r /Library/Security/PolicyBanner.txt diff --git a/docs/solutions/cis/macos-15/scripts/CIS_6.1.1.sh b/docs/solutions/cis/macos-15/scripts/CIS_6.1.1.sh new file mode 100755 index 0000000000..5945531b2e --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_6.1.1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# CIS - Ensure Show All Filename Extensions Setting is Enabled +# Applies AppleShowAllExtensions for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + if [ -d "$home_dir" ]; then + /usr/bin/sudo -u "$username" /usr/bin/defaults write "$home_dir/Library/Preferences/.GlobalPreferences.plist" AppleShowAllExtensions -bool true + fi +done diff --git a/docs/solutions/cis/macos-15/scripts/CIS_6.3.6.sh b/docs/solutions/cis/macos-15/scripts/CIS_6.3.6.sh new file mode 100644 index 0000000000..6981b3494c --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_6.3.6.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# CIS - Ensure Safari Advertising Privacy Protection Is Enabled +# Applies privateClickMeasurementEnabled for all local user accounts. + +for username in $(dscl . -list /Users UniqueID | awk '$2 >= 500 {print $1}'); do + home_dir=$(dscl . -read "/Users/$username" NFSHomeDirectory 2>/dev/null | awk '{print $2}') + pref_path="$home_dir/Library/Containers/com.apple.Safari/Data/Library/Preferences/com.apple.Safari" + if [ -d "$home_dir" ]; then + /usr/bin/sudo -u "$username" /usr/bin/defaults write "$pref_path" WebKitPreferences.privateClickMeasurementEnabled -bool true + fi +done diff --git a/docs/solutions/cis/macos-15/scripts/CIS_sudo_logging.sh b/docs/solutions/cis/macos-15/scripts/CIS_sudo_logging.sh new file mode 100644 index 0000000000..03c50f194a --- /dev/null +++ b/docs/solutions/cis/macos-15/scripts/CIS_sudo_logging.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# CIS macOS 15 Sequoia Benchmark +# Ensure Logging Is Enabled for Sudo +# +# Remediation: Creates or updates the sudoers drop-in configuration file +# /etc/sudoers.d/10_cissudoconfiguration with "Defaults log_allowed" so that +# all allowed sudo invocations are captured in the unified log. +# +# Note: macOS ignores sudoers.d files that contain a period in the filename, +# so the file must NOT have an extension. + +SUDOERS_FILE="/etc/sudoers.d/10_cissudoconfiguration" + +# Create the file if it doesn't exist +if [ ! -f "$SUDOERS_FILE" ]; then + /usr/bin/sudo /usr/bin/touch "$SUDOERS_FILE" + /usr/bin/sudo /bin/chmod 0440 "$SUDOERS_FILE" + /usr/bin/sudo /usr/sbin/chown root:wheel "$SUDOERS_FILE" +fi + +# Add "Defaults log_allowed" if not already present +if ! /usr/bin/sudo /usr/bin/grep -q "Defaults log_allowed" "$SUDOERS_FILE"; then + echo "Defaults log_allowed" | /usr/bin/sudo /usr/bin/tee -a "$SUDOERS_FILE" > /dev/null +fi + +# Validate the sudoers file syntax +/usr/bin/sudo /usr/sbin/visudo -cf "$SUDOERS_FILE" +if [ $? -ne 0 ]; then + echo "ERROR: sudoers file syntax check failed. Removing invalid configuration." + /usr/bin/sudo /bin/rm -f "$SUDOERS_FILE" + exit 1 +fi + +echo "Sudo logging enabled: $SUDOERS_FILE configured with 'Defaults log_allowed'" diff --git a/docs/solutions/cis/win-10/README.md b/docs/solutions/cis/win-10/README.md new file mode 100644 index 0000000000..2fe9d0b8eb --- /dev/null +++ b/docs/solutions/cis/win-10/README.md @@ -0,0 +1,23 @@ +# Windows 10 Enterprise benchmarks + +Fleet's policies have been written against v3.0.0 of the benchmark. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. + +For requirements and usage details, see the [CIS Benchmarks](https://fleetdm.com/docs/using-fleet/cis-benchmarks) documentation. + +### Contents + +| Folder | Description | +|--------|-------------| +| `policies/` | GitOps-compatible policy YAML — import via `fleetctl apply` or reference with `- path:` in `fleet.yml` | +| `configuration-profiles/` | SyncML XML profiles — upload via Fleet UI or `fleetctl apply` to enforce the settings checked by the policies | +| `scripts/` | PowerShell scripts — upload via Fleet UI or `fleetctl apply` and link as `run_script` remediation in the corresponding policy | + +### Limitations + +> None. All items in this version of the benchmark are able to be automated. + + +### Checks that require a Group Policy template + +Several items require Group Policy templates in place in order to audit them. +These items are tagged with the label `CIS_group_policy_template_required` in the YAML file, and details about the required Group Policy templates can be found in each item's `resolution`. diff --git a/docs/solutions/cis/win-10/configuration-profiles/audit-policies.xml b/docs/solutions/cis/win-10/configuration-profiles/audit-policies.xml new file mode 100644 index 0000000000..950c7b267a --- /dev/null +++ b/docs/solutions/cis/win-10/configuration-profiles/audit-policies.xml @@ -0,0 +1,325 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogon_AuditCredentialValidation + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditApplicationGroupManagement + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditSecurityGroupManagement + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditUserAccountManagement + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/DetailedTracking_AuditPNPActivity + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/DetailedTracking_AuditProcessCreation + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditAccountLockout + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditGroupMembership + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditLogoff + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditLogon + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditOtherLogonLogoffEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditSpecialLogon + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditDetailedFileShare + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditFileShare + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditOtherObjectAccessEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditRemovableStorage + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditAuthenticationPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditAuthorizationPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditMPSSVCRuleLevelPolicyChange + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditOtherPolicyChangeEvents + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PrivilegeUse_AuditSensitivePrivilegeUse + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditIPsecDriver + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditOtherSystemEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSecurityStateChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSecuritySystemExtension + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSystemIntegrity + + 3 + + diff --git a/docs/solutions/cis/win-10/configuration-profiles/firewall.xml b/docs/solutions/cis/win-10/configuration-profiles/firewall.xml new file mode 100644 index 0000000000..cd1db0bbb8 --- /dev/null +++ b/docs/solutions/cis/win-10/configuration-profiles/firewall.xml @@ -0,0 +1,169 @@ + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogMaxFileSize + + 16384 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogMaxFileSize + + 16384 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalPolicyMerge + + false + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalIpsecPolicyMerge + + false + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogMaxFileSize + + 16384 + + diff --git a/docs/solutions/cis/win-10/configuration-profiles/local-security-options.xml b/docs/solutions/cis/win-10/configuration-profiles/local-security-options.xml new file mode 100644 index 0000000000..9df58d6bf9 --- /dev/null +++ b/docs/solutions/cis/win-10/configuration-profiles/local-security-options.xml @@ -0,0 +1,57 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_EnableAdministratorAccountStatus + + 0 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_EnableGuestAccountStatus + + 0 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_RenameAdministratorAccount + + AdminAcct + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_RenameGuestAccount + + GuestAcct + + diff --git a/docs/solutions/cis/win-10/configuration-profiles/user-rights-assignment.xml b/docs/solutions/cis/win-10/configuration-profiles/user-rights-assignment.xml new file mode 100644 index 0000000000..9882ca54c2 --- /dev/null +++ b/docs/solutions/cis/win-10/configuration-profiles/user-rights-assignment.xml @@ -0,0 +1,328 @@ + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AccessCredentialManagerAsTrustedCaller + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AccessFromNetwork + + *S-1-5-32-544*S-1-5-32-555 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ActAsPartOfTheOperatingSystem + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AllowLocalLogOn + + *S-1-5-32-544*S-1-5-32-545 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/BackupFilesAndDirectories + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ChangeSystemTime + + *S-1-5-32-544*S-1-5-19 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateToken + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateGlobalObjects + + *S-1-5-32-544*S-1-5-19*S-1-5-20*S-1-5-6 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreatePermanentSharedObjects + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateSymbolicLinks + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DebugPrograms + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyAccessFromNetwork + + *S-1-5-32-546*S-1-5-113 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyLocalLogOn + + *S-1-5-32-546 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyRemoteDesktopServicesLogOn + + *S-1-5-32-546*S-1-5-113 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/EnableDelegation + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/RemoteShutdown + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/GenerateSecurityAudits + + *S-1-5-19*S-1-5-20 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ImpersonateClient + + *S-1-5-32-544*S-1-5-19*S-1-5-20*S-1-5-6 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/IncreaseSchedulingPriority + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/LoadUnloadDeviceDrivers + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/LockMemory + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ManageAuditingAndSecurityLog + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ModifyObjectLabel + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ModifyFirmwareEnvironment + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ProfileSingleProcess + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/RestoreFilesAndDirectories + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/TakeOwnership + + *S-1-5-32-544 + + diff --git a/docs/solutions/cis/win-10/policies/cis-policy-queries.yml b/docs/solutions/cis/win-10/policies/cis-policy-queries.yml new file mode 100644 index 0000000000..441ebcbdf5 --- /dev/null +++ b/docs/solutions/cis/win-10/policies/cis-policy-queries.yml @@ -0,0 +1,8749 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- name: CIS - Ensure 'Enforce password history' is set to '24' or more passwords + # platforms: win10 + platform: windows + description: | + This policy check determines the number of renewed, unique passwords that have to be associated with a user account before you can reuse an old password. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 24 or more passwords: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Enforce password history' + query: | + SELECT 1 FROM security_profile_info WHERE password_history_size >= 24; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Maximum password age' is set to '365 or fewer days, but not 0' + # platforms: win10 + platform: windows + description: | + This policy setting defines how long a user can use their password before it expires. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 365 or fewer days, but not 0: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Maximum password age' + query: | + SELECT 1 FROM security_profile_info WHERE (maximum_password_age <= 365 AND maximum_password_age != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Minimum password age' is set to '1 or more days' + # platforms: win10 + platform: windows + description: | + This policy setting determines the number of days that you must use a password before you can + change it. The range of values for this policy setting is between 1 and 999 days. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 1 or more days: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Minimum password age' + query: | + SELECT 1 FROM security_profile_info WHERE minimum_password_age >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Minimum password length' is set to '14 or more characters' + # platforms: win10 + platform: windows + description: | + This policy setting determines the least number of characters that make up a password for a user account. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 14 or more characters + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Minimum password length' + query: | + SELECT 1 FROM security_profile_info WHERE minimum_password_length >= 14; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Password must meet complexity requirements' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting checks all new passwords to ensure that they meet basic requirements for + strong passwords. Passwords that contain only alphanumeric characters are extremely easy to + discover with several publicly available tools. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Password must meet complexity requirements' + query: | + SELECT 1 FROM security_profile_info WHERE password_complexity = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Relax minimum password length limits' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the minimum password length setting can be increased beyond the legacy limit of 14 characters. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Relax minimum password length limits' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SAM\\RelaxMinimumPasswordLengthLimits' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Store passwords using reversible encryption' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the operating system stores passwords in a way that uses + reversible encryption, which provides support for application protocols that require knowledge + of the user's password for authentication purposes. Passwords that are stored with reversible + encryption are essentially the same as plaintext versions of the passwords. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Store passwords using reversible encryption' + query: | + SELECT 1 FROM security_profile_info WHERE clear_text_password = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Account lockout duration' is set to '15 or more minute(s)' + # platforms: win10 + platform: windows + description: | + This policy setting determines the length of time that must pass before a locked account is unlocked and a user can try to log on again. The setting does this by specifying the number of minutes a locked out account will remain unavailable. If the value for this policy setting is configured to 0, locked out accounts will remain locked out until an administrator manually unlocks them. + Although it might seem like a good idea to configure the value for this policy setting to a high value, such a configuration will likely increase the number of calls that the help desk receives to unlock accounts locked by mistake. Users should be aware of the length of time a lock remains in place, so that they realize they only need to call the help desk if they have an extremely urgent need to regain access to their computer. + The recommended state for this setting is: 15 or more minute(s). + Note: Password Policy settings (section 1.1) and Account Lockout Policy settings (section 1.2) must be applied via the Default Domain Policy GPO in order to be globally in effect on domain user accounts as their default behavior. If these settings are configured in another GPO, they will only affect local user accounts on the computers that receive the GPO. However, custom exceptions to the default password policy and account lockout policy rules for specific domain users and/or groups can be defined using Password Settings Objects (PSOs), which are completely separate from Group Policy and most easily configured using Active Directory Administrative Center. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '15 or more minute(s)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account Lockout Policy\Account lockout duration' + query: | + SELECT 1 FROM cis_audit where item = "1.2.1" and CAST(value as integer) >= 15; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Account lockout threshold' is set to '5 or fewer invalid logon attempt(s), but not 0' + # platforms: win10 + platform: windows + description: | + This policy setting determines the number of failed logon attempts before the account is locked. Setting this policy to 0 does not conform to the benchmark as doing so disables the account lockout threshold. + The recommended state for this setting is: 5 or fewer invalid logon attempt(s), but not 0. + Note: Password Policy settings (section 1.1) and Account Lockout Policy settings (section 1.2) must be applied via the Default Domain Policy GPO in order to be globally in effect on domain user accounts as their default behavior. If these settings are configured in another GPO, they will only affect local user accounts on the computers that receive the GPO. However, custom exceptions to the default password policy and account lockout policy rules for specific domain users and/or groups can be defined using Password Settings Objects (PSOs), which are completely separate from Group Policy and most easily configured using Active Directory Administrative Center. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '5 or fewer invalid login attempt(s), but not 0': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account Lockout Policy\Account lockout threshold' + query: | + SELECT 1 FROM cis_audit where item = "1.2.2" and CAST(value as integer) <= 5 and CAST(value as integer) > 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Reset account lockout counter after' is set to '15 or more minute(s)' + # platforms: win10 + platform: windows + description: | + This policy setting determines the length of time before the Account lockout threshold resets to zero. The default value for this policy setting is Not Defined. If the Account lockout threshold is defined, this reset time must be less than or equal to the value for the Account lockout duration setting. + If you leave this policy setting at its default value or configure the value to an interval that is too long, your environment could be vulnerable to a DoS attack. An attacker could maliciously perform a number of failed logon attempts on all users in the organization, which will lock out their accounts. If no policy were determined to reset the account lockout, it would be a manual task for administrators. Conversely, if a reasonable time value is configured for this policy setting, users would be locked out for a set period until all of the accounts are unlocked automatically. + The recommended state for this setting is: 15 or more minute(s). + Note: Password Policy settings (section 1.1) and Account Lockout Policy settings (section 1.2) must be applied via the Default Domain Policy GPO in order to be globally in effect on domain user accounts as their default behavior. If these settings are configured in another GPO, they will only affect local user accounts on the computers that receive the GPO. However, custom exceptions to the default password policy and account lockout policy rules for specific domain users and/or groups can be defined using Password Settings Objects (PSOs), which are completely separate from Group Policy and most easily configured using Active Directory Administrative Center. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '15 or more minute(s)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account Lockout Policy\Reset account lockout counter after' + query: | + SELECT 1 FROM cis_audit where item = "1.2.3" and CAST(value as integer) >= 15; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Access Credential Manager as a trusted caller' is set to 'No One' + # platforms: win10 + platform: windows + description: | + This security setting is used by Credential Manager during Backup and Restore. No accounts should have this user right, as it is only assigned to Winlogon. Users' saved credentials might be compromised if this user right is assigned to other entities. + The recommended state for this setting is: No One. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list of users: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Access Credential Manager as a trusted caller' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/AccessCredentialManagerAsTrustedCaller" + AND mdm_command_output = ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Access this computer from the network' is set to 'Administrators, Remote Desktop Users' + # platforms: win10 + platform: windows + description: | + This policy setting allows other users on the network to connect to the computer and is required by various network protocols that include Server Message Block (SMB)-based protocols, NetBIOS, Common Internet File System (CIFS), and Component Object Model Plus (COM+). + The recommended state for this setting is: Administrators, Remote Desktop Users. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list containing only 'Administrators' and 'Remote Desktop Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Access this computer from the network' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/AccessFromNetwork" + AND mdm_command_output LIKE "Administrators_REMOTE INTERACTIVE LOGON"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: sharon-fdm + +- name: CIS - Ensure 'Act as part of the operating system' is set to 'No One' + # platforms: win10 + platform: windows + description: | + This policy setting allows a process to assume the identity of any user and thus gain access to the resources that the user is authorized to access. + The recommended state for this setting is: No One. + Note: This user right is considered a "sensitive privilege" for the purposes of auditing. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list of users: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Act as part of the operating system' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Config/UserRights/ActAsPartOfTheOperatingSystem" AND mdm_command_output = ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Adjust memory quotas for a process' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE' + # platforms: win10 + platform: windows + description: | + This policy setting allows a user to adjust the maximum amount of memory that is available to a process. The ability to adjust memory quotas is useful for system tuning, but it can be abused. In the wrong hands, it could be used to launch a denial of service (DoS) attack. + The recommended state for this setting is: Administrators, LOCAL SERVICE, NETWORK SERVICE. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list of only 'Administrators', 'LOCAL SERVICE' and 'NETWORK SERVICE': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Adjust memory quotas for a process' + query: | + SELECT 1 FROM cis_audit where item = "2.2.4" AND (regex_match(value,".*(?=.*Administrators)(?=.*LOCAL SERVICE)(?=.*NETWORK SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Allow log on locally' is set to 'Administrators, Users' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users can interactively log on to computers in your environment. Logons that are initiated by pressing the CTRL+ALT+DEL key sequence on the client computer keyboard require this user right. Users who attempt to log on through Terminal Services / Remote Desktop Services or IIS also require this user right. + The recommended state for this setting is: Administrators, Users. + Note: The Guest account is also assigned this user right by default. Although this account is disabled by default, it's recommended that you configure this setting through Group Policy. However, this user right should generally be restricted to the Administrators and Users groups. Assign this user right to the Backup Operators group if your organization requires that they have this capability. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list containing only 'Administrators' and 'Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Allow log on locally' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/AllowLocalLogOn" + AND + ( + mdm_command_output LIKE "Administrators_Users" + OR + mdm_command_output LIKE "Users_Administrators" + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: sharon-fdm + +- name: CIS - Ensure 'Allow log on through Remote Desktop Services' is set to 'Administrators, Remote Desktop Users' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users or groups have the right to log on as a Remote Desktop Services client. If your organization uses Remote Assistance as part of its help desk strategy, create a group and assign it this user right through Group Policy. If the help desk in your organization does not use Remote Assistance, assign this user right only to the Administrators group or use the Restricted Groups feature to ensure that no user accounts are part of the Remote Desktop Users group. + Restrict this user right to the Administrators group, and possibly the Remote Desktop Users group, to prevent unwanted users from gaining access to computers on your network by means of the Remote Assistance feature. + The recommended state for this setting is: Administrators, Remote Desktop Users. Note: The above list is to be treated as a whitelist, which implies that the above + principals need not be present for assessment of this recommendation to pass. + Note #2: In all versions of Windows prior to Windows 7, Remote Desktop Services was known as Terminal Services, so you should substitute the older term if comparing against an older OS. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, Remote Desktop Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Allow log on through Remote Desktop Services' + query: | + SELECT 1 FROM cis_audit where item = "2.2.6" AND (regex_match(value,".*(?=.*Administrators)(?=.*Remote Desktop Users).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Back up files and directories' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to circumvent file and directory permissions to back up the system. This user right is enabled only when an application (such as NTBACKUP) attempts to access a file or directory through the NTFS file system backup application programming interface (API). Otherwise, the assigned file and directory permissions apply. + The recommended state for this setting is: Administrators. + Note: This user right is considered a "sensitive privilege" for the purposes of auditing. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list containing only 'Administrators': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Back up files and directories' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/BackupFilesAndDirectories" AND mdm_command_output = "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: sharon-fdm + +- name: CIS - Ensure 'Change the system time' is set to 'Administrators, LOCAL SERVICE' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users and groups can change the time and date on the + internal clock of the computers in your environment. Users who are assigned this user right can + affect the appearance of event logs. When a computer's time setting is changed, logged events + reflect the new time, not the actual time that the events occurred. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, LOCAL SERVICE': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Change the system time' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ChangeSystemTime" AND mdm_command_output LIKE "Administrators%" AND mdm_command_output LIKE "%LOCAL SERVICE"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Change the time zone' is set to 'Administrators, LOCAL SERVICE, Users' + # platforms: win10 + platform: windows + description: | + This setting determines which users can change the time zone of the computer. This ability holds no great danger for the computer and may be useful for mobile workers. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, LOCAL SERVICE, Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Change the time zone' + query: | + SELECT 1 FROM cis_audit where item = "2.2.9" AND (regex_match(value,".*(?=.*Administrators)(?=.*Users)(?=.*LOCAL SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Create a pagefile' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to change the size of the pagefile. By making the pagefile extremely large or extremely small, an attacker could easily affect the performance of a compromised computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create a pagefile' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ChangeSystemTime" AND mdm_command_output LIKE "%Administrators%"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Create a token object' is set to an empty list + # platforms: win10 + platform: windows + description: | + This policy setting allows a process to create an access token, which may provide elevated rights to access sensitive data. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create a token object' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateToken" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Create global objects' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to change the size of the pagefile. By making the pagefile extremely large or extremely small, an attacker could easily affect the performance of a compromised computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create global objects' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateGlobalObjects" AND (regex_match(mdm_command_output,".*(Administrators|LOCAL SERVICE|NETWORK SERVICE|([^\w\s]SERVICE)).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Create permanent shared objects' is set to an empty list + # platforms: win10 + platform: windows + description: | + This user right is useful to kernel-mode components that extend the object namespace. However, + components that run in kernel mode have this user right inherently. Therefore, it is typically + not necessary to specifically assign this user right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create permanent shared objects' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreatePermanentSharedObjects" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Create symbolic links' is set to 'Administrators or NT VIRTUAL MACHINE\Virtual Machines' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users can create symbolic links. In Windows Vista, existing + NTFS file system objects, such as files and folders, can be accessed by referring to a new kind + of file system object called a symbolic link. A symbolic link is a pointer (much like a shortcut + or .lnk file) to another file system object, which can be a file, folder, shortcut or another + symbolic link. The difference between a shortcut and a symbolic link is that a shortcut only + works from within the Windows shell. To other programs and applications, shortcuts are just + another file, whereas with symbolic links, the concept of a shortcut is implemented as a feature + of the NTFS file system. Symbolic links can potentially expose security vulnerabilities in + applications that are not designed to use them. For this reason, the privilege for creating + symbolic links should only be assigned to trusted users. By default, only Administrators can + create symbolic links. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators or NT VIRTUAL MACHINE\Virtual Machines' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create symbolic links' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateSymbolicLinks" AND (regex_match(mdm_command_output,".*(Administrators|Virtual Machines).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Debug programs' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting determines which user accounts will have the right to attach a debugger to + any process or to the kernel, which provides complete access to sensitive and critical operating + system components. Developers who are debugging their own applications do not need to be + assigned this user right; however, developers who are debugging new system components will need it. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Debug programs' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DebugPrograms" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny access to this computer from the network' includes 'Guest' + # platforms: win10 + platform: windows + description: | + This policy setting prohibits users from connecting to a computer from across the network, which + would allow users to access and potentially modify data remotely. In high security environments, + there should be no need for remote users to access data on a computer. Instead, file sharing + should be accomplished through the use of network servers. This user right supersedes the Access + this computer from the network user right if an account is subject to both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guest' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny access to this computer from the network' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyAccessFromNetwork" AND (regex_match(mdm_command_output,".*(Guest).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on as a batch job' includes 'Guests' + # platforms: win10 + platform: windows + description: | + This policy setting determines which accounts will not be able to log on to the computer as a + batch job. A batch job is not a batch (.bat) file, but rather a batch-queue facility. Accounts that use the Task Scheduler to schedule jobs need this user right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on as a batch job' + query: | + SELECT 1 FROM cis_audit where item = "2.2.17" AND (regex_match(value,".*(?=.*Guests).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on as a service' includes 'Guests' + # platforms: win10 + platform: windows + description: | + This security setting determines which service accounts are prevented from registering a process + as a service. This user right supersedes the Log on as a service user right if an account is subject to both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on as a service' + query: | + SELECT 1 FROM cis_audit where item = "2.2.18" AND (regex_match(value,".*(?=.*Guests).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on locally' includes 'Guest' + # platforms: win10 + platform: windows + description: | + This security setting determines which users are prevented from logging on at the computer. This + policy setting supersedes the Allow log on locally policy setting if an account is subject to + both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on locally' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyLocalLogOn" AND (regex_match(mdm_command_output,".*(Guest).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on through Remote Desktop Services' includes 'Guest' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether users can log on as Remote Desktop clients. This user right supersedes the Allow log on through Remote Desktop Services user right if an account is subject to both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on through Remote Desktop Services' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyRemoteDesktopServicesLogOn" AND (regex_match(mdm_command_output,".*(Guest).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Enable computer and user accounts to be trusted for delegation' is set to an empty list + # platforms: win10 + platform: windows + description: | + This policy setting allows users to change the Trusted for Delegation setting on a computer object in Active Directory. Abuse of this privilege could allow unauthorized users to impersonate other users on the network. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Enable computer and user accounts to be trusted for delegation' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/EnableDelegation" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Force shutdown from a remote system' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to shut down Windows Vista-based and newer computers from + remote locations on the network. Anyone who has been assigned this user right can cause a denial + of service (DoS) condition, which would make the computer unavailable to service user requests. + Therefore, it is recommended that only highly trusted administrators be assigned this user. + right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Force shutdown from a remote system' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/RemoteShutdown" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Generate security audits' is set to 'LOCAL SERVICE, NETWORK SERVICE' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users or processes can generate audit records in the Security log. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Generate security audits' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/GenerateSecurityAudits" AND (regex_match(mdm_command_output,".*(LOCAL SERVICE|NETWORK SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Impersonate a client after authentication' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE' + # platforms: win10 + platform: windows + description: | + The policy setting allows programs that run on behalf of a user to impersonate that user (or + another specified account) so that they can act on behalf of the user. If this user right is + required for this kind of impersonation, an unauthorized user will not be able to convince a + client to connect—for example, by remote procedure call (RPC) or named pipes—to a service that + they have created to impersonate that client, which could elevate the unauthorized user's permissions to administrative or system levels. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Impersonate a client after authentication' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ImpersonateClient" AND (regex_match(mdm_command_output,".*(Administrators|LOCAL SERVICE|NETWORK SERVICE|([^\w\s]SERVICE)).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Increase scheduling priority' is set to 'Administrators, Window Manager\Window Manager Group' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether users can increase the base priority class of a process. + (It is not a privileged operation to increase relative priority within a priority class.) This + user right is not required by administrative tools that are supplied with the operating system but might be required by software development tools. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Increase scheduling priority' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/IncreaseSchedulingPriority" AND (regex_match(mdm_command_output,".*(Administrators|Window Manager Group).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Load and unload device drivers' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to dynamically load a new device driver on a system. An + attacker could potentially use this capability to install malicious code that appears to be a + device driver. This user right is required for users to add local printers or printer drivers in + Windows. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Increase scheduling priority' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/LoadUnloadDeviceDrivers" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Lock pages in memory' is set to an empty list + # platforms: win10 + platform: windows + description: | + This policy setting allows a process to keep data in physical memory, which prevents the system from paging the data to virtual memory on disk. If this user right is assigned, significant degradation of system performance can occur. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Lock pages in memory' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/LockMemory" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Log on as a batch job' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows accounts to log on using the task scheduler service. Because the task + scheduler is often used for administrative purposes, it may be needed in enterprise + environments. However, its use should be restricted in high security environments to prevent + misuse of system resources or to prevent attackers from using the right to launch malicious code + after gaining user level access to a computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Log on as a batch job' + query: | + SELECT 1 FROM cis_audit where item = "2.2.28" AND (regex_match(value,".*(?=.*Administrators).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Configure 'Log on as a service' + # platforms: win10 + platform: windows + description: | + This policy setting allows accounts to launch network services or to register a process as a + service running on the system. This user right should be restricted on any computer in a high + security environment, but because many applications may require this privilege, it should be + carefully evaluated and tested before configuring it in an enterprise environment. On Windows + Vista-based (and newer) computers, no users or groups have this privilege by default. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Log on as a service' + query: | + SELECT 1 FROM cis_audit where item = "2.2.29" AND value IN (",", "WDAGUtilityAccount,"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Manage auditing and security log' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users can change the auditing options for files and directories and clear the Security log. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Manage auditing and security log' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ManageAuditingAndSecurityLog" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Modify an object label' is set to an empty list + # platforms: win10 + platform: windows + description: | + This privilege determines which user accounts can modify the integrity label of objects, such as + files, registry keys, or processes owned by other users. Processes running under a user account + can modify the label of an object owned by that user to a lower level without this privilege. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Modify an object label' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ModifyObjectLabel" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Modify firmware environment values' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to configure the system-wide environment variables that affect + hardware configuration. This information is typically stored in the Last Known Good + Configuration. Modification of these values and could lead to a hardware failure that would result in a denial of service condition. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Modify firmware environment values' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ModifyFirmwareEnvironment" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Perform volume maintenance tasks' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to manage the system's volume or disk configuration, which could allow a user to delete a volume and cause data loss as well as a denial-ofservice condition. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Perform volume maintenance tasks' + query: | + SELECT 1 FROM cis_audit where item = "2.2.33" AND (regex_match(value,".*(?=.*Administrators).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Profile single process' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users can use tools to monitor the performance of + non-system processes. Typically, you do not need to configure this user right to use the + Microsoft Management Console (MMC) Performance snap-in. However, you do need this user right if + System Monitor is configured to collect data using Windows Management Instrumentation (WMI). + Restricting the Profile single process user right prevents intruders from gaining additional + information that could be used to mount an attack on the system. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Profile single process' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ProfileSingleProcess" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Profile system performance' is set to 'Administrators, NT SERVICE\WdiServiceHost' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to use tools to view the performance of different system + processes, which could be abused to allow attackers to determine a system's active processes and + provide insight into the potential attack surface of the computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to 'Administrators, NT SERVICE\WdiServiceHost' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Profile system performance' + query: | + SELECT 1 FROM cis_audit where item = "2.2.35" AND (regex_match(value,".*(?=.*Administrators)(?=.*WdiServiceHost).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Replace a process level token' is set to 'LOCAL SERVICE, NETWORK SERVICE' + # platforms: win10 + platform: windows + description: | + This policy setting allows one process or service to start another service or process with a + different security access token, which can be used to modify the security access token of that sub-process and result in the escalation of privileges. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to 'LOCAL SERVICE, NETWORK SERVICE' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Replace a process level token' + query: | + SELECT 1 FROM cis_audit where item = "2.2.36" AND (regex_match(value,".*(?=.*LOCAL SERVICE)(?=.*NETWORK SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Restore files and directories' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users can bypass file, directory, registry, and other + persistent object permissions when restoring backed up files and directories on computers that + run Windows Vista (or newer) in your environment. This user right also determines which users + can set valid security principals as object owners; it is similar to the Back up files and + directories user right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Restore files and directories' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/RestoreFilesAndDirectories" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Shut down the system' is set to 'Administrators, Users' + # platforms: win10 + platform: windows + description: | + This policy setting determines which users who are logged on locally to the computers in your + environment can shut down the operating system with the Shut Down command. Misuse of this user right can result in a denial of service condition. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to 'Administrators, Users' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Shut down the system' + query: | + SELECT 1 FROM cis_audit where item = "2.2.38" AND (regex_match(value,".*(?=.*Administrators)(?=.*Users).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Take ownership of files or other objects' is set to 'Administrators' + # platforms: win10 + platform: windows + description: | + This policy setting allows users to take ownership of files, folders, registry keys, processes, + or threads. This user right bypasses any permissions that are in place to protect objects to give ownership to the specified user. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Take ownership of files or other objects' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/TakeOwnership" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Accounts Block Microsoft accounts' is set to 'Users can't add or log on with Microsoft accounts' + # platforms: win10 + platform: windows + description: | + This policy setting prevents users from adding new Microsoft accounts on this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Users can't add or log on with Microsoft account': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Block Microsoft accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\NoConnectedUser' AND data == 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Accounts Guest account status' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the Guest account is enabled or disabled. The Guest account allows unauthenticated network users to gain access to the system. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Guest account status' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_EnableGuestAccountStatus" and mdm_command_output == 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Accounts Limit local account use of blank passwords to console logon only' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether local accounts that are not password protected can be used to log on from locations other than the physical computer console. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Limit local account use of blank passwords to console logon only' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\LimitBlankPasswordUse' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Accounts Rename administrator account' + # platforms: win10 + platform: windows + description: | + The built-in local administrator account is a well-known account name that attackers will + target. It is recommended to choose another name for this account, and to avoid names that + denote administrative or elevated access accounts. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to value different than 'Administrator': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Rename administrator account' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_RenameAdministratorAccount" and mdm_command_output != "Administrator"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Accounts Rename guest account' + # platforms: win10 + platform: windows + description: | + The built-in local guest account is another well-known name to attackers. It is recommended to + rename this account to something that does not indicate its purpose. Even if you disable this + account, which is recommended, ensure that you rename it for added security. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to value different than 'Guest': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Rename guest account' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_RenameGuestAccount" and mdm_command_output != "Guest"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Audit Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows administrators to enable the more precise auditing capabilities. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\SCENoApplyLegacyAuditPolicy' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Audit Shut down system immediately if unable to log security audits' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the system shuts down if it is unable to log Security + events. It is a requirement for Trusted Computer System Evaluation Criteria (TCSEC)-C2 and + Common Criteria certification to prevent auditable events from occurring if the audit system is + unable to log them. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Audit: Shut down system immediately if unable to log security audits' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\crashonauditfail' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Devices Prevent users from installing printer drivers' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + For a computer to print to a shared printer, the driver for that shared printer must be + installed on the local computer. This security setting determines who is allowed to install a + printer driver as part of connecting to a shared printer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Devices: Prevent users from installing printer drivers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Print\\Providers\\LanManPrint Services\\Servers\\AddPrinterDrivers' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Digitally encrypt or sign secure channel data (always)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether all secure channel traffic that is initiated by the + domain member must be signed or encrypted. + When a computer joins a domain, a computer account is created. After it joins the domain, the + computer uses the password for that account to create a secure channel with the Domain + Controller for its domain every time that it restarts. Requests that are sent on the secure + channel are authenticated—and sensitive information such as passwords are encrypted—but the + channel is not integrity-checked, and not all information is encrypted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Digitally encrypt or sign secure channel data (always)' + query: | + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireSignOrSeal' AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Digitally encrypt secure channel data (when possible)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether a domain member should attempt to negotiate encryption + for all secure channel traffic that it initiates. + When a computer joins a domain, a computer account is created. After it joins the domain, the + computer uses the password for that account to create a secure channel with the Domain + Controller for its domain every time that it restarts. Requests that are sent on the secure + channel are authenticated—and sensitive information such as passwords are encrypted—but the + channel is not integrity-checked, and not all information is encrypted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Digitally encrypt secure channel data (when possible)' + query: | + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SealSecureChannel' AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Digitally sign secure channel data (when possible)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether a domain member should attempt to negotiate whether all + secure channel traffic that it initiates must be digitally signed. Digital signatures protect + the traffic from being modified by anyone who captures the data as it traverses the network. + When a computer joins a domain, a computer account is created. After it joins the domain, the + computer uses the password for that account to create a secure channel with the Domain + Controller for its domain every time that it restarts. Requests that are sent on the secure + channel are authenticated—and sensitive information such as passwords are encrypted—but the + channel is not integrity-checked, and not all information is encrypted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Digitally sign secure channel data (when possible)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SignSecureChannel' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Disable machine account password changes' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether a domain member can periodically change its computer + account password. Computers that cannot automatically change their account passwords are + potentially vulnerable, because an attacker might be able to determine the password for the + system's domain account. + The default configuration for Windows Server 2003-based computers that belong to a domain is + that they are automatically required to change the passwords for their accounts every 30 days. + If you disable this policy setting, computers that run Windows Server 2003 will retain the same + passwords as their computer accounts. Computers that are no longer able to automatically change + their account password are at risk from an attacker who could determine the password for the + computer's domain account. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Disable machine account password changes' + query: | + SELECT 1 FROM registry WHERE + path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange' AND data = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Maximum machine account password age' is set to '30 or fewer days, but not 0' + # platforms: win10 + platform: windows + description: | + This policy setting determines the maximum allowable age for a computer account password. By + default, domain members automatically change their domain passwords every 30 days. If you + increase this interval significantly so that the computers no longer change their passwords, an + attacker would have more time to undertake a brute force attack against one of the computer + accounts. + In Active Directory-based domains, each computer has an account and password just like every + user. By default, the domain members automatically change their domain password every 30 days. + If you increase this interval significantly, or set it to 0 so that the computers no longer + change their passwords, an attacker will have more time to undertake a brute force attack to + guess the password of one or more computer accounts. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 30 or fewer days, but not 0: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Maximum machine account password age' + query: | + SELECT 1 FROM registry WHERE + path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\MaximumPasswordAge' + AND data <= 30 AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Require strong (Windows 2000 or later) session key' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + When this policy setting is enabled, a secure channel can only be established with Domain + Controllers that are capable of encrypting secure channel data with a strong (128-bit) session + key. To enable this policy setting, all Domain Controllers in the domain must be able to encrypt + secure channel data with a strong key, which means all Domain Controllers must be running + Microsoft Windows 2000 or newer. + + Session keys that are used to establish secure channel communications between Domain Controllers + and member computers are much stronger in Windows 2000 than they were in previous Microsoft + operating systems. Whenever possible, you should take advantage of these stronger session keys + to help protect secure channel communications from attacks that attempt to hijack network + sessions and eavesdropping. (Eavesdropping is a form of hacking in which network data is read or + altered in transit. The data can be modified to hide or change the sender, or be redirected.) + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Require strong (Windows 2000 or later) session key' + query: | + SELECT 1 FROM registry WHERE + path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireStrongKey' AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Interactive logon Do not require CTRL+ALT+DEL' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether users must press CTRL+ALT+DEL before they log on. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Do not require CTRL+ALT+DEL' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableCAD' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Don't display last signed-in' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the account name of the last user to log on to the client + computers in your organization will be displayed in each computer's respective Windows logon + screen. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Don't display last signed-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\dontdisplaylastusername' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Machine account lockout threshold' is set to '10 or fewer invalid logon attempts, but not 0' + # platforms: win10 + platform: windows + description: | + This security setting determines the number of failed logon attempts that causes the machine to be locked out. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '10 or fewer invalid logon attempts, but not 0': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Machine account lockout threshold' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\MaxDevicePasswordFailedAttempts' AND data <= 10 AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Machine inactivity limit' is set to '900 or fewer second(s), but not 0' + # platforms: win10 + platform: windows + description: | + Windows notices inactivity of a logon session, and if the amount of inactive time exceeds the inactivity limit, then the screen saver will run, locking the session. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '900 or fewer seconds, but not 0': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Machine inactivity limit' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\InactivityTimeoutSecs' AND data <= 900 AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Interactive logon Message text for users attempting to log on' + # platforms: win10 + platform: windows + description: | + This policy setting specifies a text message that displays to users when they log on. Set the + following group policy to a value that is consistent with the security and operational + requirements of your organization. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a value that is consistent with the security and operational requirements + of your organization: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Message text for users attempting to log on' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\legalnoticetext' AND data != ""); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Interactive logon Message title for users attempting to log on' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the text displayed in the title bar of the window that users see + when they log on to the system. Configure this setting in a manner that is consistent with the + security and operational requirements of your organization. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a value that is consistent with the security and operational requirements + of your organization: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Message title for users attempting to log on' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\legalnoticecaption' AND data != ""); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Prompt user to change password before expiration' is set to 'between 5 and 14 days' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the text displayed in the title bar of the window that users see + when they log on to the system. Configure this setting in a manner that is consistent with the + security and operational requirements of your organization. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a value 'between 5 and 14 days': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Prompt user to change password before expiration' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\PasswordExpiryWarning' AND CAST(data AS INTEGER) >= 5 AND CAST(data AS INTEGER) <= 14); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Smart card removal behavior' is set to 'Lock Workstation' or higher + # platforms: win10 + platform: windows + description: | + This policy setting determines what happens when the smart card for a logged-on user is removed from the smart card reader. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Lock Workstation (or, if applicable for your environment, Force Logoff or Disconnect if a Remote Desktop Services session)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Smart card removal behavior' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\scremoveoption' AND CAST(data AS INTEGER) >= 1 AND CAST(data AS INTEGER) <= 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network client Digitally sign communications (always)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether packet signing is required by the SMB client component. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Digitally sign communications (always)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\RequireSecuritySignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network client Digitally sign communications (if server agrees)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the SMB client will attempt to negotiate SMB packet signing. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Digitally sign communications (if server agrees)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\EnableSecuritySignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network client Send unencrypted password to third-party SMB servers' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the SMB redirector will send plaintext passwords during authentication to third-party SMB servers that do not support password encryption. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Send unencrypted password to third-party SMB servers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\EnablePlainTextPassword' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Amount of idle time required before suspending session' is set to '15 or fewer minute(s)' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify the amount of continuous idle time that must pass in + an SMB session before the session is suspended because of inactivity. Administrators can use + this policy setting to control when a computer suspends an inactive SMB session. If client + activity resumes, the session is automatically reestablished. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Amount of idle time required before suspending session' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\autodisconnect' AND CAST(data AS INTEGER) <= 15 AND CAST(data AS INTEGER) >= 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Digitally sign communications (always)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether packet signing is required by the SMB server component. + Enable this policy setting in a mixed environment to prevent downstream clients from using the + workstation as a network server. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Digitally sign communications (always)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\requiresecuritysignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Digitally sign communications (if client agrees)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the SMB server will negotiate SMB packet signing with + clients that request it. If no signing request comes from the client, a connection will be + allowed without a signature if the Microsoft network server: Digitally sign communications (always) setting is not enabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Digitally sign communications (if client agrees)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\enablesecuritysignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Disconnect clients when logon hours expire' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This security setting determines whether to disconnect users who are connected to the local + computer outside their user account's valid logon hours. This setting affects the Server Message + Block (SMB) component. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Disconnect clients when logon hours expire' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\enableforcedlogoff' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Server SPN target name validation level' is set to 'Accept if provided by client' + # platforms: win10 + platform: windows + description: | + This policy setting controls the level of validation a computer with shared folders or printers + (the server) performs on the service principal name (SPN) that is provided by the client + computer when it establishes a session using the server message block (SMB) protocol. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Accept if provided by client': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Server SPN target name validation level' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\SmbServerNameHardeningLevel' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Network access : Allow anonymous SID/Name translation' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether an anonymous user can request security identifier + (SID) attributes for another user, or use a SID to obtain its corresponding user name. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Allow anonymous SID/Name translation' + query: | + SELECT 1 FROM cis_audit where item = "2.3.10.1" AND value = "0"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Network access: Do not allow anonymous enumeration of SAM accounts' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the ability of anonymous users to enumerate the accounts in + the Security Accounts Manager (SAM). If you enable this policy setting, users with + anonymous connections will not be able to enumerate domain account user names on the + systems in your environment. This policy setting also allows additional restrictions on + anonymous connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Do not allow anonymous enumeration of SAM accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\restrictanonymoussam' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Do not allow anonymous enumeration of SAM accounts and shares' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the ability of anonymous users to enumerate SAM accounts as + well as shares. If you enable this policy setting, anonymous users will not be able to + enumerate domain account user names and network share names on the systems in your + environment. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Do not allow anonymous enumeration of SAM accounts and shares' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\restrictanonymous' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Do not allow storage of passwords and credentials for network authentication' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether Credential Manager (formerly called Stored User + Names and Passwords) saves passwords or credentials for later use when it gains domain + authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Do not allow storage of passwords and credentials for network authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\disabledomaincreds' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Let Everyone permissions apply to anonymous users' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines what additional permissions are assigned for anonymous + connections to the computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Let Everyone permissions apply to anonymous users' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\everyoneincludesanonymous' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Named Pipes that can be accessed anonymously' is set to 'None' + # platforms: win10 + platform: windows + description: | + This policy setting determines which communication sessions, or pipes, will have attributes + and permissions that allow anonymous access. + resolution: | + To establish the recommended configuration via GP, set the following UI path to + (i.e. None): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Named Pipes that can be accessed anonymously' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters\NullSessionPipes' and data == ''); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Remotely accessible registry paths' is configured + # platforms: win10 + platform: windows + description: | + This policy setting determines which registry paths will be accessible over the network, + regardless of the users or groups listed in the access control list (ACL) of the winreg + registry key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to: + System\CurrentControlSet\Control\ProductOptions + System\CurrentControlSet\Control\Server Applications + SOFTWARE\Microsoft\Windows NT\CurrentVersion + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Remotely accessible registry paths' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers\\Winreg\\AllowedExactPaths\Machine' and data == 'System\CurrentControlSet\Control\ProductOptions,System\CurrentControlSet\Control\Server Applications,Software\Microsoft\Windows NT\CurrentVersion'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Remotely accessible registry paths and sub-paths' is configured + # platforms: win10 + platform: windows + description: | + This policy setting determines which registry paths and sub-paths will be accessible over + the network, regardless of the users or groups listed in the access control list (ACL) of the + winreg registry key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to: + System\CurrentControlSet\Control\Print\Printers + System\CurrentControlSet\Services\Eventlog + SOFTWARE\Microsoft\OLAP Server + SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print + SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows + System\CurrentControlSet\Control\ContentIndex + System\CurrentControlSet\Control\Terminal Server + System\CurrentControlSet\Control\Terminal Server\UserConfig + System\CurrentControlSet\Control\Terminal Server\DefaultUserConfiguration + SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib + System\CurrentControlSet\Services\SysmonLog + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Remotely accessible registry paths and sub-paths' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers\\Winreg\\AllowedPaths\Machine' and data == 'System\CurrentControlSet\Control\Print\Printers,System\CurrentControlSet\Services\Eventlog,Software\Microsoft\OLAP Server,Software\Microsoft\Windows NT\CurrentVersion\Print,Software\Microsoft\Windows NT\CurrentVersion\Windows,System\CurrentControlSet\Control\ContentIndex,System\CurrentControlSet\Control\Terminal Server,System\CurrentControlSet\Control\Terminal Server\UserConfig,System\CurrentControlSet\Control\Terminal Server\DefaultUserConfiguration,Software\Microsoft\Windows NT\CurrentVersion\Perflib,System\CurrentControlSet\Services\SysmonLog'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Restrict anonymous access to Named Pipes and Shares' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + When enabled, this policy setting restricts anonymous access to only those shares and + pipes that are named in the Network access: Named pipes that can be accessed + anonymously and Network access: Shares that can be accessed anonymously settings. + This policy setting controls null session access to shares on your computers by adding + RestrictNullSessAccess with the value 1 in the + HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters + registry key. This registry value toggles null session shares on or off to control whether the + server service restricts unauthenticated clients' access to named resources. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Restrict anonymous access to Named Pipes and Shares' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters\restrictnullsessaccess' and data == '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Restrict clients allowed to make remote calls to SAM' is set to 'Administrators: Remote Access: Allow' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to restrict remote RPC connections to SAM. + resolution: | + To establish the recommended configuration via GP, set the following UI path to + Administrators: Remote Access: Allow: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Restrict clients allowed to make remote calls to SAM' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\RestrictRemoteSAM' and (data == '' or data == 'O:BAG:BAD:')); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Shares that can be accessed anonymously' is set to 'None' + # platforms: win10 + platform: windows + description: | + This policy setting determines which network shares can be accessed by anonymous users. + The default configuration for this policy setting has little effect because all users have to be + authenticated before they can access shared resources on the server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to + (i.e. None): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Shares that can be accessed anonymously' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters\NullSessionShares' and data == ''); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Sharing and security model for local accounts' is set to 'Classic - local users authenticate as themselves' + # platforms: win10 + platform: windows + description: | + This policy setting determines how network logons that use local accounts are + authenticated. The Classic option allows precise control over access to resources, including + the ability to assign different types of access to different users for the same resource. The + Guest only option allows you to treat all users equally. In this context, all users authenticate + as Guest only to receive the same access level to a given resource. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Classic - + local users authenticate as themselves: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Sharing and security model for local accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\forceguest' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: CIS - Ensure 'Network security Allow Local System to use computer identity for NTLM' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether Local System services that use Negotiate when reverting to NTLM authentication can use the computer identity. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Allow Local System to use computer identity for NTLM' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\UseMachineId' COLLATE NOCASE AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Allow LocalSystem NULL session fallback' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether NTLM is allowed to fall back to a NULL session when used with LocalSystem. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Allow LocalSystem NULL session fallback' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0\\allownullsessionfallback' COLLATE NOCASE AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network Security Allow PKU2U authentication requests to this computer to use online identities' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting determines if online identities are able to authenticate to this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network Security: Allow PKU2U authentication requests to this computer to use online identities' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\pku2u\\AllowOnlineID' COLLATE NOCASE AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Configure encryption types allowed for Kerberos' is set to 'AES128_HMAC_SHA1, AES256_HMAC_SHA1, Future encryption types' + # platforms: win10 + platform: windows + description: | + This setting determines if online identities are able to authenticate to this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'AES128_HMAC_SHA1, AES256_HMAC_SHA1, Future encryption types': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Configure encryption types allowed for Kerberos' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\Kerberos\\Parameters\\SupportedEncryptionTypes' COLLATE NOCASE AND ((CAST(data AS INTEGER) & 0x8) AND (CAST(data AS INTEGER) & 0x10) AND (CAST(data AS INTEGER) & 0xe0) AND ((CAST(data AS INTEGER) & 0x1) = 0) AND ((CAST(data AS INTEGER) & 0x2) = 0) AND ((CAST(data AS INTEGER) & 0x4) = 0))); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Do not store LAN Manager hash value on next password change' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the LAN Manager (LM) hash value for the new password is + stored when the password is changed. The LM hash is relatively weak and prone to attack compared + to the cryptographically stronger Microsoft Windows NT hash. Since LM hashes are stored on the + local computer in the security database, passwords can then be easily compromised if the + database is attacked. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Do not store LAN Manager hash value on next password change' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\NoLmHash' COLLATE NOCASE AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Force logoff when logon hours expire' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether to disconnect users who are connected to the local + computer outside their user account's valid logon hours. This setting affects the Server Message + Block (SMB) component. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Force logoff when logon hours expire' + query: | + SELECT 1 FROM cis_audit where item = "2.3.11.6" AND value = "1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security LAN Manager authentication level' is set to 'Send NTLMv2 response only. Refuse LM & NTLM' + # platforms: win10 + platform: windows + description: | + LAN Manager (LM) was a family of early Microsoft client/server software (predating Windows NT) + that allowed users to link personal computers together on a single network. LM network + capabilities included transparent file and print sharing, user security features, and network + administration tools. In Active Directory domains, the Kerberos protocol is the default + authentication protocol. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Send NTLMv2 response only. Refuse LM & NTLM': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: LAN Manager authentication level' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\LmCompatibilityLevel' COLLATE NOCASE AND data == 5); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security LDAP client signing requirements' is set to 'Negotiate signing or higher' + # platforms: win10 + platform: windows + description: | + This policy setting determines the level of data signing that is requested on behalf of clients that issue LDAP BIND requests. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Negotiate signing or higher': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: LDAP client signing requirements' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\ldap\\ldapclientintegrity' AND data >= 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Network security: Restrict NTLM: Audit Incoming NTLM Traffic' is set to 'Enable auditing for all accounts' + # platforms: win10 + platform: windows + description: | + This policy setting allows the auditing of incoming NTLM traffic. Events for this setting are recorded in the operational event log (e.g. Applications and Services Log\Microsoft\Windows\NTLM). + The recommended state for this setting is: 'Enable auditing for all accounts'. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enable auditing for all accounts: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Restrict NTLM: Audit Incoming NTLM Traffic' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\AuditReceivingNTLMTraffic' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers' is set to 'Audit all' or higher + # platforms: win10 + platform: windows + description: | + This policy setting allows the auditing of outgoing NTLM traffic. Events for this setting are recorded in the operational event log (e.g. Applications and Services Log\Microsoft\Windows\NTLM). + The recommended state for this setting is: 'Audit all'. Configuring this setting to 'Deny All' also conforms to the benchmark. + Note: Configuring this setting to Deny All is more secure, however it could have a + negative impact on applications that still require NTLM. Test carefully before + implementing the Deny All value. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Audit all' or higher: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Restrict NTLM: Outgoing NTLM traffic to remote servers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\RestrictSendingNTLMTraffic' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: CIS - Ensure 'System cryptography Force strong key protection for user keys stored on the computer' is set to 'User is prompted when the key is first used or higher' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether users' private keys (such as their S-MIME keys) require a password to be used. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'User is prompted when the key is first used or higher': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\System cryptography: Force strong key protection for user keys stored on the computer' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Cryptography\\ForceKeyProtection' AND CAST(data AS INTEGER) >= 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'System objects Require case insensitivity for non Windows subsystems' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether case insensitivity is enforced for all subsystems. The + Microsoft Win32 subsystem is case insensitive. However, the kernel supports case sensitivity for + other subsystems, such as the Portable Operating System Interface for UNIX (POSIX). Because + Windows is case insensitive (but the POSIX subsystem will support case sensitivity), failure to + enforce this policy setting makes it possible for a user of the POSIX subsystem to create a file + with the same name as another file by using mixed case to label it. Such a situation can block + access to these files by another user who uses typical Win32 tools, because only one of the + files will be available. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\System objects: Require case insensitivity for non Windows subsystems' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\\obcaseinsensitive' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'System objects Strengthen default permissions of internal system objects (e.g. Symbolic Links)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines the strength of the default discretionary access control list + (DACL) for objects. Active Directory maintains a global list of shared system resources, such as + DOS device names, mutexes, and semaphores. In this way, objects can be located and shared among + processes. Each type of object is created with a default DACL that specifies who can access the + objects and what permissions are granted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\System objects: Strengthen default permissions of internal system objects (e.g. Symbolic Links) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\ProtectionMode' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'User Account Control: Admin Approval Mode for the Built-in Administrator account' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the behavior of Admin Approval Mode for the built-in Administrator account. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Admin Approval Mode for the Built-in Administrator account' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\FilterAdministratorToken' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode' is set to 'Prompt for consent on the secure desktop' + # platforms: win10 + platform: windows + description: | + This policy setting controls the behavior of the elevation prompt for administrators. + The recommended state for this setting is: Prompt for consent on the secure desktop. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Prompt for consent on the secure desktop': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\ConsentPromptBehaviorAdmin' AND data == 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Behavior of the elevation prompt for standard users' is set to 'Automatically deny elevation requests' + # platforms: win10 + platform: windows + description: | + This policy setting controls the behavior of the elevation prompt for standard users. + The recommended state for this setting is: Automatically deny elevation requests. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Automatically deny elevation requests: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Behavior of the elevation prompt for standard users' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\ConsentPromptBehaviorUser' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Detect application installations and prompt for elevation' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the behavior of application installation detection for the computer. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Detect application installations and prompt for elevation' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableInstallerDetection' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Only elevate UIAccess applications that are installed in secure locations' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether applications that request to run with a User Interface Accessibility (UIAccess) integrity level must reside in a secure location in the file system. Secure locations are limited to the following: + ...\Program Files\, including subfolders + ...\Windows\System32\ + ...\Program Files (x86)\, including subfolders (for 64-bit versions of Windows) + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Only elevate UIAccess applications that are installed in secure locations' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableSecureUIAPaths' and data == '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Run all administrators in Admin Approval Mode' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the behavior of all User Account Control (UAC) policy settings for the computer. If you change this policy setting, you must restart your computer. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Run all administrators in Admin Approval Mode' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableLUA' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Switch to the secure desktop when prompting for elevation' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the elevation request prompt is displayed on the interactive user's desktop or the secure desktop. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Switch to the secure desktop when prompting for elevation' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\PromptOnSecureDesktop' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Virtualize file and registry write failures to per-user locations' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether application write failures are redirected to defined registry and file system locations. This policy setting mitigates applications that run as administrator and write run-time application data to: + %ProgramFiles% + %windir% + %windir%\System32 + HKEY_LOCAL_MACHINE\SOFTWARE + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Virtualize file and registry write failures to per-user locations' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableVirtualization' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: CIS - Ensure 'Bluetooth Audio Gateway Service (BTAGService)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Service supporting the audio gateway role of the Bluetooth Handsfree Profile. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Bluetooth Audio Gateway Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\BTAGService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Bluetooth Support Service (bthserv)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + The Bluetooth service supports discovery and association of remote Bluetooth devices. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Bluetooth Support Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\bthserv\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Computer Browser (Browser)' is set to 'Disabled' or 'Not Installed' + # platforms: win10 + platform: windows + description: | + Maintains an updated list of computers on the network and supplies this list to computers designated as browsers. + The recommended state for this setting is: Disabled or Not Installed. + Note: In Windows 8.1 and Windows 10, this service is bundled with the SMB 1.0/CIFS File Sharing Support optional feature. As a result, removing that feature (highly recommended unless backward compatibility is needed to XP/2003 and older Windows OSes - see Stop using SMB1 | Storage at Microsoft) will also remediate this recommendation. The feature is not installed by default starting with Windows 10 R1709. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or 'not installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Computer Browser' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Browser\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Browser\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Downloaded Maps Manager (MapsBroker)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Windows service for application access to downloaded maps. This service is started on- demand by application accessing downloaded maps. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Downloaded Maps Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MapsBroker\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Geolocation Service (lfsvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service monitors the current location of the system and manages geofences (a geographical location with associated events). + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Geolocation Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'IIS Admin Service (IISADMIN)' is set to 'Disabled' or 'Not Installed' + # platforms: win10 + platform: windows + description: | + Enables the server to administer the IIS metabase. The IIS metabase stores configuration for the SMTP and FTP services. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but is installed + by enabling an optional Windows feature (Internet Information Services). + Note #2: An organization may choose to selectively grant exceptions to web developers to allow IIS (or another web server) on their workstation, in order for them to locally test & develop web pages. However, the organization should track those machines and ensure the security controls and mitigations are kept up to date, to reduce risk of compromise. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\IIS Admin Service' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\IISADMIN\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\IISADMIN\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Infrared monitor service (irmon)' is set to 'Disabled' or 'Not Installed' + # platforms: win10 + platform: windows + description: | + Detects other Infrared devices that are in range and launches the file transfer application. + The recommended state for this setting is: Disabled or Not Installed. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Infrared monitor service' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\irmon\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\irmon\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Internet Connection Sharing (ICS) (SharedAccess)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Provides network access translation, addressing, name resolution and/or intrusion prevention services for a home or small office network. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Internet Connection Sharing (ICS)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Link-Layer Topology Discovery Mapper (lltdsvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Creates a Network Map, consisting of PC and device topology (connectivity) information, and metadata describing each PC and device. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Link-Layer Topology Discovery Mapper' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lltdsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'LxssManager (LxssManager)' is set to 'Disabled' or 'Not Installed' + # platforms: win10 + platform: windows + description: | + The LXSS Manager service supports running native ELF binaries. The service provides the infrastructure necessary for ELF binaries to run on Windows. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but is installed by enabling an optional Windows feature (Windows Subsystem for Linux). + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\LxssManager' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\LxssManager\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LxssManager\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Microsoft FTP Service (FTPSVC)' is set to 'Disabled' or 'Not Installed' + # platforms: win10 + platform: windows + description: | + Enables the server to be a File Transfer Protocol (FTP) server. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but is installed by enabling an optional Windows feature (Internet Information Services - FTP Server). + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Microsoft FTP Service' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\FTPSVC\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\FTPSVC\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Microsoft iSCSI Initiator Service (MSiSCSI)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Manages Internet SCSI (iSCSI) sessions from this computer to remote target devices. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Microsoft iSCSI Initiator Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MSiSCSI\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'OpenSSH SSH Server (sshd)' is set to 'Disabled' or 'Not Installed' + # platforms: win10 + platform: windows + description: | + SSH protocol based service to provide secure encrypted communications between two untrusted hosts over an insecure network. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but it is installed by enabling an optional Windows feature (OpenSSH Server). + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\OpenSSH SSH Server' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sshd\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sshd\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Peer Name Resolution Protocol (PNRPsvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Enables serverless peer name resolution over the Internet using the Peer Name Resolution Protocol (PNRP). + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Peer Name Resolution Protocol' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\PNRPsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Peer Networking Grouping (p2psvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Enables multi-party communication using Peer-to-Peer Grouping. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Peer Networking Grouping' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\p2psvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Peer Networking Identity Manager (p2pimsvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Provides identity services for the Peer Name Resolution Protocol (PNRP) and Peer-to-Peer Grouping services. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Peer Networking Identity Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\p2pimsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'PNRP Machine Name Publication Service (PNRPAutoReg)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service publishes a machine name using the Peer Name Resolution Protocol. Configuration is managed via the netsh context ‘p2p pnrp peer’. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\PNRP Machine Name Publication Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\PNRPAutoReg\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Print Spooler (Spooler)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service spools print jobs and handles interaction with printers. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Print Spooler' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Spooler\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Problem Reports and Solutions Control Panel Support (wercplsupport)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service provides support for viewing, sending and deletion of system-level problem reports for the Problem Reports and Solutions control panel. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Problem Reports and Solutions Control Panel Support' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\wercplsupport\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Access Auto Connection Manager (RasAuto)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Creates a connection to a remote network whenever a program references a remote DNS or NetBIOS name or address. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Access Auto Connection Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RasAuto\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Desktop Configuration (SessionEnv)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Remote Desktop Configuration service (RDCS) is responsible for all Remote Desktop related configuration and session maintenance activities that require SYSTEM context. These include per-session temporary folders, RD themes, and RD certificates. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Desktop Configuration' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SessionEnv\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Desktop Services (TermService)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Allows users to connect interactively to a remote computer. Remote Desktop and Remote Desktop Session Host Server depend on this service. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Desktop Services' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Desktop Services UserMode Port Redirector (UmRdpService)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines the redirection of Printers/Drives/Ports for RDP connections. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Desktop Services UserMode Port Redirector' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\UmRdpService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Remote Procedure Call (RPC) Locator (RpcLocator)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + In Windows 2003 and older versions of Windows, the Remote Procedure Call (RPC) Locator service + manages the RPC name service database. In Windows Vista and newer versions of Windows, this + service does not provide any functionality and is present for application compatibility. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Procedure Call (RPC) Locator' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RpcLocator\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Remote Registry (RemoteRegistry)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + The service enables remote users to view and modify registry settings on this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Registry' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RemoteRegistry\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Routing and Remote Access (RemoteAccess)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + The service offers routing services to businesses in local area and wide area network environments. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Routing and Remote Access' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RemoteAccess\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Server (LanmanServer)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + The service supports file, print, and named-pipe sharing over the network for this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Server' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Simple TCP/IP Services (simptcp)' is set to 'Disabled' or to 'Not Installed' + # platforms: win10 + platform: windows + description: | + The service supports the following TCP/IP services: Character Generator, Daytime, Discard, Echo, and Quote of the Day. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Simple TCP/IP Services' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\simptcp\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\simptcp\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'SNMP Service (SNMP)' is set to 'Disabled' or to 'Not Installed' + # platforms: win10 + platform: windows + description: | + The service enables Simple Network Management Protocol (SNMP) requests to be processed by this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\SNMP Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SNMP\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SNMP\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Special Administration Console Helper (sacsvr)' is set to 'Disabled' or to 'Not Installed' + # platforms: win10 + platform: windows + description: | + The service allows administrators to remotely access a command prompt using Emergency Management Services. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Special Administration Console Helper' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sacsvr\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sacsvr\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'SSDP Discovery (SSDPSRV)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service discovers networked devices and services that use the SSDP discovery protocol, such + as UPnP devices. Also announces SSDP devices and services running on the local computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\SSDP Discovery' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SSDPSRV\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'UPnP Device Host (upnphost)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service allows UPnP devices to be hosted on this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\UPnP Device Host' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\upnphost\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Web Management Service (WMSvc)' is set to 'Disabled' or to 'Not Installed' + # platforms: win10 + platform: windows + description: | + This web management Service enables remote and delegated management capabilities for administrators to manage for the Web server, sites and applications present on the machine. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Web Management Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMSvc\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMSvc\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Error Reporting Service (WerSvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service allows errors to be reported when programs stop working or responding and allows + existing solutions to be delivered. Also allows logs to be generated for diagnostic and repair + services. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Error Reporting Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WerSvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Event Collector (Wecsvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service manages persistent subscriptions to events from remote sources that support + WS-Management protocol. This includes Windows Vista event logs, hardware and IPMI-enabled event + sources. The service stores forwarded events in a local Event Log. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Event Collector' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Wecsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Media Player Network Sharing Service (WMPNetworkSvc)' is set to 'Disabled' or to 'Not Installed' + # platforms: win10 + platform: windows + description: | + This service shares Windows Media Player libraries to other networked players and media devices using Universal Plug and Play. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Media Player Network Sharing Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMPNetworkSvc\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMPNetworkSvc\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Mobile Hotspot Service (icssvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service provides the ability to share a cellular data connection with another device. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Mobile Hotspot Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\icssvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Push Notifications System Service (WpnService)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service runs in session 0 and hosts the notification platform and connection provider which handles the connection between the device and WNS server. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Push Notifications System Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WpnService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows PushToInstall Service (PushToInstall)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service manages Apps that are pushed to the device from the Microsoft Store App running on other devices or the web. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows PushToInstall Service (PushToInstall)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\PushToInstall\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Remote Management (WSManagement) (WinRM)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + The Windows Remote Management (WinRM) service implements the WS-Management protocol for remote + management. WS-Management is a standard web services protocol used for remote software and + hardware management. The WinRM service listens on the network for WS-Management requests and processes them. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Remote Management (WS-Management)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WinRM\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'World Wide Web Publishing Service (W3SVC)' is set to 'Disabled' or to 'Not Installed' + # platforms: win10 + platform: windows + description: | + This service provides Web connectivity and administration through the Internet Information Services Manager. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\World Wide Web Publishing Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Accessory Management Service (XboxGipSvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service manages connected Xbox accessories. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Accessory Management Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XboxGipSvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Live Auth Manager (XblAuthManager)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service provides authentication and authorization services for interacting with Xbox Live. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Live Auth Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XblAuthManager\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Live Game Save (XblGameSave)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service syncs save data for Xbox Live save enabled game. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Live Game Save' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XblGameSave\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Live Networking Service (XboxNetApiSvc)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This service supports the Windows.Networking.XboxLive application programming interface. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Live Networking Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XboxNetApiSvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Firewall state' is set to 'On (recommended)' + # platforms: win10 + platform: windows + description: | + Select On (recommended) to have Windows Firewall with Advanced Security use the settings for this profile to filter network traffic. If you select Off, Windows Firewall with Advanced Security will not use any of the firewall rules or connection security rules for this profile. + The recommended state for this setting is: On (recommended). + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Firewall state' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\EnableFirewall' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Inbound connections' is set to 'Block (default)' + # platforms: win10 + platform: windows + description: | + This setting determines the behavior for inbound connections that do not match an inbound firewall rule. + The recommended state for this setting is: Block (default). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Block (default): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Inbound connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\\Policies\\Microsoft\WindowsFirewall\DomainProfile\DefaultInboundAction' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Settings: Display a notification' is set to 'No' + # platforms: win10 + platform: windows + description: | + Select this option to have Windows Firewall with Advanced Security display notifications to the user when a program is blocked from receiving inbound connections. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'No': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Settings Customize\Display a notification' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\DisableNotifications' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Name' is set to '%SystemRoot%\System32\logfiles\firewall\domainfw.log' + # platforms: win10 + platform: windows + description: | + Use this option to specify the path and name of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: %SystemRoot%\System32\logfiles\firewall\domainfw.log. + resolution: | + To establish the recommended configuration via GP, set the following UI path to %SystemRoot%\System32\logfiles\firewall\domainfw.log: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Logging Customize\Name' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\Logging\LogFilePath' and data = '%SystemRoot%\System32\logfiles\firewall\domainfw.log'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Size limit (KB)' is set to '16,384 KB or greater' + # platforms: win10 + platform: windows + description: | + Use this option to specify the size limit of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: 16,384 KB or greater. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 16,384 KB or greater: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Logging Customize\Size limit (KB)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\\Microsoft\WindowsFirewall\DomainProfile\Logging\LogFileSize' and CAST(data as integer) >= 16384 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Log dropped packets' is set to 'Yes' + # platforms: win10 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security discards an inbound packet for any reason. The log records why and when the packet was dropped. Look for entries with the word DROP in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security\Windows Firewall Properties\Domain Profile\Logging Customize\Log dropped packets' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\Logging\LogDroppedPackets' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Log successful connections' is set to 'Yes' + # platforms: win10 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security allows an inbound connection. The log records why and when the connection was formed. Look for entries with the word ALLOW in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes. + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Logging Customize\Log successful connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\Logging\LogSuccessfulConnections' and data = 1 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Private: Firewall state' is set to 'On (recommended)' + # platforms: win10 + platform: windows + description: | + Select On (recommended) to have Windows Firewall with Advanced Security use the settings for this profile to filter network traffic. If you select Off, Windows Firewall with Advanced Security will not use any of the firewall rules or connection security rules for this profile. + The recommended state for this setting is: On (recommended). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'On (recommended)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Firewall state' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\EnableFirewall' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Inbound connections' is set to 'Block (default)' + # platforms: win10 + platform: windows + description: | + This setting determines the behavior for inbound connections that do not match an inbound firewall rule. + The recommended state for this setting is: Block (default). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Block (default)'': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Inbound connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\DefaultInboundAction' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Settings: Display a notification' is set to 'No' + # platforms: win10 + platform: windows + description: | + Select this option to have Windows Firewall with Advanced Security display notifications to the user when a program is blocked from receiving inbound connections. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to No: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Settings Customize\Display a notification' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\DisableNotifications' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Name' is set to '%SystemRoot%\System32\logfiles\firewall\privatefw.log' + # platforms: win10 + platform: windows + description: | + Use this option to specify the path and name of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: %SystemRoot%\System32\logfiles\firewall\privatefw.log. + resolution: | + To establish the recommended configuration via GP, set the following UI path to '%SystemRoot%\System32\logfiles\firewall\privatefw.log': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Logging Customize\Name' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogFilePath' AND data ='%systemroot%\system32\logfiles\firewall\pfirewall.log'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Size limit (KB)' is set to '16,384 KB or greater' + # platforms: win10 + platform: windows + description: | + Use this option to specify the size limit of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: 16,384 KB or greater. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 16,384 KB or greater: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security\Windows Firewall Properties\Private Profile\Logging Customize\Size limit (KB)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogFileSize' and CAST(data AS INTEGER) >= 16384 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Log dropped packets' is set to 'Yes' + # platforms: win10 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security discards an inbound packet for any reason. The log records why and when the packet was dropped. Look for entries with the word DROP in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security\Windows Firewall Properties\Private Profile\Logging Customize\Log dropped packets' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogDroppedPackets' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Log successful connections' is set to 'Yes' + # platforms: win10 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security allows an inbound connection. The log records why and when the connection was formed. Look for entries with the word ALLOW in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security\Windows Firewall Properties\Private Profile\Logging Customize\Log successful connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogSuccessfulConnections' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Firewall state' is set to 'On (recommended)' + # platforms: win10 + platform: windows + description: | + Select On (recommended) to have Windows Firewall with Advanced Security use the settings for this profile to filter network traffic. If you select Off, Windows Firewall with Advanced Security will not use any of the firewall rules or connection security rules for this profile. + The recommended state for this setting is: On (recommended). + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Firewall state' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\EnableFirewall' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Inbound connections' is set to 'Block (default)' + # platforms: win10 + platform: windows + description: | + This setting determines the behavior for inbound connections that do not match an inbound firewall rule. + The recommended state for this setting is: Block (default). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Block (default): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Inbound connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\DefaultInboundAction' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Settings: Display a notification' is set to 'No' + # platforms: win10 + platform: windows + description: | + Select this option to have Windows Firewall with Advanced Security display notifications to the user when a program is blocked from receiving inbound connections. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'No': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Settings Customize\Display a notification' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\DisableNotifications' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Settings: Apply local firewall rules' is set to 'No' + # platforms: win10 + platform: windows + description: | + This setting controls whether local administrators are allowed to create local firewall rules that apply together with firewall rules configured by Group Policy. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to No: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Settings Customize\Apply local firewall rules' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\AllowLocalPolicyMerge' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Settings: Apply local connection security rules' is set to 'No' + # platforms: win10 + platform: windows + description: | + This setting controls whether local administrators are allowed to create connection security rules that apply together with connection security rules configured by Group Policy. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to No: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Settings Customize\Apply local connection security rules' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\AllowLocalIPsecPolicyMerge' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Name' is set to '%SystemRoot%\System32\logfiles\firewall\publicfw.log' + # platforms: win10 + platform: windows + description: | + Use this option to specify the path and name of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: %SystemRoot%\System32\logfiles\firewall\publicfw.log. + resolution: | + To establish the recommended configuration via GP, set the following UI path to %SystemRoot%\System32\logfiles\firewall\publicfw.log: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Logging Customize\Name' + query: | + SELECT * FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogFilePath' and data == '%SystemRoot%\System32\logfiles\firewall\publicfw.log'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Size limit (KB)' is set to '16,384 KB or greater' + # platforms: win10 + platform: windows + description: | + Use this option to specify the size limit of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: 16,384 KB or greater. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 16,384 KB or greater: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Logging Customize\Size limit (KB)' + query: | + SELECT * FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogFileSize' and data >= 16384 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Log dropped packets' is set to 'Yes' + # platforms: win10 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security discards an inbound packet + for any reason. The log records why and when the packet was dropped. Look for entries with the + word DROP in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security\Windows Firewall Properties\Public Profile\Logging Customize\Log dropped packets' + query: | + SELECT * FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogDroppedPackets' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Log successful connections' is set to 'Yes' + # platforms: win10 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security allows an inbound connection. The log records why and when the connection was formed. Look for entries with the word ALLOW in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes. + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Logging Customize\Log successful connections' + query: | + SELECT 1 FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogSuccessfulConnections' and data == 1 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: CIS - Ensure 'Audit Credential Validation' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + Creates audit events whenever an attempt is made to authenticate, whether it is successful or not. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Logon\Audit Credential Validation' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogon_AuditCredentialValidation" + AND mdm_command_output = "3"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit Application Group Management' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + Creates audit events whenever an application group is changed, e.g. by adding members. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Management\Audit Application Group Management' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditApplicationGroupManagement" + AND mdm_command_output = "3"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit Security Group Management' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + Creates audit events whenever a security group is changed, e.g. by adding members. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Success and Failure' or 'Success': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Management\Audit Security Group Management' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditSecurityGroupManagement" + AND (mdm_command_output = "1" OR mdm_command_output = "3"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit PNP Activity' is set to 'Success' + # platforms: win10 + platform: windows + description: | + Creates audit events whenever there is a change in user status, e.g. if an account is created or an account's password changed. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Success and Failure': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Management\Audit User Account Management' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditUserAccountManagement" + AND mdm_command_output = "3"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit PNP Activity' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + Creates audit events whenever a plug and play external device is detected. + Attaching unapproved devices could cause Windows to install unapproved software. + This also makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Success': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Detailed Tracking\Audit PNP Activity' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/DetailedTracking_AuditPNPActivity" + AND (mdm_command_output = "1" OR mdm_command_output = "3"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit Process Creation' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + Creates audit events whenever a process is executed. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Success': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Detailed Tracking\Audit Process Creation' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/DetailedTracking_AuditProcessCreation" + AND (mdm_command_output = "1" OR mdm_command_output = "3"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Audit Account Lockout' is set to include 'Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports when a user's account is locked out as a result of too many failed logon attempts. Events for this subcategory include: + - 4625: An account failed to log on. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Account Lockout' + query: | + SELECT 1 FROM cis_audit where item = "17.5.1" AND (regex_match(value,".*(?=.*Failure).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Group Membership' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This policy allows you to audit the group membership information in the user's logon token. Events in this subcategory are generated on the computer on which a logon session is created. For an interactive logon, the security audit event is generated on the computer that the user logged on to. For a network logon, such as accessing a shared folder on the network, the security audit event is generated on the computer hosting the resource. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Group Membership' + query: | + SELECT 1 FROM cis_audit where item = "17.5.2" AND (regex_match(value,".*(?=.*Success).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Logoff' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports when a user logs off from the system. These events occur on the accessed computer. For interactive logons, the generation of these events occurs on the computer that is logged on to. If a network logon takes place to access a share, these events generate on the computer that hosts the accessed resource. If you configure this setting to No auditing, it is difficult or impossible to determine which user has accessed or attempted to access organization computers. Events for this subcategory include: + - 4634: An account was logged off. + - 4647: User initiated logoff. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Logoff' + query: | + SELECT 1 FROM cis_audit where item = "17.5.3" AND (regex_match(value,".*(?=.*Success).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Logon' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports when a user attempts to log on to the system. These events occur on the accessed computer. For interactive logons, the generation of these events occurs on the computer that is logged on to. If a network logon takes place to access a share, these events generate on the computer that hosts the accessed resource. If you configure this setting to No auditing, it is difficult or impossible to determine which user has accessed or attempted to access organization computers. Events for this subcategory include: + - 4624: An account was successfully logged on. + - 4625: An account failed to log on. + - 4648: A logon was attempted using explicit credentials. + - 4675: SIDs were filtered. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Logon' + query: | + SELECT 1 FROM cis_audit where item = "17.5.4" AND (regex_match(value,".*(?=.*Success)(?=.*Failure).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Other Logon/Logoff Events' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports other logon/logoff-related events, such as Remote Desktop Services session disconnects and reconnects, using RunAs to run processes under a different account, and locking and unlocking a workstation. Events for this subcategory include: + - 4649: A replay attack was detected. + - 4778: A session was reconnected to a Window Station. + - 4779: A session was disconnected from a Window Station. + - 4800: The workstation was locked. + - 4801: The workstation was unlocked. + - 4802: The screen saver was invoked. + - 4803: The screen saver was dismissed. + - 5378: The requested credentials delegation was disallowed by policy. + - 5632: A request was made to authenticate to a wireless network. + - 5633: A request was made to authenticate to a wired network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Other Logon/Logoff Events' + query: | + SELECT 1 FROM cis_audit where item = "17.5.5" AND (regex_match(value,".*(?=.*Success)(?=.*Failure).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Special Logon' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports when a special logon is used. A special logon is a logon that has administrator-equivalent privileges and can be used to elevate a process to a higher level. Events for this subcategory include: + - 4964 : Special groups have been assigned to a new logon. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Special Logon' + query: | + SELECT 1 FROM cis_audit where item = "17.5.6" AND (regex_match(value,".*(?=.*Success).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Audit Detailed File Share' is set to include 'Failure' + # platforms: win10 + platform: windows + description: | + This subcategory allows you to audit attempts to access files and folders on a shared folder. Events for this subcategory include: + - 5145: network share object was checked to see whether client can be granted desired access. + The recommended state for this setting is to include: Failure + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit Detailed File Share' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditDetailedFileShare" + AND (mdm_command_output = 2 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit File Share' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to audit attempts to access a shared folder. The recommended state for this setting is: Success and Failure. + Note: There are no system access control lists (SACLs) for shared folders. If this policy setting is enabled, access to all shared folders on the system is audited. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit File Share' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditFileShare" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Other Object Access Events' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to audit events generated by the management of task scheduler jobs or COM+ objects. + For scheduler jobs, the following are audited: + - Job created. + - Job deleted. + - Job enabled. + - Job disabled. + - Job updated. + For COM+ objects, the following are audited: + - Catalog object added. + - Catalog object updated. + - Catalog object deleted. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit Other Object Access Events' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditOtherObjectAccessEvents" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Removable Storage' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to audit user attempts to access file system objects on a removable storage device. A security audit event is generated only for all objects for all types of access requested. If you configure this policy setting, an audit event is generated each time an account accesses a file system object on a removable storage. Success audits record successful attempts and Failure audits record unsuccessful attempts. If you do not configure this policy setting, no audit event is generated when an account accesses a file system object on a removable storage. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit Removable Storage' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditRemovableStorage" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Audit Policy Change' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports changes in audit policy including SACL changes. Events for this subcategory include: + - 4715: The audit policy (SACL) on an object was changed. + - 4719: System audit policy was changed. + - 4902: The Per-user audit policy table was created. + - 4904: An attempt was made to register a security event source. + - 4905: An attempt was made to unregister a security event source. + - 4906: The CrashOnAuditFail value has changed. + - 4907: Auditing settings on object were changed. + - 4908: Special Groups Logon table modified. + - 4912: Per User Audit Policy was changed. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Audit Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditPolicyChange" + AND (mdm_command_output = 1 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Authentication Policy Change' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports changes in authentication policy. Events for this subcategory include: + - 4706: A new trust was created to a domain. + - 4707: A trust to a domain was removed. + - 4713: Kerberos policy was changed. + - 4716: Trusted domain information was modified. + - 4717: System security access was granted to an account. + - 4718: System security access was removed from an account. + - 4739: Domain Policy was changed. + - 4864: A namespace collision was detected. + - 4865: A trusted forest information entry was added. + - 4866: A trusted forest information entry was removed. + - 4867: A trusted forest information entry was modified. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Authentication Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditAuthenticationPolicyChange" + AND (mdm_command_output = 1 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Authorization Policy Change' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports changes in authorization policy. Events for this subcategory include: + - 4704: A user right was assigned. + - 4705: A user right was removed. + - 4706: A new trust was created to a domain. + - 4707: A trust to a domain was removed. + - 4714: Encrypted data recovery policy was changed. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Authorization Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditAuthorizationPolicyChange" + AND (mdm_command_output = 1 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit MPSSVC Rule-Level Policy Change' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory determines whether the operating system generates audit events when changes are made to policy rules for the Microsoft Protection Service (MPSSVC.exe). Events for this subcategory include: + - 4944: The following policy was active when the Windows Firewall started. + - 4945: A rule was listed when the Windows Firewall started. + - 4946: A change has been made to Windows Firewall exception list. A rule was added. + - 4947: A change has been made to Windows Firewall exception list. A rule was modified. + - 4948: A change has been made to Windows Firewall exception list. A rule was deleted. + - 4949: Windows Firewall settings were restored to the default values. + - 4950: A Windows Firewall setting has changed. + - 4951: A rule has been ignored because its major version number was not recognized by Windows Firewall. + - 4952: Parts of a rule have been ignored because its minor version number was not recognized by Windows Firewall. The other parts of the rule will be enforced. + - 4953: A rule has been ignored by Windows Firewall because it could not parse the rule. + - 4954: Windows Firewall Group Policy settings have changed. The new settings have been applied. + - 4956: Windows Firewall has changed the active profile. + - 4957: Windows Firewall did not apply the following rule. + - 4958: Windows Firewall did not apply the following rule because the rule referred to items not configured on this computer. + The recommended state for this setting is : Success and Failure + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit MPSSVC Rule- Level Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditMPSSVCRuleLevelPolicyChange" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Sensitive Privilege Use' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports when a user account or service uses a sensitive privilege. A sensitive privilege includes the following user rights: + - Act as part of the operating system + - Back up files and directories + - Create a token object + - Debug programs + - Enable computer and user accounts to be trusted for delegation + - Generate security audits + - Impersonate a client after authentication + - Load and unload device drivers + - Manage auditing and security log + - Modify firmware environment values + - Replace a process-level token + - Restore files and directories + - Take ownership of files or other objects + Auditing this subcategory will create a high volume of events. Events for this subcategory include: + - 4672: Special privileges assigned to new logon. + - 4673: A privileged service was called. + - 4674: An operation was attempted on a privileged object. + The recommended state for this setting is: 'Success and Failure'. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Privilege Use\Audit Sensitive Privilege Use' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PrivilegeUse_AuditSensitivePrivilegeUse" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit IPsec Driver' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports on the activities of the Internet Protocol security (IPsec) driver. Events for this subcategory include: + - 4960: IPsec dropped an inbound packet that failed an integrity check. If this problem persists, it could indicate a network issue or that packets are being modified in transit to this computer. Verify that the packets sent from the remote computer are the same as those received by this computer. This error might also indicate interoperability problems with other IPsec implementations. + - 4961: IPsec dropped an inbound packet that failed a replay check. If this problem persists, it could indicate a replay attack against this computer. + - 4962: IPsec dropped an inbound packet that failed a replay check. The inbound packet had too low a sequence number to ensure it was not a replay. + - 4963: IPsec dropped an inbound clear text packet that should have been secured. This is usually due to the remote computer changing its IPsec policy without informing this computer. This could also be a spoofing attack attempt. + - 4965: IPsec received a packet from a remote computer with an incorrect Security Parameter Index (SPI). This is usually caused by malfunctioning hardware that is corrupting packets. If these errors persist, verify that the packets sent from the remote computer are the same as those received by this computer. This error may also indicate interoperability problems with other IPsec implementations. In that case, if connectivity is not impeded, then these events can be ignored. + - 5478: IPsec Services has started successfully. + - 5479: IPsec Services has been shut down successfully. The shutdown of IPsec Services can put the computer at greater risk of network attack or expose the computer to potential security risks. + - 5480: IPsec Services failed to get the complete list of network interfaces on the computer. This poses a potential security risk because some of the network interfaces may not get the protection provided by the applied IPsec filters. Use the IP Security Monitor snap-in to diagnose the problem. + - 5483: IPsec Services failed to initialize RPC server. IPsec Services could not be started. + - 5484: IPsec Services has experienced a critical failure and has been shut down. The shutdown of IPsec Services can put the computer at greater risk of network attack or expose the computer to potential security risks. + - 5485: IPsec Services failed to process some IPsec filters on a plug-and-play event for network interfaces. This poses a potential security risk because some of the network interfaces may not get the protection provided by the applied IPsec filters. Use the IP Security Monitor snap-in to diagnose the problem. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit IPsec Driver' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditIPsecDriver" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Other System Events' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports on other system events. Events for this subcategory include: + - 5024 : The Windows Firewall Service has started successfully. + - 5025 : The Windows Firewall Service has been stopped. + - 5027 : The Windows Firewall Service was unable to retrieve the security policy from the local storage. The service will continue enforcing the current policy. + - 5028 : The Windows Firewall Service was unable to parse the new security policy. The service will continue with currently enforced policy. + - 5029: The Windows Firewall Service failed to initialize the driver. The service will continue to enforce the current policy. + - 5030: The Windows Firewall Service failed to start. + - 5032: Windows Firewall was unable to notify the user that it blocked an application from accepting incoming connections on the network. + - 5033 : The Windows Firewall Driver has started successfully. + - 5034 : The Windows Firewall Driver has been stopped. + - 5035 : The Windows Firewall Driver failed to start. + - 5037 : The Windows Firewall Driver detected critical runtime error. Terminating. + - 5058: Key file operation. + - 5059: Key migration operation. + The recommended state for this setting is: 'Success and Failure'. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit Other System Events' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditOtherSystemEvents" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Security State Change' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports changes in security state of the system, such as when the security subsystem starts and stops. Events for this subcategory include: + - 4608: Windows is starting up. + - 4609: Windows is shutting down. + - 4616: The system time was changed. + - 4621: Administrator recovered system from CrashOnAuditFail. Users who are not + administrators will now be allowed to log on. Some audit-able activity might not have been recorded. + The recommended state for this setting is to include: 'Success'. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit Security State Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSecurityStateChange" + AND (mdm_command_output = 3 OR mdm_command_output = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Security System Extension' is set to include 'Success' + # platforms: win10 + platform: windows + description: | + This subcategory reports the loading of extension code such as authentication packages by the security subsystem. Events for this subcategory include: + - 4610: An authentication package has been loaded by the Local Security Authority. + - 4611: A trusted logon process has been registered with the Local Security Authority. + - 4614: A notification package has been loaded by the Security Account Manager. + - 4622: A security package has been loaded by the Local Security Authority. + - 4697: A service was installed in the system. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit Security System Extension' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSecuritySystemExtension" + AND (mdm_command_output = 3 OR mdm_command_output = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit System Integrity' is set to 'Success and Failure' + # platforms: win10 + platform: windows + description: | + This subcategory reports on violations of integrity of the security subsystem. Events for this subcategory include: + - 4612 : Internal resources allocated for the queuing of audit messages have been exhausted, leading to the loss of some audits. + - 4615 : Invalid use of LPC port. + - 4618 : A monitored security event pattern has occurred. + - 4816 : RPC detected an integrity violation while decrypting an incoming message. + - 5038 : Code integrity determined that the image hash of a file is not valid. The file could be corrupt due to unauthorized modification or the invalid hash could indicate a potential disk device error. + - 5056: A cryptographic self test was performed. + - 5057: A cryptographic primitive operation failed. + - 5060: Verification operation failed. + - 5061: Cryptographic operation. + - 5062: A kernel-mode cryptographic self test was performed. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit System Integrity' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSystemIntegrity" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Other Policy Change Events' is set to include 'Failure' + # platforms: win10 + platform: windows + description: | + This subcategory contains events about EFS Data Recovery Agent policy changes, changes in Windows Filtering Platform filter, status on Security policy settings updates for local Group Policy settings, Central Access Policy changes, and detailed troubleshooting events for Cryptographic Next Generation (CNG) operations. + - 5063: A cryptographic provider operation was attempted. + - 5064: A cryptographic context operation was attempted. + - 5065: A cryptographic context modification was attempted. + - 5066: A cryptographic function operation was attempted. + - 5067: A cryptographic function modification was attempted. + - 5068: A cryptographic function provider operation was attempted. + - 5069: A cryptographic function property operation was attempted. + - 5070: A cryptographic function property modification was attempted. + - 6145: One or more errors occurred while processing security policy in the group + policy objects. + The recommended state for this setting is to include: Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Other Policy Change Events' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditOtherPolicyChangeEvents" + AND (mdm_command_output = 2 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Prevent enabling lock screen camera' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Disables the lock screen camera toggle switch in PC Settings and prevents a camera from being invoked on the lock screen. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Personalization\Prevent enabling lock screen camera' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Personalization\NoLockScreenCamera' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent enabling lock screen slide show' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Disables the lock screen slide show settings in PC Settings and prevents a slide show from playing on the lock screen. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Personalization\Prevent enabling lock screen slide show' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Personalization\NoLockScreenSlideshow' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow users to enable online speech recognition services' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy enables the automatic learning component of input personalization that includes speech, inking, and typing. Automatic learning enables the collection of speech and handwriting patterns, typing history, contacts, and recent calendar information. It is required for the use of Cortana. Some of this collected information may be stored on the user's OneDrive, in the case of inking and typing; some of the information will be uploaded to Microsoft to personalize speech. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Regional and Language Options\Allow users to enable online speech recognition services' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\InputPersonalization\AllowInputPersonalization' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Online Tips' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures the retrieval of online tips and help for the Settings app. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Allow Online Tips' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\AllowOnlineTips' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Apply UAC restrictions to local accounts on network logons' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting controls whether local accounts can be used for remote administration via network logon (e.g., NET USE, connecting to C$, etc.). Local accounts are at high risk for credential theft when the same account and password is configured on multiple systems. Enabling this policy significantly reduces that risk. + Enabled: Applies UAC token-filtering to local accounts on network logons. Membership in powerful group such as Administrators is disabled and powerful privileges are removed from the resulting access token. This configures the LocalAccountTokenFilterPolicy registry value to 0. This is the default behavior for Windows. + Disabled: Allows local accounts to have full administrative rights when authenticating via network logon, by configuring the LocalAccountTokenFilterPolicy registry value to 1. + For more information about local accounts and credential theft, review the "Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques" documents. + For more information about LocalAccountTokenFilterPolicy, see Microsoft Knowledge Base article 951016: Description of User Account Control and remote restrictions in Windows Vista. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Apply UAC restrictions to local accounts on network logons' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\LocalAccountTokenFilterPolicy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure SMB v1 client driver' is set to 'Enabled: Disable driver (recommended)' + # platforms: win10 + platform: windows + description: | + This setting configures the start type for the Server Message Block version 1 (SMBv1) client driver service (MRxSmb10), which is recommended to be disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable driver (recommended)': + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure SMB v1 client driver' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MrxSmb10\Start' AND data = 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure SMB v1 server' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting configures the server-side processing of the Server Message Block version 1 (SMBv1) protocol. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure SMB v1 server' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters\SMB1' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable Certificate Padding' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures whether the WinVerifyTrust function performs strict + Windows Authenticode signature verification for Portable Executable files (PE files). If + enabled, PE files will be considered "unsigned" if Windows identifies content in them + that does not conform to the Authenticode specification. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Enable Certificate Padding' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Wintrust\Config\EnableCertPaddingCheck' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Enable Structured Exception Handling Overwrite Protection (SEHOP)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Windows includes support for Structured Exception Handling Overwrite Protection (SEHOP). We recommend enabling this feature to improve the security profile of the computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Enable Structured Exception Handling Overwrite Protection (SEHOP)' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\DisableExceptionChainValidation' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'NetBT NodeType configuration' is set to 'Enabled: P-node (recommended)' + # platforms: win10 + platform: windows + description: | + This setting determines which method NetBIOS over TCP/IP (NetBT) uses to register and resolve names. The available methods are: + The B-node (broadcast) method only uses broadcasts. + The P-node (point-to-point) method only uses name queries to a name server (WINS). + The M-node (mixed) method broadcasts first, then queries a name server (WINS) if broadcast failed. + The H-node (hybrid) method queries a name server (WINS) first, then broadcasts if the query failed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: P-node (recommended): + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\NetBT NodeType configuration' + Note: This change does not take effect until the computer has been restarted. + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NetBT\\Parameters\NodeType' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'WDigest Authentication' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + When WDigest authentication is enabled, Lsass.exe retains a copy of the user's plaintext password in memory, where it can be at risk of theft. If this setting is not configured, WDigest authentication is disabled in Windows 8.1 and in Windows Server 2012 R2; it is enabled by default in earlier versions of Windows and Windows Server. + For more information about local accounts and credential theft, review the "Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques" documents. + For more information about UseLogonCredential, see Microsoft Knowledge Base article 2871997: Microsoft Security Advisory Update to improve credentials protection and management May 13, 2014. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\WDigest Authentication (disabling may require KB2871997)' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest\UseLogonCredential' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (AutoAdminLogon) Enable Automatic Logon' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting is separate from the Welcome screen feature in Windows XP and Windows Vista; if that feature is disabled, this setting is not disabled. If you configure a computer for automatic logon, anyone who can physically gain access to the computer can also gain access to everything that is on the computer, including any network or networks to which the computer is connected. Also, if you enable automatic logon, the password is stored in the registry in plaintext, and the specific registry key that stores this value is remotely readable by the Authenticated Users group. For additional information, see Microsoft Knowledge Base article 324737: How to turn on automatic logon in Windows. The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (AutoAdminLogon) Enable Automatic Logon' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\AutoAdminLogon' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure RPC packet level privacy setting for incoming connections' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls packet level privacy for Remote Procedure Call (RPC) incoming connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure RPC packet level privacy setting for incoming connections' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Print\\RpcAuthnLevelPrivacyEnabled' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: defensivedepth + +- name: > + CIS - Ensure 'MSS: (DisableIPSourceRouting IPv6) IP source routing protection level (protects against packet spoofing)' is set to 'Enabled: Highest protection, source routing is completely disabled' + # platforms: win10 + platform: windows + description: | + IP source routing is a mechanism that allows the sender to determine the IP route that a datagram should follow through the network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Highest protection, source routing is completely disabled': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting IPv6) IP source routing protection level' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisableIPSourceRouting' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (DisableIPSourceRouting) IP source routing protection level' is set to 'Enabled: Highest protection, source routing is completely disabled' + # platforms: win10 + platform: windows + description: | + IP source routing is a mechanism that allows the sender to determine the IP route that a datagram should take through the network. It is recommended to configure this setting to Not Defined for enterprise environments and to Highest Protection for high security environments to completely disable source routing. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Highest protection, source routing is completely disabled': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting) IP source routing protection level' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DisableIPSourceRouting' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (DisableSavePassword) Prevent the dial-up password from being saved' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + When you dial a phonebook or VPN entry in Dial-Up Networking, you can use the "Save Password" option so that your Dial-Up Networking password is cached and you will not need to enter it on successive dial attempts. For security, administrators may want to prevent users from caching passwords. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(DisableSavePassword) Prevent the dial-up password from being saved' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RasMan\\Parameters\DisableSavePassword' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Internet Control Message Protocol (ICMP) redirects cause the IPv4 stack to plumb host routes. These routes override the Open Shortest Path First (OSPF) generated routes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\EnableICMPRedirect' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'LSA Protection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the Local Security Authority Server Service (LSASS) process runs protected. The Local Security Authority (LSA), which includes the Local Security Authority Server Service (LSASS) process, validates users for local and remote sign-ins and enforces local security policies. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\LSA Protection' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\RunAsPPL' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + NetBIOS over TCP/IP is a network protocol that among other things provides a way to easily resolve NetBIOS names that are registered on Windows-based systems to the IP addresses that are configured on those systems. This setting determines whether the computer releases its NetBIOS name when it receives a name-release request. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NetBT\\Parameters\NoNameReleaseOnDemand' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting is used to enable or disable the Internet Router Discovery Protocol (IRDP), which allows the system to detect and configure default gateway addresses automatically as described in RFC 1256 on a per-interface basis. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PerformRouterDiscovery' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (SafeDllSearchMode) Enable Safe DLL search mode' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + The DLL search order can be configured to search for DLLs that are requested by running processes in one of two ways: + - Search folders specified in the system path first, and then search the current working folder. + - Search current working folder first, and then search the folders specified in the system path. + When enabled, the registry value is set to 1. With a setting of 1, the system first searches the folders that are specified in the system path and then searches the current working folder. + When disabled the registry value is set to 0 and the system first searches the current working folder and then searches the folders that are specified in the system path. + Applications will be forced to search for DLLs in the system path first. For applications that require unique versions of these DLLs that are included with the application, this entry could cause performance or stability problems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (SafeDllSearchMode) Enable Safe DLL search mode' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDllSearchMode' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires' is set to 'Enabled: 5 or fewer seconds' + # platforms: win10 + platform: windows + description: | + Windows includes a grace period between when the screen saver is launched and when the console is actually locked automatically when screen saver locking is enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 5 or fewer seconds: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ScreenSaverGracePeriod' AND data <= 5); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' is set to 'Enabled: 3' + # platforms: win10 + platform: windows + description: | + This setting controls the number of times that TCP retransmits an individual data segment (non-connect segment) before the connection is aborted. The retransmission time-out is doubled with each successive retransmission on a connection. It is reset when responses resume. The base time-out value is dynamically determined by the measured round-trip time on the connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\TCPIP6\\Parameters\TcpMaxDataRetransmissions' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' is set to 'Enabled: 3' + # platforms: win10 + platform: windows + description: | + This setting controls the number of times that TCP retransmits an individual data segment (non-connect segment) before the connection is aborted. The retransmission time-out is doubled with each successive retransmission on a connection. It is reset when responses resume. The base time-out value is dynamically determined by the measured round-trip time on the connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\TcpMaxDataRetransmissions' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning' is set to 'Enabled: 90% or less' + # platforms: win10 + platform: windows + description: | + This setting can generate a security audit in the Security event log when the log reaches a user-defined threshold. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 90% or less: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Eventlog\\Security\WarningLevel' AND data <= 90); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off multicast name resolution' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + LLMNR is a secondary name resolution protocol. With LLMNR, queries are sent using multicast over a local network link on a single subnet from a client computer to another client computer on the same subnet that also has LLMNR enabled. LLMNR does not require a DNS server or DNS client configuration, and provides name resolution in scenarios in which conventional DNS name resolution is not possible. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\DNS Client\Turn off multicast name resolution' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\EnableMulticast' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable Font Providers' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether Windows is allowed to download fonts and font catalog data from an online font provider. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Fonts\Enable Font Providers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\EnableFontProviders' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds' is set to 'Enabled: 300,000 or 5 minutes' + # platforms: win10 + platform: windows + description: | + This value controls how often TCP attempts to verify that an idle connection is still intact by sending a keep-alive packet. If the remote computer is still reachable, it acknowledges the keep-alive packet. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 300,000 or 5 minutes': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime' AND data = 300000); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable insecure guest logons' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines if the SMB client will allow insecure guest logons to an SMB server. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Workstation\Enable insecure guest logons' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation\AllowInsecureGuestAuth' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn on Mapper I/O (LLTDIO) driver' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting changes the operational behavior of the Mapper I/O network protocol driver. LLTDIO allows a computer to discover the topology of a network it's connected to. It also allows a computer to initiate Quality-of-Service requests such as bandwidth estimation and network health analysis. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Link-Layer Topology Discovery\Turn on Mapper I/O (LLTDIO) driver' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LLTD\EnableLLTDIO' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn on Responder (RSPNDR) driver' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting changes the operational behavior of the Responder network protocol driver. The Responder allows a computer to participate in Link Layer Topology Discovery requests so that it can be discovered and located on the network. It also allows a computer to participate in Quality-of-Service activities such as bandwidth estimation and network health analysis. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled (recommended): + 'Computer Configuration\Policies\Administrative Templates\Network\Link-Layer Topology Discovery\Turn on Responder (RSPNDR) driver' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LLTD\EnableRspndr' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn off Microsoft Peer-to-Peer Networking Services' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + The Peer Name Resolution Protocol (PNRP) allows for distributed resolution of a name to an IPv6 address and port number. The protocol operates in the context of clouds. A cloud is a set of peer computers that can communicate with each other by using the same IPv6 scope.Peer-to-Peer protocols allow for applications in the areas of RTC, collaboration, content distribution and distributed processing. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Microsoft Peer-to-Peer Networking Services\Turn off Microsoft Peer-to-Peer Networking Services' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Peernet\Disabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Prohibit installation and configuration of Network Bridge on your DNS domain network' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + You can use this procedure to control a user's ability to install and configure a Network Bridge.. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Network Connections\Prohibit installation and configuration of Network Bridge on your DNS domain network' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections\NC_AllowNetBridge_NLA' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Prohibit use of Internet Connection Sharing on your DNS domain network' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Although this "legacy" setting traditionally applied to the use of Internet Connection Sharing (ICS) in Windows 2000, Windows XP & Server 2003, this setting now freshly applies to the Mobile Hotspot feature in Windows 10 & Server 2016. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Administrative Templates\Network\Network Connections\Prohibit use of Internet Connection Sharing on your DNS domain network' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections\NC_ShowSharedAccessUI' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Require domain users to elevate when setting a network's location' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether to require domain users to elevate when setting a network's location. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Administrative Templates\Network\Network Connections\Require domain users to elevate when setting a network's location' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections\NC_StdDomainUserSetLocation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Hardened UNC Paths' is set to 'Enabled, with "Require Mutual Authentication", "Require Integrity", and “Require Privacy” set for all NETLOGON and SYSVOL shares' + # platforms: win10 + platform: windows + description: | + This policy setting configures secure access to UNC paths. The recommended state for this setting is: Enabled, with "Require Mutual Authentication", "Require Integrity", and “Require Privacy” set for all NETLOGON and SYSVOL shares. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled with the following paths configured, at a minimum: + '\\*\NETLOGON RequireMutualAuthentication=1, RequireIntegrity=1, RequirePrivacy=1' + '\\*\SYSVOL RequireMutualAuthentication=1, RequireIntegrity=1, RequirePrivacy=1' + 'Computer Configuration\Policies\Administrative Templates\Network\Network Provider\Hardened UNC Paths' + Note: This Group Policy path does not exist by default. An additional Group Policy + template (NetworkProvider.admx/adml) is required - it is included with the MS15-011 / + MSKB 3000483 security update or with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 WHERE + EXISTS (SELECT * FROM registry WHERE (path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths\%' AND name = '\\*\SYSVOL' AND data = 'RequireMutualAuthentication=1, RequireIntegity=1, RequirePrivacy=1')) AND + EXISTS (SELECT * FROM registry WHERE (path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths\%' AND name = '\\*\NETLOGON' AND data = 'RequireMutualAuthentication=1, RequireIntegity=1, RequirePrivacy=1')) + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Allow Print Spooler to accept client connections' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the Print Spooler service will accept client connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Printers\Allow Print Spooler to accept client connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows NT\\Printers\RegisterSpoolerRemoteRpcEndPoint' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Point and Print Restrictions: When installing drivers for a new connection' is set to 'Enabled: Show warning and elevation prompt' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether computers will show a warning and a security elevation prompt when users create a new printer connection using Point and Print. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Show warning and elevation prompt': + 'Computer Configuration\Policies\Administrative Templates\Printers\Point and Print Restrictions: When installing drivers for a new connection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows NT\\Printers\PointAndPrint\\NoWarningNoElevationOnInstall' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Point and Print Restrictions: When updating drivers for an existing connection' is set to 'Enabled: Show warning and elevation prompt' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether computers will show a warning and a security elevation prompt when users are updating drivers for an existing connection using Point and Print. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Show warning and elevation prompt': + 'Computer Configuration\Policies\Administrative Templates\Printers\Point and Print Restrictions: When updating drivers for an existing connection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows NT\\Printers\PointAndPrint\\UpdatePromptSettings' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure NetBIOS settings' is set to 'Enabled: Disable NetBIOS name resolution on public networks' + # platforms: win10 + platform: windows + description: | + This policy setting specifies if the Domain Name System (DNS) client will perform name resolution over Network Basic Input/Output System (NetBIOS). NetBIOS is a legacy name resolution method for internal Microsoft networking that predates the use of DNS for that purpose (pre–Active Directory). Some legacy applications still require the use of NetBIOS for full functionality. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable NetBIOS name resolution on public networks': + 'Computer Configuration\Policies\Administrative Templates\Network\DNS Client\Configure NetBIOS settings' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\DNSClient\\EnableNetbios' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn off notifications network usage' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting blocks applications from using the network to send notifications to update tiles, tile badges, toast, or raw notifications. This policy setting turns off the connection between Windows and the Windows Push Notification Service (WNS). This policy setting also stops applications from being able to poll application services to update tiles. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Start Menu and Taskbar\Turn off notifications network usage' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows\\CurrentVersion\\PushNotifications\NoCloudApplicationNotification' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Redirection Guard' is set to 'Enabled: Redirection Guard Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether Redirection Guard is enabled for the print spooler. Redirection Guard can prevent file redirections from being used within the print spooler. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Redirection Guard Enabled': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure Redirection Guard' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RedirectionGuardPolicy' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC connection settings: Protocol to use for outgoing RPC connections' is set to 'Enabled: RPC over TCP' + # platforms: win10 + platform: windows + description: | + This policy setting controls which protocol and protocol settings to use for outgoing Remote Procedure Call (RPC) connections to a remote print spooler. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: RPC over TCP': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC connection settings: Protocol to use for outgoing RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\RpcUseNamedPipeProtocol' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC connection settings: Use authentication for outgoing RPC connections' is set to 'Enabled: Default' + # platforms: win10 + platform: windows + description: | + This policy setting controls which protocol and protocol settings to use for outgoing Remote Procedure Call (RPC) connections to a remote print spooler. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: RPC over TCP': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC connection settings: Use authentication for outgoing RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\RpcAuthentication' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC listener settings: Protocols to allow for incoming RPC connections' is set to 'Enabled: RPC over TCP' + # platforms: win10 + platform: windows + description: | + This policy setting controls which protocols incoming Remote Procedure Call (RPC) connections to the print spooler are allowed to use. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: RPC over TCP': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC listener settings: Configure protocol options for incoming RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\RpcProtocols' AND (data = 5)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC listener settings: Authentication protocol to use for incoming RPC connections:' is set to 'Enabled: Negotiate' or higher + # platforms: win10 + platform: windows + description: | + This policy setting controls which protocols incoming Remote Procedure Call (RPC) connections to the print spooler are allowed to use. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Negotiate': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC listener settings: Configure protocol options for incoming RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\ForceKerberosForRpc' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Manage processing of Queue-specific files' is set to 'Enabled: Limit Queue-specific files to Color profiles' + # platforms: win10 + platform: windows + description: | + This policy setting manages how queue-specific files are processed during printer installation. At printer installation time, a vendor-supplied installation application can specify a set of files, of any type, to be associated with a particular print queue. The files are downloaded to each client that connects to the print server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Limit Queue-specific files to Color profiles': + 'Computer Configuration\Policies\Administrative Templates\Printers\Manage processing of Queue-specific files' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\CopyFilesPolicy' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Limits print driver installation to Administrators' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether users that aren't Administrators can install print drivers on the system. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled. + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Limits print driver installation to Administrators' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\\PointAndPrint\RestrictDriverInstallationToAdministrators' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Include command line in process creation events' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the process creation command line text is logged in security audit events when a new process has been created. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Audit Process Creation\Include command line in process creation events' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\Audit\ProcessCreationIncludeCmdLine_Enabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Encryption Oracle Remediation' is set to 'Enabled: Force Updated Clients' + # platforms: win10 + platform: windows + description: | + Some versions of the CredSSP protocol that is used by some applications (such as Remote Desktop Connection) are vulnerable to an encryption oracle attack against the client. This policy controls compatibility with vulnerable clients and servers and allows you to set the level of protection desired for the encryption oracle vulnerability. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Force Updated Clients': + 'Computer Configuration\Policies\Administrative Templates\System\Credentials Delegation\Encryption Oracle Remediation' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\CredSSP\\Parameters\AllowEncryptionOracle' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Remote host allows delegation of non-exportable credentials' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Remote host allows delegation of non-exportable credentials. When using credential delegation, devices provide an exportable version of credentials to the remote host. This exposes users to the risk of credential theft from attackers on the remote host. The Restricted Admin Mode and Windows Defender Remote Credential Guard features are two options to help protect against this risk. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Credentials Delegation\Remote host allows delegation of non-exportable credentials' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CredentialsDelegation\AllowProtectedCreds' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Virtualization Based Security is enabled. Virtualization Based Security uses the Windows Hypervisor to provide support for security services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\EnableVirtualizationBasedSecurity' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Select Platform Security Level' is set to 'Secure Boot and DMA Protection' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Virtualization Based Security is enabled. Virtualization Based Security uses the Windows Hypervisor to provide support for security services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Secure Boot and DMA Protection': + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Select Platform Security Level' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\RequirePlatformSecurityFeatures' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Virtualization Based Protection of Code Integrity' is set to 'Enabled with UEFI lock' + # platforms: win10 + platform: windows + description: | + This setting enables virtualization based protection of Kernel Mode Code Integrity. When this is enabled, kernel mode memory protections are enforced and the Code Integrity validation path is protected by the Virtualization Based Security feature. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled with UEFI lock': + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Virtualization Based Protection of Code Integrity' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\HypervisorEnforcedCodeIntegrity' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Require UEFI Memory Attributes Table' is set to 'True (checked)' + # platforms: win10 + platform: windows + description: | + This option will only enable Virtualization Based Protection of Code Integrity on devices with UEFI firmware support for the Memory Attributes Table. Devices without the UEFI Memory Attributes Table may have firmware that is incompatible with Virtualization Based Protection of Code Integrity which in some cases can lead to crashes or data loss or incompatibility with certain plug-in cards. If not setting this option the targeted devices should be tested to ensure compatibility. + resolution: | + To establish the recommended configuration via GP, set the following UI path to TRUE: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Require UEFI Memory Attributes Table' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\HVCIMATRequired' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Credential Guard Configuration' is set to 'Enabled with UEFI lock' + # platforms: win10 + platform: windows + description: | + This setting lets users turn on Credential Guard with virtualization-based security to help protect credentials. The "Enabled with UEFI lock" option ensures that Credential Guard cannot be disabled remotely. In order to disable the feature, you must set the Group Policy to "Disabled" as well as remove the security functionality from each computer, with a physically present user, in order to clear configuration persisted in UEFI. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled with UEFI lock': + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Credential Guard Configuration' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\LsaCfgFlags' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Secure Launch Configuration' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Secure Launch protects the Virtualization Based Security environment from exploited vulnerabilities in device firmware. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Secure Launch Configuration' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\ConfigureSystemGuardLaunch' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices that match any of these device IDs' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify a list of Plug and Play hardware IDs and compatible IDs for devices that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing a device whose hardware ID or compatible ID appears in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, devices can be installed and updated as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices that match any of these device IDs' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\DenyDeviceIDs' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices that match any of these device IDs: Prevent installation of devices that match any of these device IDs' is set to 'PCI\CC_0C0A' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify a list of Plug and Play hardware IDs and compatible IDs for devices that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing a device whose hardware ID or compatible ID appears in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, devices can be installed and updated as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', and add 'PCI\CC_0C0A' to the Device IDs list: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices that match any of these device IDs' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\\DenyDeviceIDs\1' AND data = 'PCI\CC_0C0A'); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices that match any of these device IDs: Also apply to matching devices that are already installed.' is set to 'True' (checked) + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify a list of Plug and Play hardware IDs and compatible IDs for devices that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing a device whose hardware ID or compatible ID appears in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, devices can be installed and updated as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', and check the 'Also apply to matching devices that are already installed'. checkbox: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices that match any of these device IDs' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\DenyDeviceIDsRetroactive' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\DenyDeviceClasses' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes: Prevent installation of devices using drivers for these device setup' is set to 'IEEE 1394 device setup classes' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and add {d48179be-ec20-11d1-b6b8-00c04fa372a7}, {7ebefbc0-3200-11d2-b4c2-00a0C9697d07}, {c06ff265-ae09-48f0-812c-16753d7cba83}, and {6bdd1fc1-810f-11d0-bec7-08002be2092f} to the device setup classes list: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes' + query: | + SELECT data FROM registry WHERE ((key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\\DenyDeviceClasses\' AND data IN ('{d48179be-ec20-11d1-b6b8-00c04fa372a7}', '{7ebefbc0-3200-11d2-b4c2-00a0C9697d07}', '{c06ff265-ae09-48f0-812c-16753d7cba83}', '{6bdd1fc1-810f-11d0-bec7-08002be2092f}')) AND ((SELECT COUNT(*) FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\\DenyDeviceClasses\' AND data IN ('{d48179be-ec20-11d1-b6b8-00c04fa372a7}', '{7ebefbc0-3200-11d2-b4c2-00a0C9697d07}', '{c06ff265-ae09-48f0-812c-16753d7cba83}', '{6bdd1fc1-810f-11d0-bec7-08002be2092f}'))))=4); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes: Also apply to matching devices that are already installed.' is set to 'True' (checked) + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', and check the 'Also apply to matching devices that are already installed.' checkbox: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\DenyDeviceClassesRetroactive' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent device metadata retrieval from the Internet' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to prevent Windows from retrieving device metadata from the Internet. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Prevent device metadata retrieval from the Internet' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Device Metadata\PreventDeviceMetadataFromNetwork' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Boot-Start Driver Initialization Policy' is set to 'Enabled: Good, unknown and bad but critical' (Automated) + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify which boot-start drivers are initialized based on a classification determined by an Early Launch Antimalware boot-start driver. The Early Launch Antimalware boot-start driver can return the following classifications for each boot-start driver: + Good: The driver has been signed and has not been tampered with. + Bad: The driver has been identified as malware. It is recommended that you do not allow known bad drivers to be initialized. + Bad, but required for boot: The driver has been identified as malware, but the computer cannot successfully boot without loading this driver. + Unknown: This driver has not been attested to by your malware detection application and has not been classified by the Early Launch Antimalware boot-start driver. + If you enable this policy setting you will be able to choose which boot-start drivers to initialize the next time the computer is started. + If your malware detection application does not include an Early Launch Antimalware boot- start driver or if your Early Launch Antimalware boot-start driver has been disabled, this setting has no effect and all boot-start drivers are initialized. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 'Good, unknown and bad but critical': + 'Computer Configuration\Policies\Administrative Templates\System\Early Launch Antimalware\Boot-Start Driver Initialization Policy' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Policies\\EarlyLaunch\DriverLoadPolicy' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure registry policy processing: Do not apply during periodic background processing' is set to 'Enabled: FALSE' + # platforms: win10 + platform: windows + description: | + The "Do not apply during periodic background processing" option prevents the system from updating affected policies in the background while the computer is in use. When background updates are disabled, policy changes will not take effect until the next user logon or system restart. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, then set the Do not apply during periodic background processing option to FALSE (unchecked): + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure registry policy processing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}\NoBackgroundPolicy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure registry policy processing: Process even if the Group Policy objects have not changed' is set to 'Enabled: TRUE' + # platforms: win10 + platform: windows + description: | + The "Process even if the Group Policy objects have not changed" option updates and reapplies policies even if the policies have not changed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, then set the Process even if the Group Policy objects have not changed option to TRUE (checked): + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure registry policy processing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\NoGPOListChanges' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_domain_joined_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Continue experiences on this device' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the Windows device is allowed to participate in cross-device experiences (continue experiences). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Continue experiences on this device' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\EnableCdp' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_domain_joined_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off background refresh of Group Policy' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting prevents Group Policy from being updated while the computer is in use. + This policy setting applies to Group Policy for computers, users and Domain Controllers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Turn off background refresh of Group Policy' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + -- The registry key is not present when policy is disabled, so query below is returning 1 when policy is disabled and registry value does not exist. It also return 1 in case policy is enabled and its registry value is 1 + SELECT 1 WHERE ( + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System' AND name = 'DisableBkGndGroupPolicy' ) + ) OR ( + NOT EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableBkGndGroupPolicy' AND data = 1 ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_domain_joined_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off access to the Store' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether to use the Store service for finding an application to open a file with an unhandled file type or protocol association. When a user opens a file type or protocol that is not associated with any applications on the computer, the user is given the choice to select a local application or use the Store service to find an application. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off access to the Store' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template ICM.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\NoUseStoreOpenWith' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off downloading of print drivers over HTTP' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the computer can download print driver packages over HTTP. To set up HTTP printing, printer drivers that are not available in the standard operating system installation might need to be downloaded over HTTP. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off downloading of print drivers over HTTP' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template ICM.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\DisableWebPnPDownload' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off handwriting personalization data sharing' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting turns off data sharing from the handwriting recognition personalization tool. + The handwriting recognition personalization tool enables Tablet PC users to adapt handwriting recognition to their own writing style by providing writing samples. The tool can optionally share user writing samples with Microsoft to improve handwriting recognition in future versions of Windows. The tool generates reports and transmits them to Microsoft over a secure connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off handwriting personalization data sharing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template ShapeCollector.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\TabletPC\PreventHandwritingDataSharing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off handwriting recognition error reporting' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Turns off the handwriting recognition error reporting tool. + The handwriting recognition error reporting tool enables users to report errors encountered in Tablet PC Input Panel. The tool generates error reports and transmits them to Microsoft over a secure connection. Microsoft uses these error reports to improve handwriting recognition in future versions of Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off handwriting recognition error reporting' + Note: This Group Policy path is provided by the Group Policy template InkWatson.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\HandwritingErrorReports\PreventHandwritingErrorReports' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the Internet Connection Wizard can connect to Microsoft to download a list of Internet Service Providers (ISPs). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Internet Connection Wizard\ExitOnMSICW' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Internet download for Web publishing and online ordering wizards' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether Windows will download a list of providers for the Web publishing and online ordering wizards. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet download for Web publishing and online ordering wizards' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\NoWebServices' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off printing over HTTP' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to disable the client computer's ability to print over HTTP, which allows the computer to print to printers on the intranet as well as the Internet. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off printing over HTTP' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\DisableHTTPPrinting' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Registration if URL connection is referring to Microsoft.com' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the Windows Registration Wizard connects to Microsoft.com for online registration. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Registration if URL connection is referring to Microsoft.com' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Registration Wizard Control\NoRegistration' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Search Companion content file updates' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Search Companion should automatically download content updates during local and Internet searches. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Search Companion content file updates' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\SearchCompanion\DisableContentFileUpdates' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the "Order Prints" picture task' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the "Order Prints Online" task is available from Picture Tasks in Windows folders. + The Order Prints Online Wizard is used to download a list of providers and allow users to order prints online. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Order Prints" picture task' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\NoOnlinePrintsWizard' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the "Publish to Web" task for files and folders' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the tasks Publish this file to the Web, Publish this folder to the Web, and Publish the selected items to the Web are available from File and Folder Tasks in Windows folders. The Web Publishing wizard is used to download a list of providers and allow users to publish content to the Web. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Publish to Web" task for files and folders' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\NoPublishingWizard' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the Windows Messenger Customer Experience Improvement Program' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the Windows Customer Experience Improvement Program can collect anonymous information about how Windows is used. Microsoft uses information collected through the Windows Customer Experience Improvement Program to improve features that are most used and to detect flaws so that they can be corrected more quickly. Enabling this setting will reduce the amount of data Microsoft is able to gather for this purpose. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the Windows Messenger Customer Experience Improvement Program' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Messenger\\Client\CEIP' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Windows Customer Experience Improvement Program' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Windows Messenger can collect anonymous information about how the Windows Messenger software and service is used. + Microsoft uses information collected through the Windows Customer Experience Improvement Program to detect software flaws so that they can be corrected more quickly, enabling this setting will reduce the amount of data Microsoft is able to gather for this purpose. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Windows Customer Experience Improvement Program' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\SQMClient\\Windows\CEIPEnable' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Windows Error Reporting' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether or not errors are reported to Microsoft. Error Reporting is used to report information about a system or application that has failed or has stopped responding and is used to improve the quality of the product. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Windows Error Reporting' + query: | + SELECT COUNT(*) FROM registry WHERE ((path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Error Reporting\Disabled' AND data = 1) OR (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\PCHealth\\ErrorReporting\DoReport' AND data = 0))=2; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Support device authentication using certificate' is set to 'Enabled: Automatic' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to set support for Kerberos to attempt authentication using the certificate for the device to the domain. + Support for device authentication using certificate will require connectivity to a DC in the device account domain which supports certificate authentication for computer accounts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Automatic: + 'Computer Configuration\Policies\Administrative Templates\System\Kerberos\Support device authentication using certificate' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Kerberos.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\kerberos\\parameters\DevicePKInitBehavior' AND data = 0) AND (SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\kerberos\\parameters\DevicePKInitEnabled' AND data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enumeration policy for external devices incompatible with Kernel DMA Protection' is set to 'Enabled: Block All' + # platforms: win10 + platform: windows + description: | + This policy is intended to provide additional security against external DMA-capable devices. It allows for more control over the enumeration of external DMA-capable devices that are not compatible with DMA Remapping/device memory isolation and sandboxing. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Block All: + 'Computer Configuration\Policies\Administrative Templates\System\Kernel DMA Protection\Enumeration policy for external devices incompatible with Kernel DMA Protection' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DmaGuard.admx/adml that is included with the Microsoft Windows 10 Release 1809 & Server 2019 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Kernel DMA Protection\DeviceEnumerationPolicy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure password backup directory' is set to 'Enabled: Active Directory' or 'Enabled: Azure Active Directory' + # platforms: win10 + platform: windows + description: | + This policy setting configures which directory Windows LAPS will use to back up the local admin account password. + The recommended state for this setting is: Enabled: Active Directory or Enabled: Azure Active Directory. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + Note 3: Windows LAPS does not support simultaneous storage of the local admin password in both directory types. + Note 4: If the setting is configured and the managed device is not joined to the configured directory type, the local administrator password will not be managed by Windows LAPS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Active Directory or Enabled: Azure Active Directory: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Configure password backup directory' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\BackupDirectory' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Do not allow password expiration time longer than required by policy' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures whether the password age dictated by the Windows LAPS "Password Settings" policy is enforced and cannot be extended manually (only shortened) by an authorized technician. + If an expiration is detected, the password is changed immediately, and password expiration is set according to policy. + The recommended state for this setting is: Enabled. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Do not allow password expiration time longer than required by policy' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS:PwdExpirationProtectionEnabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Enable password encryption' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the Windows LAPS managed password is encrypted before being sent to Active Directory. + The recommended state for this setting is: Enabled. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + Note 3: This setting has no effect unless the password has been configured to be backed up to Active Directory, and the Active Directory domain functional level is at Windows Server 2016 or above. + Note 4: This setting has no relevance (but is harmless) when storing Windows LAPS passwords to Entra ID (formerly Azure Active Directory) as it automatically encrypts all Windows LAPS passwords. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Enable password encryption' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\ADPasswordEncryptionEnabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Password Settings: Password Complexity' is set to 'Enabled: Large letters + small letters + numbers + special characters' + # platforms: win10 + platform: windows + description: | + This policy setting configures the Windows LAPS Password Settings policy for password complexity. + Each additional character in a password increases its complexity exponentially. For + instance, a seven-character, all lower-case alphabetic password would have 26 to the + power of 7 (approximately 8 x 10 to the power of 9 or 8 billion) possible combinations. + At 1,000,000 attempts per second (a capability of many password-cracking utilities), it + would only take 133 minutes to crack. A seven-character alphabetic password with case + sensitivity has 52 to the power of 7 combinations. A seven-character case-sensitive + alphanumeric password without punctuation has 627 combinations. An eight-character + password has 26 to the power of 8 (or 2 x 10 to the power of 11) possible combinations. + Although this might seem to be a large number, at 1,000,000 attempts per second it + would take only 59 hours to try all possible passwords. Remember, these times will + significantly increase for passwords that use ALT characters and other special keyboard + characters such as "!" or "@". Proper use of the password settings can help make it + difficult to mount a brute force attack. + The recommended state for this setting is: Enabled: Large letters + small letters + + numbers + special characters. + + Note: Organizations that utilize third-party commercial software to manage unique & + complex local Administrator passwords on domain members may opt to disregard these + LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined + to an Active Directory domain or Entra ID (formerly Azure Active Directory). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and configure the Password Complexity option to Large letters + small letters + numbers + special characters: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Password Settings' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PasswordComplexity' AND data = 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Password Settings: Password Length' is set to 'Enabled: 15 or more' + # platforms: win10 + platform: windows + description: | + This policy setting configures the Windows LAPS Password Settings policy for password length. + Each additional character in a password increases its complexity exponentially. For + instance, a seven-character, all lower-case alphabetic password would have 26 to the + power of 7 (approximately 8 x 10 to the power of 9 or 8 billion) possible combinations. + At 1,000,000 attempts per second (a capability of many password-cracking utilities), it + would only take 133 minutes to crack. A seven-character alphabetic password with case + sensitivity has 52 to the power of 7 combinations. A seven-character case-sensitive + alphanumeric password without punctuation has 627 combinations. An eight-character + password has 26 to the power of 8 (or 2 x 10 to the power of 11) possible combinations. + Although this might seem to be a large number, at 1,000,000 attempts per second it + would take only 59 hours to try all possible passwords. Remember, these times will + significantly increase for passwords that use ALT characters and other special keyboard + characters such as "!" or "@". Proper use of the password settings can help make it + difficult to mount a brute force attack. + The recommended state for this setting is: Enabled: 15 or more. + + Note: Organizations that utilize third-party commercial software to manage unique & + complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined + to an Active Directory domain or Entra ID (formerly Azure Active Directory). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and configure the Password Length option to 15 or more: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Password Settings' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PasswordLength' AND data = 15); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Password Settings: Password Age (Days)' is set to 'Enabled: 30 or fewer' + # platforms: win10 + platform: windows + description: | + This policy setting configures the Windows LAPS Password Settings policy for password length. + Each additional character in a password increases its complexity exponentially. For + instance, a seven-character, all lower-case alphabetic password would have 26 to the + power of 7 (approximately 8 x 10 to the power of 9 or 8 billion) possible combinations. + At 1,000,000 attempts per second (a capability of many password-cracking utilities), it + would only take 133 minutes to crack. A seven-character alphabetic password with case + sensitivity has 52 to the power of 7 combinations. A seven-character case-sensitive + alphanumeric password without punctuation has 627 combinations. An eight-character + password has 26 to the power of 8 (or 2 x 10 to the power of 11) possible combinations. + Although this might seem to be a large number, at 1,000,000 attempts per second it + would take only 59 hours to try all possible passwords. Remember, these times will + significantly increase for passwords that use ALT characters and other special keyboard + characters such as "!" or "@". Proper use of the password settings can help make it + difficult to mount a brute force attack. + The recommended state for this setting is: Enabled: 30 or fewer. + + Note: Organizations that utilize third-party commercial software to manage unique & + complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined + to an Active Directory domain or Entra ID (formerly Azure Active Directory). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and configure the Password Age (Days) option to 30 or fewer: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Password Settings' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PasswordAgeDays' AND data = 30); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Post-authentication actions: Grace period (hours)' is set to 'Enabled: 8 or fewer hours, but not 0' + # platforms: win10 + platform: windows + description: | + This policy settings configures post-authentication actions which will be executed after + detecting an authentication by the Windows LAPS managed account. The Grace period + refers to the amount of time (hours) to wait after an authentication before executing the + specified post-authentication actions. + The recommended state for this setting is: Enabled: 8 or fewer hours, but not 0. + Note: Organizations that utilize third-party commercial software to manage unique & + complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined + to an Active Directory domain or Entra ID (formerly Azure Active Directory). + Note 3: If this policy is set to 0 it prevents all post-authentication actions from occurring. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 8 or fewer hours, but not 0: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Post-authentication actions: Grace period (hours)' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PostAuthenticationResetDelay' AND data <= 8 AND data != 0 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Post-authentication actions: Actions' is set to 'Enabled: Reset the password and logoff the managed account' or higher + # platforms: win10 + platform: windows + description: | + This policy settings configures post-authentication actions which will be executed after + detecting an authentication by the LAPS managed account. The Action refers to actions + to take upon expiry of the grace period before executing the specified post-authentication actions. + Post-authentication actions: + • Reset password: upon expiry of the grace period, the managed account password will be reset. + • Reset the password and logoff the managed account: upon expiry of the grace period, the managed account password will be reset and any interactive logon sessions using the managed account will terminated. + • Reset the password and reboot the device: upon expiry of the grace period, the managed account password will be reset and the managed device will be immediately rebooted. + + Warning: After an interactive logon session is terminated, other authenticated sessions + using the Windows LAPS managed account may still be active. The only way to ensure + that the previous password is no longer in use is to reboot the OS. + The recommended state for this setting is: Enabled: Reset the password and logoff + the managed account or higher. + + Note: Organizations that utilize third-party commercial software to manage unique & + complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note 2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Reset the password and logoff the managed account or higher: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Post-authentication actions: Actions' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LAPS.admx/adml' that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v3.0 (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PostAuthenticationActions' AND data IN (3, 5)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Disallow copying of user input methods to the system account for sign-in' is set to 'Enabled' (Automated) + # platforms: win10 + platform: windows + description: | + This policy prevents automatic copying of user input methods to the system account for use on the sign-in screen. The user is restricted to the set of input methods that are enabled in the system account. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Locale Services\Disallow copying of user input methods to the system account for sign-in' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Globalization.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Control Panel\\International\BlockUserInputMethodsForSignIn' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Block user from showing account details on sign-in' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy prevents the user from showing account details (email address or user name) on the sign-in screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Block user from showing account details on sign-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\BlockUserFromShowingAccountDetailsOnSignin' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not display network selection UI' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control whether anyone can interact with available networks UI on the logon screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Do not display network selection UI' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\DontDisplayNetworkSelectionUI' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not enumerate connected users on domain-joined computers' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting prevents connected users from being enumerated on domain-joined computers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Do not enumerate connected users on domain-joined computers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\DontEnumerateConnectedUsers' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enumerate local users on domain-joined computers' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows local users to be enumerated on domain-joined computers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Enumerate local users on domain-joined computers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\EnumerateLocalUsers' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off app notifications on the lock screen' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to prevent app notifications from appearing on the lock screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Turn off app notifications on the lock screen' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\DisableLockScreenAppNotifications' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off picture password sign-in' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control whether a domain user can sign in using a picture password. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Turn off picture password sign-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\BlockDomainPicturePassword' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on convenience PIN sign-in' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control whether a domain user can sign in using a convenience PIN. In Windows 10, convenience PIN was replaced with Passport, which has stronger security properties. To configure Passport for domain users, use the policies under Computer Configuration\Administrative Templates\Windows Components\Microsoft Passport for Work. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Turn on convenience PIN sign-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\AllowDomainPINLogon' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Clipboard synchronization across devices' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting determines whether Clipboard contents can be synchronized across devices. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\OS Policies\Allow Clipboard synchronization across devices' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\AllowCrossDeviceClipboard' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow upload of User Activities' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether published User Activities can be uploaded to the cloud. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\OS Policies\Allow upload of User Activities' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\UploadUserActivities' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow network connectivity during connected-standby (on battery)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control the network connectivity state in standby on modern standby-capable systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow network connectivity during connected-standby (on battery)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\f15576e8-98b7-4186-b944-eafa664402d9\DCSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow network connectivity during connected-standby (plugged in)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control the network connectivity state in standby on modern standby-capable systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow network connectivity during connected-standby (plugged in)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\f15576e8-98b7-4186-b944-eafa664402d9\ACSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow standby states (S1-S3) when sleeping (on battery)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting manages whether or not Windows is allowed to use standby states when putting the computer in a sleep state. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow standby states (S1-S3) when sleeping (on battery)'' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\DCSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow standby states (S1-S3) when sleeping (plugged in)' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting manages whether or not Windows is allowed to use standby states when putting the computer in a sleep state. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow standby states (S1-S3) when sleeping (plugged in)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\ACSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require a password when a computer wakes (on battery)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Specifies whether or not the user is prompted for a password when the system resumes from sleep. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Require a password when a computer wakes (on battery)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\0e796bdb-100d-47d6-a2d5-f7d2daa51f51\DCSettingIndex' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require a password when a computer wakes (plugged in)' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Specifies whether or not the user is prompted for a password when the system resumes from sleep. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Require a password when a computer wakes (plugged in)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\0e796bdb-100d-47d6-a2d5-f7d2daa51f51\ACSettingIndex' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Offer Remote Assistance' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to turn on or turn off Offer (Unsolicited) Remote Assistance on this computer. Help desk and support personnel will not be able to proactively offer assistance, although they can still respond to user assistance requests. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Remote Assistance\Configure Offer Remote Assistance' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\fAllowUnsolicited' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Solicited Remote Assistance' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to turn on or turn off Solicited (Ask for) Remote Assistance on this computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Remote Assistance\Configure Solicited Remote Assistance' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\fAllowToGetHelp' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable RPC Endpoint Mapper Client Authentication' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether RPC clients authenticate with the Endpoint Mapper Service when the call they are making contains authentication information. The Endpoint Mapper Service on computers running Windows NT4 (all service packs) cannot process authentication information supplied in this manner. This policy setting can cause a specific issue with 1-way forest trusts if it is applied to the trusting domain DCs (see Microsoft KB3073942), so we do not recommend applying it to Domain Controllers. + Note: This policy will not in effect until the system is rebooted. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Remote Procedure Call\Enable RPC Endpoint Mapper Client Authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Rpc\EnableAuthEpResolution' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Restrict Unauthenticated RPC clients' is set to 'Enabled: Authenticated' + # platforms: win10 + platform: windows + description: | + This policy setting controls how the RPC server runtime handles unauthenticated RPC clients connecting to RPC servers. + This policy setting impacts all RPC applications. In a domain environment this policy setting should be used with caution as it can impact a wide range of functionality including group policy processing itself. Reverting a change to this policy setting can require manual intervention on each affected machine. This policy setting should never be applied to a Domain Controller. + A client will be considered an authenticated client if it uses a named pipe to communicate with the server or if it uses RPC Security. RPC Interfaces that have specifically requested to be accessible by unauthenticated clients may be exempt from this restriction, depending on the selected value for this policy setting. + -- "None" allows all RPC clients to connect to RPC Servers running on the machine on which the policy setting is applied. + -- "Authenticated" allows only authenticated RPC Clients (per the definition above) to connect to RPC Servers running on the machine on which the policy setting is applied. Exemptions are granted to interfaces that have requested them. + -- "Authenticated without exceptions" allows only authenticated RPC Clients (per the definition above) to connect to RPC Servers running on the machine on which the policy setting is applied. No exceptions are allowed. This value has the potential to cause serious problems and is not recommended. + Note: This policy setting will not be applied until the system is rebooted. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Authenticated': + 'Computer Configuration\Policies\Administrative Templates\System\Remote Procedure Call\Restrict Unauthenticated RPC clients' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Rpc\RestrictRemoteClients' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Microsoft Support Diagnostic Tool: Turn on MSDT interactive communication with support provider' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures Microsoft Support Diagnostic Tool (MSDT) interactive communication with the support provider. MSDT gathers diagnostic data for analysis by support professionals. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Troubleshooting and Diagnostics\Microsoft Support Diagnostic Tool\Microsoft Support Diagnostic Tool: Turn on MSDT interactive communication with support provider + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template MSDT.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\ScriptedDiagnosticsProvider\\Policy\DisableQueryRemoteServer' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable/Disable PerfTrack' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether to enable or disable tracking of responsiveness events. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Troubleshooting and Diagnostics\Windows Performance PerfTrack\Enable/Disable PerfTrack' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PerformancePerftrack.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\Windows\\WDI\\{9c5a40da-b965-4fc3-8781-88dd50a6299d}\ScenarioExecutionEnabled' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the advertising ID' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting turns off the advertising ID, preventing apps from using the ID for experiences across apps. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\User Profiles\Turn off the advertising ID' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template UserProfiles.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\Windows\\AdvertisingInfo\DisabledByGroupPolicy' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable Windows NTP Client' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the Windows NTP Client is enabled. Enabling the Windows NTP Client allows your computer to synchronize its computer clock with other NTP servers. You might want to disable this service if you decide to use a third-party time provider. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Windows Time Service\Time Providers\Enable Windows NTP Client' + Note: This Group Policy path is provided by the Group Policy template W32Time.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\W32Time\\TimeProviders\\NtpClient\Enabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable Windows NTP Server' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify whether the Windows NTP Server is enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Windows Time Service\Time Providers\Enable Windows NTP Server' + Note: This Group Policy path is provided by the Group Policy template W32Time.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\W32Time\\TimeProviders\\NtpServer' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: CIS - Ensure 'Allow a Windows app to share application data between users' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy manages a Windows app's ability to share data between users who have installed the + app. Data is shared through the SharedLocal folder. This folder is available through the + Windows.Storage API. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Package Deployment\Allow a Windows app to share application data between users' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CurrentVersion\\AppModel\\StateManager\\AllowSharedLocalAppData' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Prevent non-admin users from installing packaged Windows apps' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting manages non-Administrator users' ability to install Windows app packages. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Package Deployment\Prevent non-admin users from installing packaged Windows apps' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Appx\\BlockNonAdminUserInstall' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Let Windows apps activate with voice while the system is locked' is set to 'Enabled Force Deny' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Windows apps can be activated by voice (apps and Cortana) while the system is locked. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled Force Deny': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Privacy\Let Windows apps activate with voice while the system is locked' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppPrivacy\\LetAppsActivateWithVoiceAboveLock' AND data == 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Allow Microsoft accounts to be optional' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting lets you control whether Microsoft accounts are optional for Windows Store + apps that require an account to sign in. This policy only affects Windows Store apps that support it. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App runtime\Allow Microsoft accounts to be optional' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\MSAOptional' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Block launching Universal Windows apps with Windows Runtime API access from hosted content' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether Microsoft Store apps with Windows Runtime API access directly from web content can be launched. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App runtime\Block launching Universal Windows apps with Windows Runtime API access from hosted content' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\BlockHostedAppAccessWinRT' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Disallow Autoplay for non-volume devices' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting disallows AutoPlay for MTP devices like cameras or phones. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\AutoPlay Policies\Disallow Autoplay for non-volume devices' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\\NoAutoplayfornonVolume' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Set the default behavior for AutoRun' is set to 'Enabled Do not execute any autorun commands' + # platforms: win10 + platform: windows + description: | + This policy setting sets the default behavior for Autorun commands. Autorun commands are + generally stored in autorun.inf files. They often launch the installation program or other routines. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled Do not execute any autorun commands': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\AutoPlay Policies\Set the default behavior for AutoRun' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoAutorun' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Turn off Autoplay' is set to 'Enabled All drives' + # platforms: win10 + platform: windows + description: | + This policy setting sets the default behavior for Autorun commands. Autorun commands are + generally stored in autorun.inf files. They often launch the installation program or other routines. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled All drives': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\AutoPlay Policies\Turn off Autoplay' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoDriveTypeAutoRun' AND data == 255); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure enhanced anti-spoofing' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether enhanced anti-spoofing is configured for devices which support it. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Biometrics\Facial Features\Configure enhanced anti-spoofing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Biometrics.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Biometrics\\FacialFeatures\EnhancedAntiSpoofing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow access to BitLocker-protected fixed data drives from earlier versions of Windows' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures whether or not fixed data drives formatted with the FAT file system can be unlocked and viewed on computers running Windows Server 2008 (non-R2), Windows Vista, Windows XP with Service Pack 3 (SP3), or Windows XP with Service Pack 2 (SP2) operating systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Allow access to BitLocker-protected fixed data drives from earlier versions of Windows' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVDiscoveryVolumeType' AND data = ''); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected fixed data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for fixed data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for fixed data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRecovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Allow data recovery agent' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected fixed data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)'': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker-protected fixed drives can be recovered: Allow data recovery agent' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\FVE\FDVManageDRA' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Recovery Password' is set to 'Enabled: Allow 48-digit recovery password' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Allow 48-digit recovery password': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker-protected fixed drives can be recovered: Recovery Password' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRecoveryPassword' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Recovery Key' is set to 'Enabled: Allow 256-bit recovery key' or higher + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Allow 256-bit recovery key': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Recovery Key' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRecoveryKey' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Omit recovery options from the BitLocker setup wizard' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)'': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Omit recovery options from the BitLocker setup wizard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVHideRecoveryPage' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Save BitLocker recovery information to AD DS for fixed data drives' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for fixed data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Save BitLocker recovery information to AD DS for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Configure storage of BitLocker recovery information to AD DS' is set to 'Enabled: Backup recovery passwords and key packages' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for fixed data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Backup recovery passwords and key packages': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVActiveDirectoryInfoToStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for fixed data drives' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for fixed data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)'': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRequireActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of hardware-based encryption for fixed data drives' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage BitLocker's use of hardware-based encryption on fixed data drives and specify which encryption algorithms it can use with hardware-based encryption. Using hardware-based encryption can improve performance of drive operations that involve frequent reading or writing of data to the drive. + You can specify additional options that control whether BitLocker software-based encryption is used instead of hardware-based encryption on computers that do not support hardware-based encryption and whether you want to restrict the encryption algorithms and cipher suites used with hardware-based encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of hardware-based encryption for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVHardwareEncryption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of passwords for fixed data drives' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether a password is required to unlock BitLocker-protected fixed data drives. + Note: This setting is enforced when turning on BitLocker, not when unlocking a volume. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of passwords for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVPassphrase' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on fixed data drives' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify whether smart cards can be used to authenticate user access to the BitLocker-protected fixed data drives on a computer. Smart cards can be used to authenticate user access to the drive. You can require smart card authentication by selecting the "Require use of smart cards on fixed data drives" check box. + Note: This setting is enforced when turning on BitLocker, not when unlocking a drive. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of smart cards on fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\FVE\FDVAllowUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on fixed data drives: Require use of smart cards on fixed data drives' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify whether smart cards must be used to authenticate user access to the BitLocker-protected fixed data drives on a computer. Smart cards can be used to authenticate user access to the drive. You can require a smart card authentication by selecting the "Require use of smart cards on fixed data drives" check box. + Note: This setting is enforced when turning on BitLocker, not when unlocking a drive. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: True (checked): + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of smart cards on fixed data drives: Require use of smart cards on fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVEnforceUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow enhanced PINs for startup' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure whether or not enhanced startup PINs are used with BitLocker. + Enhanced startup PINs permit the use of characters including uppercase and lowercase letters, symbols, numbers, and spaces. This policy setting is applied when you turn on BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Allow enhanced PINs for startup' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\UseEnhancedPin' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Secure Boot for integrity validation' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure whether Secure Boot will be allowed as the platform integrity provider for BitLocker operating system drives. Secure Boot ensures that the PC's pre-boot environment only loads firmware that is digitally signed by authorized software publishers. Secure Boot also provides more flexibility for managing pre-boot configuration than legacy BitLocker integrity checks. Secure Boot requires a system that meets the UEFI 2.3.1 Specifications for Class 2 and Class 3 computers. + When this policy is enabled and the hardware is capable of using Secure Boot for BitLocker scenarios, the "Use enhanced Boot Configuration Data validation profile" group policy setting is ignored and Secure Boot verifies BCD settings according to the Secure Boot policy setting, which is configured separately from BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Allow Secure Boot for integrity validation' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSAllowSecureBootForIntegrity' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + The "Allow certificate-based data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected operating system drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + In "Save BitLocker recovery information to Active Directory Domain Services", choose which BitLocker recovery information to store in AD DS for operating system drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for operating system drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRecovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Allow data recovery agent' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + The "Allow certificate-based data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected operating system drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Allow data recovery agent' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSManageDRA' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Recovery Password' is set to 'Enabled: Allow 48-digit recovery password' or higher + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Require 48-digit recovery password': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Recovery Password' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRecoveryPassword' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Recovery Key' is set to 'Enabled: Do not allow 256-bit recovery key' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Do not allow 256-bit recovery key': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Recovery Key' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRecoveryKey' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Omit recovery options from the BitLocker setup wizard' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Omit recovery options from the BitLocker setup wizard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSHideRecoveryPage' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Save BitLocker recovery information to AD DS for operating system drives' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services", choose which BitLocker recovery information to store in AD DS for operating system drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Save' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSActiveDirectoryBackup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' is set to 'Enabled: Store recovery passwords and key packages' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services", choose which BitLocker recovery information to store in AD DS for operating system drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Store recovery passwords and key packages': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSActiveDirectoryInfoToStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for operating system drives' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for operating system drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for operating system drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRequireActiveDirectoryBackup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of hardware-based encryption for operating system drives' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage BitLocker's use of hardware-based encryption on operating system drives and specify which encryption algorithms it can use with hardware-based encryption. Using hardware-based encryption can improve performance of drive operations that involve frequent reading or writing of data to the drive. + You can specify additional options that control whether BitLocker software-based encryption is used instead of hardware-based encryption on computers that do not support hardware-based encryption and whether you want to restrict the encryption algorithms and cipher suites used with hardware-based encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Configure use of hardware-based encryption for operating system drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSHardwareEncryption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of passwords for operating system drives' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the constraints for passwords used to unlock BitLocker-protected operating system drives. + Note: This setting is enforced when turning on BitLocker, not when unlocking a volume. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Configure use of passwords for operating system drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSPassphrase' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require additional authentication at startup' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure whether BitLocker requires additional authentication each time the computer starts and whether you are using BitLocker with or without a Trusted Platform Module (TPM). This policy setting is applied when you turn on BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Require additional authentication at startup' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\UseAdvancedStartup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require additional authentication at startup: Allow BitLocker without a compatible TPM' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure whether you can use BitLocker without a Trusted Platform Module (TPM), instead using a password or startup key on a USB flash drive. This policy setting is applied when you turn on BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Require additional authentication at startup: Allow BitLocker without a compatible TPM' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\EnableBDEWithNoTPM' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow access to BitLocker-protected removable data drives from earlier versions of Windows' is set to 'Disabled' (Automated) + # platforms: win10 + platform: windows + description: | + This policy setting configures whether or not removable data drives formatted with the FAT file system can be unlocked and viewed on computers running Windows Server 2008 (non-R2), Windows Vista, Windows XP with Service Pack 3 (SP3), or Windows XP with Service Pack 2 (SP2) operating systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Allow access to BitLocker-protected removable data drives from earlier versions of Windows' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVDiscoveryVolumeType' AND data = ''); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected removable data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for removable data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for removable data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRecovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Allow data recovery agent' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected removable data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Allow data recovery agent' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVManageDRA' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Recovery Password' is set to 'Enabled: Do not allow 48- digit recovery password' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Do not allow 48-digit recovery password': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Recovery Password' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRecoveryPassword' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Recovery Key' is set to 'Enabled: Do not allow 256-bit recovery key' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Do not allow 256-bit recovery key': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Recovery Key' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRecoveryKey' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Omit recovery options from the BitLocker setup wizard' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Omit recovery options from the BitLocker setup wizard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVHideRecoveryPage' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Save BitLocker recovery information to AD DS for removable data drives' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for removable data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Save BitLocker recovery information to AD DS for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' is set to 'Enabled: Backup recovery passwords and key packages' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for removable data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Backup recovery passwords and key packages': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVActiveDirectoryInfoToStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for removable data drives' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for removable data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRequireActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of hardware-based encryption for removable data drives' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage BitLocker's use of hardware-based encryption on removable data drives and specify which encryption algorithms it can use with hardware- based encryption. Using hardware-based encryption can improve performance of drive operations that involve frequent reading or writing of data to the drive. + You can specify additional options that control whether BitLocker software-based encryption is used instead of hardware-based encryption on computers that do not support hardware-based encryption and whether you want to restrict the encryption algorithms and cipher suites used with hardware-based encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of hardware-based encryption for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVHardwareEncryption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of passwords for removable data drives' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify whether a password is required to unlock BitLocker-protected removable data drives. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of passwords for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVPassphrase' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on removable data drives' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether smart cards can be used to authenticate user access to BitLocker-protected removable data drives on a computer. + Smart cards can be used to authenticate user access to the drive. You can require smart card authentication by selecting the "Require use of smart cards on removable data drives" check box. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of smart cards on removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVAllowUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on removable data drives: Require use of smart cards on removable data drives' is set to 'Enabled: True' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether smart cards must be used to authenticate user access to BitLocker-protected removable data drives on a computer. + Smart cards can be used to authenticate user access to the drive. You can require smart card authentication by selecting the "Require use of smart cards on removable data drives" check box. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of smart cards on removable data drives: Require use of smart cards on removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVEnforceUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Deny write access to removable drives not protected by BitLocker' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures whether BitLocker protection is required for a computer to be able to write data to a removable data drive. + All removable data drives that are not BitLocker-protected will be mounted as read-only. If the drive is protected by BitLocker, it will be mounted with read and write access. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Deny write access to removable drives not protected by BitLocker' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Policies\\Microsoft\\FVE\RDVDenyWriteAccess' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Deny write access to removable drives not protected by BitLocker: Do not allow write access to devices configured in another organization' is set to 'Enabled: False' + # platforms: win10 + platform: windows + description: | + This policy setting configures whether the computer will be able to write data to BitLocker- protected removable drives that were configured in another organization. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Deny write access to removable drives not protected by BitLocker: Do not allow write access to devices configured in another organization' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVDenyCrossOrg' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disable new DMA devices when this computer is locked' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to block direct memory access (DMA) for all hot pluggable PCI downstream ports until a user logs into Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Disable new DMA devices when this computer is locked' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\DisableExternalDMAUnderLock' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Use of Camera' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the use of Camera devices on the machine are + permitted. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Camera\Allow Use of Camera' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Camera\AllowCamera' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off cloud consumer account state content' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether cloud consumer account state content is allowed in all Windows experiences. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off cloud consumer account state content' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\\Windows\\CloudContent\DisableConsumerAccountStateContent' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off cloud optimized content' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting turns off cloud optimized content in all Windows experiences. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off cloud optimized content' + query: | + Select 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent\DisableCloudOptimizedContent' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Microsoft consumer experiences' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting turns off experiences that help consumers make the most of their devices and Microsoft account. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off Microsoft consumer experiences' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent\DisableWindowsConsumerFeatures' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require pin for pairing' is set to 'Enabled: First Time' OR 'Enabled: Always' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether or not a PIN is required for pairing to a wireless display device. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: First Time' OR 'Enabled: Always': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Connect\Require pin for pairing' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\Windows\\Connect\RequirePinForPairing' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not display the password reveal button' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure the display of the password reveal button in password entry user experiences. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Credential User Interface\Do not display the password reveal button' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CredUI\DisablePasswordReveal' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enumerate administrator accounts on elevation' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether administrator accounts are displayed when a user attempts to elevate a running application. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Credential User Interface\Enumerate administrator accounts on elevation' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\CredUI\EnumerateAdministrators' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent the use of security questions for local accounts' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether security questions can be used to reset local account passwords. The security question feature does not apply to domain accounts, only local accounts on the workstation. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Credential User Interface\Prevent the use of security questions for local accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\NoLocalPasswordResetQuestions' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Diagnostic Data' is set to 'Enabled: Diagnostic data off (not recommended)' or 'Enabled: Send required diagnostic data' + # platforms: win10 + platform: windows + description: | + This policy setting determines the amount of diagnostic and usage data reported to Microsoft: + - A value of (0) Diagnostic data off (not recommended). Using this value, no diagnostic data is sent from the device. This value is only supported on Enterprise, Education, and Server editions. If you choose this setting, devices in your organization will still be secure. + - A value of (1) Send required diagnostic data. This is the minimum diagnostic data necessary to keep Windows secure, up to date, and performing as expected. Using this value disables the Optional diagnostic data control in the Settings app. + - A value of (3)Send optional diagnostic data. Additional diagnostic data is collected that helps us to detect, diagnose and fix issues, as well as make product improvements. Required diagnostic data will always be included when you choose to send optional diagnostic data. Optional diagnostic data can also include diagnostic log files and crash dumps. Use the Limit Dump Collection and the Limit Diagnostic Log Collection policies for more granular control of what optional diagnostic data is sent. + Windows telemetry settings apply to the Windows operating system and some first party apps. This setting does not apply to third party apps running on Windows 10/11. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 'Diagnostic data off (not recommended)' or Enabled: 'Send required diagnostic data': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Allow Telemetry' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\AllowTelemetry' AND (data = 0 OR data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Authenticated Proxy usage for the Connected User Experience and Telemetry service' is set to 'Enabled: Disable Authenticated Proxy usage' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether the Connected User Experience and Telemetry service can automatically use an authenticated proxy to send data back to Microsoft. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable Authenticated Proxy usage': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Configure Authenticated Proxy usage for the Connected User Experience and Telemetry service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\DisableEnterpriseAuthProxy' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disable OneSettings Downloads' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting controls whether Windows attempts to connect with the OneSettings service to download configuration settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Disable OneSettings Downloads' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\\DisableOneSettingsDownloads' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Do not show feedback notifications' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows an organization to prevent its devices from showing feedback questions from Microsoft. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Do not show feedback notifications' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\DoNotShowFeedbackNotifications' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable OneSettings Auditing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting controls whether Windows records attempts to connect with the OneSettings service to the Operational EventLog. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Enable OneSettings Auditing' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\\EnableOneSettingsAuditing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Limit Diagnostic Log Collection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting controls whether additional diagnostic logs are collected when more information is needed to troubleshoot a problem on the device. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Limit Diagnostic Log Collection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\\LimitDiagnosticLogCollection' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Limit Dump Collection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting limits the type of dumps that can be collected when more information is needed to troubleshoot a problem. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled. + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Limit Dump Collection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\LimitDumpCollection' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Toggle user control over Insider builds' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether users can access the Insider build controls in the Advanced Options for Windows Update. These controls are located under "Get Insider builds," and enable users to make their devices available for downloading and installing Windows preview software. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Toggle user control over Insider builds' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\PreviewBuilds\AllowBuildPreview' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Download Mode' is NOT set to 'Enabled: Internet' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the download method that Delivery Optimization can use in downloads of Windows Updates, Apps and App updates. The following methods are supported: + 0 = HTTP only, no peering. + 1 = HTTP blended with peering behind the same NAT. + 2 = HTTP blended with peering across a private group. Peering occurs on devices in the same Active Directory Site (if exist) or the same domain by default. When this option is selected, peering will cross NATs. To create a custom group use Group ID in combination with Mode 2. + 3 = HTTP blended with Internet Peering. + 99 = Simple download mode with no peering. Delivery Optimization downloads using HTTP only and does not attempt to contact the Delivery Optimization cloud services. + 100 = Bypass mode. Do not use Delivery Optimization and use BITS instead. + resolution: | + To establish the recommended configuration via GP, set the following UI path to any value other than Enabled: Internet (3): + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Delivery Optimization\Download Mode' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DeliveryOptimization.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeliveryOptimization\DODownloadMode' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Custom SSPs and APs to be loaded into LSASS' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the configuration under which the Local Security Authority Subsystem Service (LSASS) will load custom Security Support Provider/Authentication Package (SSP/AP). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Local Security Authority\Allow Custom SSPs and APs to be loaded into LSASS' + + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\Policies\\Microsoft\\Windows\\System\\AllowCustomSSPsAPs' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Application: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Application\Control Event Log behavior when the log file reaches its maximum size' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Retain old events, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\Policies\\Microsoft\\Windows\\EventLog\\Application\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Application: Specify the maximum log file size (KB)' is set to 'Enabled: 32,768 or greater' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 32,768 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Application\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Application\\MaxSize' AND data >= 32768 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Security: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Security\Control Event Log behavior when the log file reaches its maximum size' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Retain old events, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Security\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Security: Specify the maximum log file size (KB)' is set to 'Enabled: 196,608 or greater' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 196,608 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Security\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Security\MaxSize' AND data >= 196608 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Setup: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Setup\Control Event Log behavior when the log file reaches its maximum size + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Retain old events, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Setup\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Setup: Specify the maximum log file size (KB)' is set to 'Enabled: 32,768 or greater' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 32,768 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Setup\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Setup\MaxSize' AND data >= 32768); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'System: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\System\Control Event Log behavior when the log file reaches its maximum size' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\System\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'System: Specify the maximum log file size (KB)' is set to 'Enabled: 32,768 or greater' + # platforms: win10 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 32,768 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\System\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\System\MaxSize' AND data >= 32768 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Data Execution Prevention for Explorer' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Disabling Data Execution Prevention can allow certain legacy plug-in applications to function without terminating Explorer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off Data Execution Prevention for Explorer' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Explorer.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\NoDataExecutionPrevention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off heap termination on corruption' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + Without heap termination on corruption, legacy plug-in applications may continue to function when a File Explorer session has become corrupt. Ensuring that heap termination on corruption is active will prevent this. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off heap termination on corruption' + Note: This Group Policy path is provided by the Group Policy template Explorer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\NoHeapTerminationOnCorruption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off shell protocol protected mode' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure the amount of functionality that the shell protocol can have. When using the full functionality of this protocol, applications can open folders and launch files. The protected mode reduces the functionality of this protocol allowing applications to only open a limited set of folders. Applications are not able to open files with this protocol when it is in the protected mode. It is recommended to leave this protocol in the protected mode to increase the security of Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off shell protocol protected mode' + Note: This Group Policy path is provided by the Group Policy template WindowsExplorer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\PreXPSP2ShellProtocolBehavior' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off location' is set to 'Enabled + # platforms: win10 + platform: windows + description: | + This policy setting turns off the location feature for the computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Location and Sensors\Turn off location' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Sensors.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\LocationAndSensors\DisableLocation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Block all consumer Microsoft account user authentication' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting determines whether applications and services on the device can utilize new consumer Microsoft account authentication via the Windows OnlineID and WebAccountManager APIs. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft accounts\Block all consumer Microsoft account user authentication' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template MSAPolicy.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\MicrosoftAccount\\DisableUserAuth' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Configure local setting override for reporting to Microsoft MAPS' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures a local override for the configuration to join Microsoft Active Protection Service, which Microsoft renamed to Windows Defender Antivirus Cloud Protection Service and then Microsoft Defender Antivirus Cloud Protection Service. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\MAPS\Configure local setting override for reporting to Microsoft MAPS' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet\\LocalSettingOverrideSpynetReporting' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Join Microsoft MAPS' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to join Microsoft Active Protection Service (MAPS), which Microsoft renamed to Windows Defender Antivirus Cloud Protection Service and then Microsoft Defender Antivirus Cloud Protection Service. + Microsoft MAPS / Microsoft Defender Antivirus Cloud Protection Service is the online community that helps you choose how to respond to potential threats. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\MAPS\Join Microsoft MAPS' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + -- The registry key is not present when policy is disabled, so query below is returning 1 when policy is disabled and registry value does not exist. It also return 1 in case policy is enabled and its registry value is 1 or 2 + SELECT 1 WHERE ( + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet' COLLATE NOCASE AND name = 'SpynetReporting' ) + ) OR ( + NOT EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet\\SpynetReporting' COLLATE NOCASE AND data != 0 ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Attack Surface Reduction Rules' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the state for the Attack Surface Reduction (ASR) rules. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Microsoft Defender Exploit Guard\Attack Surface Reduction\Configure Attack Surface Reduction rules' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\ExploitGuard_ASR_Rules' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Attack Surface Reduction rules: Set the state for each ASR rule' is configured + # platforms: win10 + platform: windows + description: | + This policy setting sets the Attack Surface Reduction rules. + resolution: | + To establish the recommended configuration via GP, set the following UI path so that + 26190899-1602-49e8-8b27-eb1d0a1ce869, + 3b576869-a4ec-4529-8536-b80a7769e899, + 5beb7efe-fd9a-4556-801d-275e5ffc04cc, + 75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84, + 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c, + 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b, + 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2, + b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4, + be9ba2d9-53ea-4cdc-84e5-9b1eeee46550, + d3e037e1-3eb8-44c8-a917-57927947596d, + d4f940ab-401b-4efc-aadc-ad5f3c50688a, and + e6db77e5-3df2-4cf1-b95a-636979351e5b are each set to a value of 1: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Microsoft Defender Exploit Guard\Attack Surface Reduction\Configure Attack Surface Reduction rules: Set the state for each ASR rule' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 + WHERE EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\ExploitGuard_ASR_Rules' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\26190899-1602-49e8-8b27-eb1d0a1ce869' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\3b576869-a4ec-4529-8536-b80a7769e899' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\5beb7efe-fd9a-4556-801d-275e5ffc04cc' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\be9ba2d9-53ea-4cdc-84e5-9b1eeee46550' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\d3e037e1-3eb8-44c8-a917-57927947596d' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\d4f940ab-401b-4efc-aadc-ad5f3c50688a' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\e6db77e5-3df2-4cf1-b95a-636979351e5b' AND data = 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent users and apps from accessing dangerous websites' is set to 'Enabled: Block' + # platforms: win10 + platform: windows + description: | + This policy setting controls Microsoft Defender Exploit Guard network protection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Block' + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender Antivirus\Windows Defender Exploit Guard\Network Protection\Prevent users and apps from accessing dangerous websites' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\Network Protection\\EnableNetworkProtection' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Message Service Cloud Sync' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows backup and restore of cellular text messages to Microsoft's cloud services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Messaging\Allow Message Service Cloud Sync' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Messaging.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Messaging\AllowMessageSync' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable file hash computation feature' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting determines whether hash values are computed for files scanned by Microsoft Defender. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\MpEngine\Enable file hash computation feature' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\MpEngine\\EnableFileHashComputation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Scan all downloaded files and attachments' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures scanning for all downloaded files and attachments. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Scan all downloaded files and attachments' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableIOAVProtection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn off real-time protection' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting configures real-time protection prompts for known malware detection. + Microsoft Defender Antivirus alerts you when malware or potentially unwanted software attempts to install itself or to run on your computer. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Turn off real- time protection' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableRealtimeMonitoring' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn on behavior monitoring' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure behavior monitoring for Microsoft Defender Antivirus. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Turn on behavior monitoring' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableBehaviorMonitoring' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn on script scanning' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows script scanning to be turned on/off. Script scanning intercepts scripts then scans them before they are executed on the system. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Turn on script scanning' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableScriptScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Watson events' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure whether or not Watson events are sent. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Reporting\Configure Watson events' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Reporting\\DisableGenericRePorts' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Scan packed executables' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting manages whether or not Microsoft Defender Antivirus scans packed + executables. Packed executables are executable files that contain compressed code. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Scan packed executables' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 8.1 and Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Scan\DisablePackedExeScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Scan removable drives' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether or not to scan for malicious software and unwanted software in the contents of removable drives, such as USB flash drives, when running a full scan. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Scan removable drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Scan\\DisableRemovableDriveScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn on e-mail scanning' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure e-mail scanning. When e-mail scanning is enabled, the engine will parse the mailbox and mail files, according to their specific format, in order to analyze the mail bodies and attachments. Several e-mail formats are currently supported, for example: pst (Outlook), dbx, mbx, mime (Outlook Express), binhex (Mac). + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Turn on e-mail scanning' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Scan\\DisableEmailScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Configure detection for potentially unwanted applications' is set to 'Enabled: Block' + # platforms: win10 + platform: windows + description: | + This policy setting controls detection and action for Potentially Unwanted Applications (PUA), which are sneaky unwanted application bundlers or their bundled applications, that can deliver adware or malware. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Block': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Configure detection for potentially unwanted applications' + Note: This Group Policy path is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1809 & Server 2019 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\PUAProtection' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Microsoft Defender AntiVirus' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting turns off Microsoft Defender Antivirus. If the setting is configured to Disabled, Microsoft Defender Antivirus runs and computers are scanned for malware and other potentially unwanted software. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Turn off Microsoft Defender AntiVirus' + Note: This Group Policy path is provided by the Group Policy template WindowsDefender.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\DisableAntiSpyware' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow auditing events in Microsoft Defender Application Guard' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to decide whether auditing events can be collected from Microsoft Defender Application Guard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow auditing events in Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AuditApplicationGuard' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow camera and microphone access in Microsoft Defender Application Guard' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + The policy allows you to determine whether applications inside Microsoft Defender Application Guard can access the device’s camera and microphone. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow camera and microphone access in Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1809 & Server 2019 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AllowCameraMicrophoneRedirection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow data persistence for Microsoft Defender Application Guard' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to decide whether data should persist across different sessions in Microsoft Defender Application Guard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow data persistence for Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AllowPersistence' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow files to download and save to the host operating system from Microsoft Defender Application Guard' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether to save downloaded files to the host operating system from the Microsoft Defender Application Guard container. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow files to download and save to the host operating system from Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1803 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\SaveFilesToHost' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Microsoft Defender Application Guard clipboard settings: Clipboard behavior setting' is set to 'Enabled: Enable clipboard operation from an isolated session to the host' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to decide how the clipboard behaves while in Microsoft Defender Application Guard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Enable clipboard operation from an isolated session to the host': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Configure Microsoft Defender Application Guard clipboard settings: Clipboard behavior setting' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AppHVSIClipboardSettings' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on Microsoft Defender Application Guard in Managed Mode' is set to 'Enabled: 1' + # platforms: win10 + platform: windows + description: | + This policy setting enables application isolation through Microsoft Defender Application Guard (Application Guard). + There are 4 options available: + - 0. Disable Microsoft Defender Application Guard + - 1. Enable Microsoft Defender Application Guard for Microsoft Edge ONLY + - 2. Enable Microsoft Defender Application Guard for Microsoft Office ONLY + - 3. Enable Microsoft Defender Application Guard for Microsoft Edge AND Microsoft Office + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 1': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Turn on Microsoft Defender Application Guard in Managed Mode' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AllowAppHVSI_ProviderSet' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable news and interests on the taskbar' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the news and interests feature is allowed on the device. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\News and interests\Enable news and interests on the taskbar' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Messaging.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Feeds\\EnableFeeds' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Prevent the usage of OneDrive for file storage' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting lets you prevent apps and features from working with files on OneDrive using the Next Generation Sync Client. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\OneDrive\Prevent the usage of OneDrive for file storage' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template SkyDrive.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). However, we strongly recommend you only use the version included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). Older versions of the templates had conflicting settings in different template files for both OneDrive & SkyDrive, until it was cleaned up properly in the above version. + Note #2: In older Microsoft Windows Administrative Templates, this setting was named Prevent the usage of SkyDrive for file storage, but it was renamed starting with the Windows 10 RTM (Release 1507) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\OneDrive\\DisableFileSyncNGSC' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn off Push To Install service' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether users can push Apps to the device from the Microsoft Store App running on other devices or the web. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Push to Install\Turn off Push To Install service' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PushToInstall.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\PushToInstall\\DisablePushToInstall' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Allow UI Automation redirection' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether User Interface (UI) Automation client applications running on the local computer can access UI elements on the server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\\Administrative Templates\\Windows Components\\Remote Desktop Services\\Remote Desktop Session Host\\Device and Resource Redirection\\Allow UI Automation redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\EnableUiaRedirection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Do not allow location redirection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the redirection of location data to the remote computer in a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow location redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableLocationRedir' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent downloading of enclosures' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting prevents the user from having enclosures (file attachments) downloaded from an RSS feed to the user's computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\RSS Feeds\Prevent downloading of enclosures' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Feeds\\DisableEnclosureDownload' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Cloud Search' is set to 'Enabled: Disable Cloud Search' + # platforms: win10 + platform: windows + description: | + This policy setting allows search and Cortana to search cloud sources like OneDrive and SharePoint. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', then 'Disable Cloud Search': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow Cloud Search' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowCloudSearch' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Cortana' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Cortana is allowed on the device. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow Cortana' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowCortana' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Cortana above lock screen' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether or not the user can interact with Cortana using speech while the system is locked. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowCortanaAboveLock' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow indexing of encrypted files' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether encrypted items are allowed to be indexed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow indexing of encrypted files' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowIndexingEncryptedStoresOrItems' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow search and Cortana to use location' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether search and Cortana can provide location aware search and Cortana results. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow search and Cortana to use location' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowSearchToUseLocation' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow passwords to be saved' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting helps prevent Remote Desktop clients from saving passwords on a computer. + The recommended state for this setting is: Enabled. + Note: If this policy setting was previously configured as Disabled or Not configured, any previously saved passwords will be deleted the first time a Remote Desktop client disconnects from any server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Connection Client\Do not allow passwords to be saved' + Note: This Group Policy path is provided by the Group Policy template TerminalServer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\DisablePasswordSaving' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Allow users to connect remotely by using Remote Desktop Services' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to configure remote access to computers by using Remote Desktop Services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections\Allow users to connect remotely by using Remote Desktop Services' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDenyTSConnections' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow COM port redirection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether to prevent the redirection of data to client COM ports from the remote computer in a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow COM port redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableCcm' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow drive redirection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting prevents users from sharing the local drives on their client computers to Remote Desktop Servers that they access. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow drive redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableCdm' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow LPT port redirection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether to prevent the redirection of data to client LPT ports during a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow LPT port redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableLPT' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow supported Plug and Play device redirection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to control the redirection of supported Plug and Play devices, such as Windows Portable Devices, to the remote computer in a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow supported Plug and Play device redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisablePNPRedir' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Always prompt for password upon connection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Remote Desktop Services always prompts the client computer for a password upon connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Always prompt for password upon connection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fPromptForPassword' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Require secure RPC communication' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify whether Remote Desktop Services requires secure Remote Procedure Call (RPC) communication with all clients or allows unsecured communication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Require secure RPC communication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fEncryptRPCTraffic' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Require use of specific security layer for remote (RDP) connections' is set to 'Enabled: SSL' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether to require the use of a specific security layer to secure communications between clients and RD Session Host servers during Remote Desktop Protocol (RDP) connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: SSL': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Require use of specific security layer for remote (RDP) connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\SecurityLayer' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Require user authentication for remote connections by using Network Level Authentication' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify whether to require user authentication for remote connections to the RD Session Host server by using Network Level Authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Require user authentication for remote connections by using Network Level Authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\UserAuthentication' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Set client connection encryption level' is set to 'Enabled: High Level' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether to require the use of a specific encryption level to secure communications between client computers and RD Session Host servers during Remote Desktop Protocol (RDP) connections. + This policy only applies when you are using native RDP encryption. + However, native RDP encryption (as opposed to SSL encryption) is not recommended. + This policy does not apply to SSL encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', then 'High Level': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Set client connection encryption level' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\MinEncryptionLevel' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Set time limit for active but idle Remote Desktop Services sessions' is set to 'Enabled: 15 minutes or less, but not Never (0)' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to specify the maximum amount of time that an active Remote Desktop Services session can be idle (without user input) before it is automatically disconnected. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', then '15 minutes': + `Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits\Set time limit for active but idle Remote Desktop Services sessions` + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\MaxIdleTime' AND CAST(data AS INTEGER) <= 900000 AND CAST(data AS + INTEGER) != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Set time limit for disconnected sessions' is set to 'Enabled: 1 minute' + # platforms: win10 + platform: windows + description: | + This setting helps to prevent active Remote Desktop sessions from tying up the computer for long periods of time while not in use, preventing computing resources from being consumed by large numbers of disconnected but still active sessions. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled' and then '1 minute': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits\Set time limit for disconnected sessions' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\MaxDisconnectionTime' AND data = 60000); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not delete temp folders upon exit' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether Remote Desktop Services retains a user's per-session temporary folders at logoff. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Temporary Folders\Do not delete temp folders upon exit' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\DeleteTempDirsOnExit' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Turn off KMS Client Online AVS Validation' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + The Key Management Service (KMS) is a Microsoft license activation method that entails setting up a local server to store the software licenses. The KMS server itself needs to connect to Microsoft to activate the KMS service, but subsequent on-network clients can activate Microsoft Windows OS and/or their Microsoft Office via the KMS server instead of connecting directly to Microsoft. This policy setting lets you opt-out of sending KMS client activation data to Microsoft automatically. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Software Protection Platform\Turn off KMS Client Online AVS Validation' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AVSValidationGP.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\CurrentVersion\\Software Protection Platform\NoGenTicket' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disable all apps from Microsoft Store' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting configures the launch of all apps from the Microsoft Store that came pre-installed or were downloaded. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Disable all apps from Microsoft Store' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\DisableStoreApps' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Only display the private store within the Microsoft Store' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting denies access to the retail catalog in the Microsoft Store, but displays the private store. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Only display the private store within the Microsoft Store' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\RequirePrivateStoreOnly' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Automatic Download and Install of updates' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting enables or disables the automatic download and installation of Microsoft Store app updates. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Turn off Automatic Download and Install of updates' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinStoreUI.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates, or by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\AutoDownload' AND data = 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the offer to update to the latest version of Windows' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + Enables or disables the Microsoft Store offer to update to the latest version of Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Turn off the offer to update to the latest version of Windows' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinStoreUI.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates, or by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\DisableOSUpgrade' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the Store application' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting denies or allows access to the Store application. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Turn off the Store application' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinStoreUI.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates, or by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\RemoveWindowsStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow widgets' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether the widgets feature is allowed on the device. The widgets feature provides information such as, weather, news, sports, stocks, traffic, and entertainment (not an inclusive list). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Widgets\Allow Widgets' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template NewsAndInterests.admx/adml that is actually NOT included with the Microsoft Windows 10 Release 21H2 Administrative Templates (more info on missing settings on Windows 10 21H2: https://4sysops.com/archives/group-policies-for-windows-11-and-10-21h2-compared/) but is included in Windows 11 2022 Update (22H2). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Dsh\AllowNewsAndInterests' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Windows Defender SmartScreen' is set to 'Enabled: Warn and prevent bypass' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage the behavior of Windows Defender SmartScreen. Windows Defender SmartScreen helps keep PCs safer by warning users before running unrecognized programs downloaded from the Internet. Some information is sent to Microsoft about files and programs run on PCs with this feature enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Warn and prevent bypass': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Explorer\Configure Windows Defender SmartScreen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsExplorer.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\EnableSmartScreen' AND data = 1) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\ShellSmartScreenLevel' AND data = 'Block') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enables or disables Windows Game Recording and Broadcasting' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting enables or disables the Windows Game Recording and Broadcasting features. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Game Recording and Broadcasting\Enables or disables Windows Game Recording and Broadcasting' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GameDVR.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\GameDVR\AllowGameDVR' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow suggested apps in Windows Ink Workspace' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether suggested apps in Windows Ink Workspace are allowed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Ink Workspace\Allow suggested apps in Windows Ink Workspace' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsInkWorkspace.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsInkWorkspace\AllowSuggestedAppsInWindowsInkWorkspace' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow user control over installs' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting controls whether users are permitted to change installation options that typically are available only to system administrators. The security features of Windows Installer normally prevent users from changing installation options that are typically reserved for system administrators, such as specifying the directory to which files are installed. If Windows Installer detects that an installation package has permitted the user to change a protected option, it stops the installation and displays a message. These security features operate only when the installation program is running in a privileged security context in which it has access to directories denied to the user. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Allow user control over installs' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was named Enable user control over installs, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\EnableUserControl' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Always install with elevated privileges' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This setting controls whether or not Windows Installer should use system permissions when it installs any program on the system. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Always install with elevated privileges' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\AlwaysInstallElevated' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent Internet Explorer security prompt for Windows Installer scripts' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether Web-based programs are allowed to install software on the computer without notifying the user. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Prevent Internet Explorer security prompt for Windows Installer scripts' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Disable IE security prompt for Windows Installer scripts, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\SafeForScripting' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Sign-in and lock last interactive user automatically after a restart' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether a device will automatically sign-in the last interactive user after Windows Update restarts the system. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Logon Options\Sign-in and lock last interactive user automatically after a restart' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinLogon.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Sign-in last interactive user automatically after a system-initiated restart, but it was renamed starting with the Windows 10 Release 1903 Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\System\DisableAutomaticRestartSignOn' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on PowerShell Script Block Logging' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting enables logging of all PowerShell script input to the Applications and Services Logs\Microsoft\Windows\PowerShell\Operational Event Log channel. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on PowerShell Script Block Logging' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PowerShellExecutionPolicy.admx that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ScriptBlockLogging\\EnableScriptBlockLogging' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Basic authentication' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) client uses Basic authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Client\Allow Basic authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Client\\AllowBasic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow unencrypted traffic' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) client sends and receives unencrypted messages over the network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Client\Allow unencrypted traffic' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Client\\AllowUnencryptedTraffic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Disallow Digest authentication' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) client will not use Digest authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Client\Disallow Digest authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Client\\AllowDigest' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Basic authentication' in WinRM service is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service accepts Basic authentication from a remote client. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Allow Basic authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\AllowBasic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow remote server management through WinRM' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service + automatically listens on the network for requests on the HTTP transport over the default HTTP + port. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Allow remote server management through WinRM' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\AllowAutoConfig' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow unencrypted traffic' in WinRM service is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service sends and receives unencrypted messages over the network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Allow unencrypted traffic' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\AllowUnencryptedTraffic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Disallow WinRM from storing RunAs credentials' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service will allow RunAs credentials to be stored for any plug-ins. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Disallow WinRM from storing RunAs credentials' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsRemoteManagement.admx that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\DisableRunAs' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Remote Shell Access' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage configuration of remote access to all supported shells to execute scripts and commands. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Shell\Allow Remote Shell Access' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\WinRS\\AllowRemoteShellAccess' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow clipboard sharing with Windows Sandbox' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting enables or disables clipboard sharing with the Windows sandbox. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Sandbox\Allow clipboard sharing with Windows Sandbox' + Note: This Group Policy section is provided by the Group Policy template WindowsSandbox.admx/adml that is included with the Microsoft Windows 11 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Sandbox\\AllowClipboardRedirection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow networking in Windows Sandbox' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting enables or disables networking in the Windows Sandbox. Networking is achieved by creating a virtual switch on the host, and connecting the Windows Sandbox to it via a virtual Network Interface Card (NIC). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Sandbox\Allow networking in Windows Sandbox' + Note: This Group Policy section is provided by the Group Policy template WindowsSandbox.admx/adml that is included with the Microsoft Windows 11 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Sandbox\\AllowNetworking' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent users from modifying settings' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting prevent users from making changes to the Exploit protection settings area in the Windows Security settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\\Windows Security\App and browser protection\Prevent users from modifying settings' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefenderSecurityCenter.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender Security Center\\App and Browser protection\\DisallowExploitProtectionOverride' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'No auto-restart with logged on users for scheduled automatic updates installations' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies that Automatic Updates will wait for computers to be restarted by the users who are logged on to them to complete a scheduled installation. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Legacy Policies\No auto-restart with logged on users for scheduled automatic updates installations' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\NoAutoRebootWithLoggedOnUsers' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Automatic Updates' is set to 'Enabled: 3' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether computers in your environment will receive security updates from Windows Update or WSUS. If you configure this policy setting to Enabled, the operating system will recognize when a network connection is available and then use the network connection to search Windows Update or your designated intranet site for updates that apply to them. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Configure Automatic Updates' + query: | + SELECT EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\NoAutoUpdate' AND data = 0) + ) AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\AUOptions' AND data = 3) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Automatic Updates: Scheduled install day' is set to '0 - Every day' + # platforms: win10 + platform: windows + description: | + This policy setting specifies when computers in your environment will receive security updates from Windows Update or WSUS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to '0 - Every day': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Configure Automatic Updates: Scheduled install day' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\NoAutoUpdate' AND data = 0) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\ScheduledInstallDay' AND data = 0) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Remove access to "Pause updates" feature' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy removes access to "Pause updates" feature. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Remove access to "Pause updates" feature' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\SetDisablePauseUXAccess' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Manage preview builds' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting manage which updates that are receive prior to the update being released. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage updates offered from Windows Update\Manage preview builds' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\ManagePreviewBuildsPolicyValue' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Select when Preview Builds and Feature Updates are received' is set to 'Enabled: 180 or more days' + # platforms: win10 + platform: windows + description: | + This policy setting determines when Preview Build or Feature Updates are received. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 180 or more days': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage updates offered from Windows Update\Windows Update for Business\Select when Preview Builds and Feature Updates are received' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferFeatureUpdates' AND CAST(data AS INTEGER) = 1) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferFeatureUpdatesPeriodInDays' AND CAST(data AS INTEGER) >= 180) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Select when Quality Updates are received' is set to 'Enabled: 0 days' + # platforms: win10 + platform: windows + description: | + This settings controls when Quality Updates are received. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 0 days': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Windows Update for Business\Select when Quality Updates are received' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferQualityUpdates' AND data = 1) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferQualityUpdatesPeriodInDays' AND data = 0) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Enable App Installer' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether user have access to the Windows Package Manager. Windows Package Manager is a package manager solution that consists of a command line tool and set of services for installing applications on Microsoft Windows 10 and 11. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableAppInstaller' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable App Installer Experimental Features' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether users can enable experimental features in the Windows Package Manager. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer Experimental Features' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableExperimentalFeatures' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable App Installer Hash Override' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether or not users can override the SHA256 security validation in the Windows Package Manager settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer Hash Override' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableHashOverride' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable App Installer ms-appinstaller protocol' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls whether users can install packages from a website that is using the ms-appinstaller protocol. The ms-appinstaller protocol allows users to install an application by clicking a link on a website. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer ms-appinstaller protocol' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableMSAppInstallerProtocol' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Disable Internet Explorer 11 as a standalone browser' is set to 'Enabled: Always' + # platforms: win10 + platform: windows + description: | + This policy setting restricts the launching of Internet Explorer as a standalone browser. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Always': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Internet Explorer\Disable Internet Explorer 11 as a standalone browser' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template InetRes.admx/adml that is included with the Microsoft Windows 10 Release 21H1 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Main\\NotifyDisableIEOptions' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: defensivedepth + +- name: > + CIS - Ensure 'Do not allow WebAuthn redirection' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls the redirection of web authentication (WebAuthn) requests from a Remote Desktop session to the local device. This redirection enables users to authenticate to resources inside the Remote Desktop session using their local authenticator (e.g. Windows Hello for Business, security key, or other). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow WebAuthn redirection + Note: This Group Policy path is provided by the Group Policy template TerminalServer.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableWebAuthn' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Allow search highlights' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting controls search highlights in the start menu search box and in search home. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow search highlights + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Search.admx/adml that is included with the Microsoft Windows 10 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\EnableDynamicContentInWSB' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Allow Windows Ink Workspace' is set to 'Enabled: On, but disallow access above lock' OR 'Enabled: Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether Windows Ink items are allowed above the lock screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: On, but disallow access above lock' OR 'Enabled: Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Ink Workspace\Allow Windows Ink Workspace' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsInkWorkspace.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsInkWorkspace\AllowWindowsInkWorkspace' AND (data = 0 OR data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on PowerShell Transcription' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This Policy setting lets you capture the input and output of Windows PowerShell commands into text-based transcripts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on PowerShell Transcription' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PowerShellExecutionPolicy.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\Transcription\\EnableTranscripting' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off toast notifications on the lock screen' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting turns off toast notifications on the lock screen. + The recommended state for this setting is Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Start Menu and Taskbar\Notifications\Turn off toast notifications on the lock screen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WPN.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications\NoToastApplicationNotificationOnLockScreen' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn off Help Experience Improvement Program' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting specifies whether users can participate in the Help Experience Improvement program. The Help Experience Improvement program collects information about how customers use Windows Help so that Microsoft can improve it. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication Settings\Turn off Help Experience Improvement Program' + Note: This Group Policy path is provided by the Group Policy template HelpAndSupport.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Assistance\Client\1.0\NoImplicitFeedback' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Do not preserve zone information in file attachments' is set to 'Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting allows you to manage whether Windows marks file attachments with information about their zone of origin (such as restricted, Internet, intranet, local). This requires NTFS in order to function correctly, and will fail without notice on FAT32. By not preserving the zone information, Windows cannot make proper risk assessments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Attachment Manager\Do not preserve zone information in file attachments' + Note: This Group Policy path is provided by the Group Policy template AttachmentManager.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments\SaveZoneInformation' and data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Notify antivirus programs when opening attachments' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting manages the behavior for notifying registered antivirus programs. If multiple programs are registered, they will all be notified. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Attachment Manager\Notify antivirus programs when opening attachments' + Note: This Group Policy path is provided by the Group Policy template AttachmentManager.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments\ScanWithAntiVirus' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Windows spotlight on lock screen' is set to Disabled' + # platforms: win10 + platform: windows + description: | + This policy setting lets you configure Windows Spotlight on the lock screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Configure Windows spotlight on lock screen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\ConfigureWindowsSpotlight' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not suggest third-party content in Windows spotlight' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether Windows will suggest apps and content from third-party software publishers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Do not suggest third-party content in Windows spotlight' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\DisableThirdPartySuggestions' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not use diagnostic data for tailored experiences' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting determines if Windows can use diagnostic data to provide tailored experiences to the user. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Do not use diagnostic data for tailored experiences' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\DisableTailoredExperiencesWithDiagnosticData' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off all Windows spotlight features' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether the all Windows Spotlight features are turned on/off (together). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off all Windows spotlight features' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\DisableWindowsSpotlightFeatures' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Spotlight collection on Desktop' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting removes the Spotlight collection setting in Personalization, rendering the user unable to select and subsequently download daily images from Microsoft to the system desktop. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off Spotlight collection on Desktop' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Windows\CloudContent\DisableSpotlightCollectionOnDesktop' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent users from sharing files within their profile.' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This policy setting determines whether users can share files within their profile. By default, users are allowed to share files within their profile to other users on their network after an administrator opts in the computer. An administrator can opt in the computer by using the sharing wizard to share a file within their profile. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Network Sharing\Prevent users from sharing files within their profile' + Note: This Group Policy path is provided by the Group Policy template Sharing.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoInplaceSharing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Always install with elevated privileges' is set to 'Disabled' (User Configuration) + # platforms: win10 + platform: windows + description: | + This setting controls whether or not Windows Installer should use system permissions when it installs any program on the system. + Note: This setting appears both in the Computer Configuration and User Configuration folders. To make this setting effective, you must enable the setting in both folders. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Always install with elevated privileges' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\Software\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent Codec Download' is set to 'Enabled' + # platforms: win10 + platform: windows + description: | + This setting controls whether Windows Media Player is allowed to download additional codecs for decoding media files it does not already understand. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Windows Media Player\Playback\Prevent Codec Download' + Note: This Group Policy path is provided by the Group Policy template WindowsMediaPlayer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\Software\Policies\Microsoft\WindowsMediaPlayer\PreventCodecDownload' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia diff --git a/docs/solutions/cis/win-10/scripts/account-and-password-policies.ps1 b/docs/solutions/cis/win-10/scripts/account-and-password-policies.ps1 new file mode 100644 index 0000000000..c44c6e55d0 --- /dev/null +++ b/docs/solutions/cis/win-10/scripts/account-and-password-policies.ps1 @@ -0,0 +1,136 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 10 Enterprise Benchmark v3.0.0 - Account and Password Policy Remediation + +.DESCRIPTION + Configures account lockout and password policies to meet CIS Windows 10 Enterprise Benchmark v3.0.0 + requirements using secedit. This script is idempotent - safe to run multiple times. + +.NOTES + CIS Benchmark Controls Covered: + - 1.1.1 Enforce password history: 24 or more passwords + - 1.1.2 Maximum password age: 365 days or fewer (not 0) + - 1.1.3 Minimum password age: 1 or more days + - 1.1.4 Minimum password length: 14 or more characters + - 1.1.5 Password must meet complexity requirements: Enabled + - 1.1.6 Store passwords using reversible encryption: Disabled + - 1.2.1 Account lockout duration: 15 or more minutes + - 1.2.2 Account lockout threshold: 5 or fewer invalid attempts (not 0) + - 1.2.3 Reset account lockout counter after: 15 or more minutes + + Requires: Administrator privileges + Run as: SYSTEM or local Administrator +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS account and password policy remediation" + +# Export current security policy to a temp file +$cfgFile = Join-Path $env:TEMP "secpol_cis.cfg" +$sdbFile = Join-Path $env:TEMP "secedit_cis.sdb" +$logFile = Join-Path $env:TEMP "secedit_cis.log" + +try { + Write-Status "Exporting current security policy..." + $exportResult = secedit /export /cfg $cfgFile /quiet + if ($LASTEXITCODE -ne 0) { + throw "secedit /export failed with exit code $LASTEXITCODE" + } + + # Read the exported policy + $content = Get-Content $cfgFile -Raw + + # --- Password Policy Settings --- + + # CIS 1.1.1: Enforce password history = 24 (or more) + $content = $content -replace 'PasswordHistorySize\s*=\s*\d+', 'PasswordHistorySize = 24' + if ($content -notmatch 'PasswordHistorySize') { + $content = $content -replace '(\[System Access\])', "`$1`r`nPasswordHistorySize = 24" + } + + # CIS 1.1.2: Maximum password age = 365 days (must not be 0; org may use shorter) + $content = $content -replace 'MaximumPasswordAge\s*=\s*\d+', 'MaximumPasswordAge = 365' + if ($content -notmatch 'MaximumPasswordAge') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMaximumPasswordAge = 365" + } + + # CIS 1.1.3: Minimum password age = 1 day + $content = $content -replace 'MinimumPasswordAge\s*=\s*\d+', 'MinimumPasswordAge = 1' + if ($content -notmatch 'MinimumPasswordAge') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMinimumPasswordAge = 1" + } + + # CIS 1.1.4: Minimum password length = 14 characters + $content = $content -replace 'MinimumPasswordLength\s*=\s*\d+', 'MinimumPasswordLength = 14' + if ($content -notmatch 'MinimumPasswordLength') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMinimumPasswordLength = 14" + } + + # CIS 1.1.5: Password complexity = Enabled (1) + $content = $content -replace 'PasswordComplexity\s*=\s*\d+', 'PasswordComplexity = 1' + if ($content -notmatch 'PasswordComplexity') { + $content = $content -replace '(\[System Access\])', "`$1`r`nPasswordComplexity = 1" + } + + # CIS 1.1.6: Store password using reversible encryption = Disabled (0) + $content = $content -replace 'ClearTextPassword\s*=\s*\d+', 'ClearTextPassword = 0' + if ($content -notmatch 'ClearTextPassword') { + $content = $content -replace '(\[System Access\])', "`$1`r`nClearTextPassword = 0" + } + + # --- Account Lockout Settings --- + + # CIS 1.2.1: Account lockout duration = 15 minutes (0 = until admin unlocks; use 15+) + $content = $content -replace 'LockoutDuration\s*=\s*-?\d+', 'LockoutDuration = 15' + if ($content -notmatch 'LockoutDuration') { + $content = $content -replace '(\[System Access\])', "`$1`r`nLockoutDuration = 15" + } + + # CIS 1.2.2: Account lockout threshold = 5 (invalid logon attempts) + $content = $content -replace 'LockoutBadCount\s*=\s*\d+', 'LockoutBadCount = 5' + if ($content -notmatch 'LockoutBadCount') { + $content = $content -replace '(\[System Access\])', "`$1`r`nLockoutBadCount = 5" + } + + # CIS 1.2.3: Reset lockout counter after = 15 minutes + $content = $content -replace 'ResetLockoutCount\s*=\s*\d+', 'ResetLockoutCount = 15' + if ($content -notmatch 'ResetLockoutCount') { + $content = $content -replace '(\[System Access\])', "`$1`r`nResetLockoutCount = 15" + } + + # Write the modified policy back to disk + Write-Status "Writing updated policy configuration..." + Set-Content -Path $cfgFile -Value $content -Encoding Unicode + + # Apply the updated policy using secedit + Write-Status "Applying updated security policy..." + $applyResult = secedit /configure /db $sdbFile /cfg $cfgFile /areas SECURITYPOLICY /log $logFile /quiet + if ($LASTEXITCODE -ne 0) { + Write-Status "secedit /configure completed with exit code $LASTEXITCODE. Check $logFile for details." 'WARN' + } else { + Write-Status "Security policy applied successfully." + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} finally { + # Clean up temp files + @($cfgFile, $sdbFile, $logFile) | ForEach-Object { + if (Test-Path $_) { Remove-Item $_ -Force -ErrorAction SilentlyContinue } + } +} + +Write-Status "Account and password policy remediation complete." diff --git a/docs/solutions/cis/win-10/scripts/audit-policy.ps1 b/docs/solutions/cis/win-10/scripts/audit-policy.ps1 new file mode 100644 index 0000000000..9397362bd9 --- /dev/null +++ b/docs/solutions/cis/win-10/scripts/audit-policy.ps1 @@ -0,0 +1,145 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 10 Enterprise Benchmark v3.0.0 - Audit Policy Remediation + +.DESCRIPTION + Configures Advanced Audit Policy settings to meet CIS Windows 10 Enterprise Benchmark v3.0.0 + requirements using auditpol.exe. This script is idempotent - safe to run + multiple times. + +.NOTES + CIS Benchmark Controls Covered: + - 17.1.1 Account Logon: Audit Credential Validation -> Success and Failure + - 17.2.1 Account Mgmt: Audit Application Group Management -> Success and Failure + - 17.2.4 Account Mgmt: Audit Security Group Management -> Success + - 17.2.6 Account Mgmt: Audit User Account Management -> Success and Failure + - 17.3.1 Detailed Tracking: Audit PNP Activity -> Success + - 17.3.2 Detailed Tracking: Audit Process Creation -> Success + - 17.5.1 Logon/Logoff: Audit Account Lockout -> Failure + - 17.5.2 Logon/Logoff: Audit Group Membership -> Success + - 17.5.3 Logon/Logoff: Audit Logoff -> Success + - 17.5.4 Logon/Logoff: Audit Logon -> Success and Failure + - 17.5.5 Logon/Logoff: Audit Other Logon/Logoff Events -> Success and Failure + - 17.5.6 Logon/Logoff: Audit Special Logon -> Success + - 17.6.1 Object Access: Audit Detailed File Share -> Failure + - 17.6.2 Object Access: Audit File Share -> Success and Failure + - 17.6.3 Object Access: Audit Other Object Access Events -> Success and Failure + - 17.6.4 Object Access: Audit Removable Storage -> Success and Failure + - 17.7.1 Policy Change: Audit Audit Policy Change -> Success + - 17.7.2 Policy Change: Audit Authentication Policy Change -> Success + - 17.7.3 Policy Change: Audit Authorization Policy Change -> Success + - 17.7.4 Policy Change: Audit MPSSVC Rule-Level Policy Change -> Success and Failure + - 17.7.5 Policy Change: Audit Other Policy Change Events -> Failure + - 17.8.1 Privilege Use: Audit Sensitive Privilege Use -> Success and Failure + - 17.9.1 System: Audit IPsec Driver -> Success and Failure + - 17.9.2 System: Audit Other System Events -> Success and Failure + - 17.9.3 System: Audit Security State Change -> Success + - 17.9.4 System: Audit Security System Extension -> Success + - 17.9.5 System: Audit System Integrity -> Success and Failure + + Requires: Administrator privileges + Note: Uses auditpol.exe which is available on all supported Windows versions. +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +function Set-AuditPolicy { + param( + [string]$Subcategory, + [bool]$Success, + [bool]$Failure + ) + + $successArg = if ($Success) { '/success:enable' } else { '/success:disable' } + $failureArg = if ($Failure) { '/failure:enable' } else { '/failure:disable' } + + $result = auditpol /set /subcategory:"$Subcategory" $successArg $failureArg 2>&1 + if ($LASTEXITCODE -ne 0) { + Write-Status "Failed to set '$Subcategory': $result" 'WARN' + return $false + } + $label = @() + if ($Success) { $label += 'Success' } + if ($Failure) { $label += 'Failure' } + Write-Status " Set '$Subcategory' = $($label -join ' and ')" + return $true +} + +Write-Status "Starting CIS audit policy remediation" + +# Verify auditpol is available +if (-not (Get-Command auditpol -ErrorAction SilentlyContinue)) { + Write-Status "auditpol.exe not found. Cannot configure audit policies." 'ERROR' + exit 1 +} + +$errors = 0 + +# Account Logon +Write-Status "Configuring Account Logon audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Credential Validation' -Success $true -Failure $true)) { $errors++ } + +# Account Management +Write-Status "Configuring Account Management audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Application Group Management' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Security Group Management' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'User Account Management' -Success $true -Failure $true)) { $errors++ } + +# Detailed Tracking +Write-Status "Configuring Detailed Tracking audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Plug and Play Events' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Process Creation' -Success $true -Failure $false)) { $errors++ } + +# Logon/Logoff +Write-Status "Configuring Logon/Logoff audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Account Lockout' -Success $false -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Group Membership' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Logoff' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Logon' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other Logon/Logoff Events' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Special Logon' -Success $true -Failure $false)) { $errors++ } + +# Object Access +Write-Status "Configuring Object Access audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Detailed File Share' -Success $false -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'File Share' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other Object Access Events' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Removable Storage' -Success $true -Failure $true)) { $errors++ } + +# Policy Change +Write-Status "Configuring Policy Change audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Audit Policy Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Authentication Policy Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Authorization Policy Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'MPSSVC Rule-Level Policy Change' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other Policy Change Events' -Success $false -Failure $true)) { $errors++ } + +# Privilege Use +Write-Status "Configuring Privilege Use audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Sensitive Privilege Use' -Success $true -Failure $true)) { $errors++ } + +# System +Write-Status "Configuring System audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'IPsec Driver' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other System Events' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Security State Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Security System Extension' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'System Integrity' -Success $true -Failure $true)) { $errors++ } + +if ($errors -gt 0) { + Write-Status "Audit policy remediation completed with $errors error(s). Review output above." 'WARN' + exit 1 +} else { + Write-Status "Audit policy remediation complete. All policies configured successfully." +} diff --git a/docs/solutions/cis/win-10/scripts/user-rights-assignment.ps1 b/docs/solutions/cis/win-10/scripts/user-rights-assignment.ps1 new file mode 100644 index 0000000000..489f12de5e --- /dev/null +++ b/docs/solutions/cis/win-10/scripts/user-rights-assignment.ps1 @@ -0,0 +1,177 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 10 Enterprise Benchmark v3.0.0 - User Rights Assignment Remediation + +.DESCRIPTION + Configures user rights assignments (privileges) to meet CIS Windows 10 Enterprise Benchmark v3.0.0 + requirements using secedit. This script is idempotent - safe to run multiple times. + +.NOTES + CIS Benchmark Controls Covered (Section 2.2): + - 2.2.1 Access Credential Manager as a trusted caller -> (empty) + - 2.2.2 Access this computer from the network -> Administrators, Remote Desktop Users + - 2.2.3 Act as part of the operating system -> (empty) + - 2.2.5 Allow log on locally -> Administrators, Users + - 2.2.7 Back up files and directories -> Administrators + - 2.2.8 Change the system time -> Administrators, LOCAL SERVICE + - 2.2.11 Create a token object -> (empty) + - 2.2.12 Create global objects -> Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + - 2.2.13 Create permanent shared objects -> (empty) + - 2.2.14 Create symbolic links -> Administrators + - 2.2.15 Debug programs -> Administrators + - 2.2.16 Deny access this computer from the network -> Guests, Local account + - 2.2.19 Deny log on locally -> Guests + - 2.2.20 Deny log on through Remote Desktop Services -> Guests, Local account + - 2.2.21 Enable computer and user accounts for delegation -> (empty) + - 2.2.22 Force shutdown from a remote system -> Administrators + - 2.2.23 Generate security audits -> LOCAL SERVICE, NETWORK SERVICE + - 2.2.24 Impersonate a client after authentication -> Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + - 2.2.25 Increase scheduling priority -> Administrators + - 2.2.26 Load and unload device drivers -> Administrators + - 2.2.27 Lock pages in memory -> (empty) + - 2.2.30 Manage auditing and security log -> Administrators + - 2.2.31 Modify an object label -> (empty) + - 2.2.32 Modify firmware environment values -> Administrators + - 2.2.34 Profile single process -> Administrators + - 2.2.37 Restore files and directories -> Administrators + - 2.2.39 Take ownership of files or other objects -> Administrators + + SID Reference used in secedit [Privilege Rights]: + - *S-1-5-6 = SERVICE + - *S-1-5-19 = LOCAL SERVICE + - *S-1-5-20 = NETWORK SERVICE + - *S-1-5-32-544 = Administrators + - *S-1-5-32-545 = Users + - *S-1-5-32-546 = Guests + - *S-1-5-32-555 = Remote Desktop Users + + Requires: Administrator privileges +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS user rights assignment remediation" + +$cfgFile = Join-Path $env:TEMP "secpol_ura.cfg" +$sdbFile = Join-Path $env:TEMP "secedit_ura.sdb" +$logFile = Join-Path $env:TEMP "secedit_ura.log" + +# Define the desired user rights (secedit format: privilege = SID list) +# Empty value means "No One" - the right is granted to no accounts +$userRights = [ordered]@{ + # CIS 2.2.1: No One + 'SeTrustedCredManAccessPrivilege' = '' + # CIS 2.2.2: Administrators, Remote Desktop Users + 'SeNetworkLogonRight' = '*S-1-5-32-544,*S-1-5-32-555' + # CIS 2.2.3: No One + 'SeTcbPrivilege' = '' + # CIS 2.2.5: Administrators, Users + 'SeInteractiveLogonRight' = '*S-1-5-32-544,*S-1-5-32-545' + # CIS 2.2.7: Administrators + 'SeBackupPrivilege' = '*S-1-5-32-544' + # CIS 2.2.8: Administrators, LOCAL SERVICE + 'SeSystemtimePrivilege' = '*S-1-5-32-544,*S-1-5-19' + # CIS 2.2.11: No One + 'SeCreateTokenPrivilege' = '' + # CIS 2.2.12: Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + 'SeCreateGlobalPrivilege' = '*S-1-5-32-544,*S-1-5-19,*S-1-5-20,*S-1-5-6' + # CIS 2.2.13: No One + 'SeCreatePermanentPrivilege' = '' + # CIS 2.2.14: Administrators + 'SeCreateSymbolicLinkPrivilege' = '*S-1-5-32-544' + # CIS 2.2.15: Administrators + 'SeDebugPrivilege' = '*S-1-5-32-544' + # CIS 2.2.16: Guests, Local account + 'SeDenyNetworkLogonRight' = '*S-1-5-32-546,*S-1-5-113' + # CIS 2.2.19: Guests + 'SeDenyInteractiveLogonRight' = '*S-1-5-32-546' + # CIS 2.2.20: Guests, Local account + 'SeDenyRemoteInteractiveLogonRight' = '*S-1-5-32-546,*S-1-5-113' + # CIS 2.2.21: No One + 'SeEnableDelegationPrivilege' = '' + # CIS 2.2.22: Administrators + 'SeRemoteShutdownPrivilege' = '*S-1-5-32-544' + # CIS 2.2.23: LOCAL SERVICE, NETWORK SERVICE + 'SeAuditPrivilege' = '*S-1-5-19,*S-1-5-20' + # CIS 2.2.24: Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + 'SeImpersonatePrivilege' = '*S-1-5-32-544,*S-1-5-19,*S-1-5-20,*S-1-5-6' + # CIS 2.2.25: Administrators + 'SeIncreaseBasePriorityPrivilege' = '*S-1-5-32-544' + # CIS 2.2.26: Administrators + 'SeLoadDriverPrivilege' = '*S-1-5-32-544' + # CIS 2.2.27: No One + 'SeLockMemoryPrivilege' = '' + # CIS 2.2.30: Administrators + 'SeSecurityPrivilege' = '*S-1-5-32-544' + # CIS 2.2.31: No One + 'SeRelabelPrivilege' = '' + # CIS 2.2.32: Administrators + 'SeSystemEnvironmentPrivilege' = '*S-1-5-32-544' + # CIS 2.2.34: Administrators + 'SeProfileSingleProcessPrivilege' = '*S-1-5-32-544' + # CIS 2.2.37: Administrators + 'SeRestorePrivilege' = '*S-1-5-32-544' + # CIS 2.2.39: Administrators + 'SeTakeOwnershipPrivilege' = '*S-1-5-32-544' +} + +try { + Write-Status "Exporting current security policy..." + $null = secedit /export /cfg $cfgFile /quiet + if ($LASTEXITCODE -ne 0) { + throw "secedit /export failed with exit code $LASTEXITCODE" + } + + $content = Get-Content $cfgFile -Raw + + # Ensure [Privilege Rights] section exists + if ($content -notmatch '\[Privilege Rights\]') { + $content += "`r`n[Privilege Rights]`r`n" + } + + # Update each user right + foreach ($right in $userRights.GetEnumerator()) { + $key = $right.Key + $value = $right.Value + + if ($content -match "(?m)^$key\s*=") { + # Replace existing entry + $content = $content -replace "(?m)^$key\s*=.*", "$key = $value" + } else { + # Add new entry in [Privilege Rights] section + $content = $content -replace '(\[Privilege Rights\])', "`$1`r`n$key = $value" + } + Write-Status " Set $key = $value" + } + + Set-Content -Path $cfgFile -Value $content -Encoding Unicode + + Write-Status "Applying user rights configuration..." + $null = secedit /configure /db $sdbFile /cfg $cfgFile /areas USER_RIGHTS /log $logFile /quiet + if ($LASTEXITCODE -ne 0) { + Write-Status "secedit /configure exit code: $LASTEXITCODE. Check $logFile for details." 'WARN' + } else { + Write-Status "User rights applied successfully." + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} finally { + @($cfgFile, $sdbFile, $logFile) | ForEach-Object { + if (Test-Path $_) { Remove-Item $_ -Force -ErrorAction SilentlyContinue } + } +} + +Write-Status "User rights assignment remediation complete." diff --git a/docs/solutions/cis/win-10/scripts/windows-firewall.ps1 b/docs/solutions/cis/win-10/scripts/windows-firewall.ps1 new file mode 100644 index 0000000000..22f2558c8a --- /dev/null +++ b/docs/solutions/cis/win-10/scripts/windows-firewall.ps1 @@ -0,0 +1,96 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 10 Enterprise Benchmark v3.0.0 - Windows Firewall Remediation + +.DESCRIPTION + Configures Windows Firewall settings to meet CIS Windows 10 Enterprise Benchmark v3.0.0 + requirements using Set-NetFirewallProfile. This script is idempotent. + +.NOTES + CIS Benchmark Controls Covered: + - 9.1.1 Windows Firewall: Domain: Firewall state -> On + - 9.1.2 Windows Firewall: Domain: Inbound connections -> Block + - 9.1.3 Windows Firewall: Domain: Outbound connections -> Allow + - 9.1.4 Windows Firewall: Domain: Settings: Display notification -> No + - 9.2.1 Windows Firewall: Private: Firewall state -> On + - 9.2.2 Windows Firewall: Private: Inbound connections -> Block + - 9.2.3 Windows Firewall: Private: Outbound connections -> Allow + - 9.2.4 Windows Firewall: Private: Settings: Display notification -> No + - 9.3.1 Windows Firewall: Public: Firewall state -> On + - 9.3.2 Windows Firewall: Public: Inbound connections -> Block + - 9.3.3 Windows Firewall: Public: Outbound connections -> Allow + - 9.3.4 Windows Firewall: Public: Settings: Display notification -> No + - 9.x.5 Windows Firewall: Log dropped packets -> Yes + - 9.x.6 Windows Firewall: Log max file size -> 16384 KB + + Requires: Administrator privileges, Windows Firewall service running +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS Windows Firewall remediation" + +# Verify the Windows Firewall service is running +$fwService = Get-Service -Name 'MpsSvc' -ErrorAction SilentlyContinue +if ($null -eq $fwService) { + Write-Status "Windows Firewall service (MpsSvc) not found." 'ERROR' + exit 1 +} +if ($fwService.Status -ne 'Running') { + Write-Status "Starting Windows Firewall service..." + Start-Service -Name 'MpsSvc' +} + +try { + $profiles = @('Domain', 'Private', 'Public') + + foreach ($profile in $profiles) { + Write-Status "Configuring $profile firewall profile..." + + $params = @{ + Name = $profile + Enabled = $true # Firewall state: On + DefaultInboundAction = 'Block' # Block inbound connections by default + DefaultOutboundAction = 'Allow' # Allow outbound connections by default + NotifyOnListen = $false # Do not display notifications + AllowUnicastResponseToMulticast = $true # Allow unicast response (recommended) + LogAllowed = $false + LogBlocked = $true # Log dropped packets (CIS 9.x.5) + LogMaxSizeKilobytes = 16384 # CIS 9.x.6: minimum 16384 KB + } + + # Public profile: also disable local policy merge (CIS L2 hardening) + if ($profile -eq 'Public') { + $params['AllowLocalFirewallRules'] = $false + $params['AllowLocalIPsecRules'] = $false + } + + Set-NetFirewallProfile @params + Write-Status "$profile profile configured." + } + + # Verify settings were applied + Write-Status "Verifying firewall configuration..." + foreach ($profile in $profiles) { + $fw = Get-NetFirewallProfile -Name $profile + $status = if ($fw.Enabled) { 'ON' } else { 'OFF' } + Write-Status " $profile : State=$status, Inbound=$($fw.DefaultInboundAction), Outbound=$($fw.DefaultOutboundAction)" + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} + +Write-Status "Windows Firewall remediation complete." diff --git a/docs/solutions/cis/win-10/scripts/windows-settings.ps1 b/docs/solutions/cis/win-10/scripts/windows-settings.ps1 new file mode 100644 index 0000000000..1874907e95 --- /dev/null +++ b/docs/solutions/cis/win-10/scripts/windows-settings.ps1 @@ -0,0 +1,265 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 10 Enterprise Benchmark v3.0.0 - Security Registry Settings Remediation + +.DESCRIPTION + Configures common security registry settings to meet CIS Windows 10 Enterprise Benchmark v3.0.0 + requirements. This script is idempotent - safe to run multiple times. + +.NOTES + CIS Benchmark Controls Covered (registry-based, Section 2-19): + - 2.3.1.4 Block Microsoft accounts -> 3 + - 2.3.1.5 Limit blank password use to console logon only -> 1 (Enabled) + - 2.3.2.1 Audit: Force audit policy subcategory settings -> 1 (Enabled) + - 2.3.4.1 Devices: Prevent users from installing printer drivers -> 1 (Enabled) + - 2.3.7.1 Interactive logon: Do not require CTRL+ALT+DEL -> 0 (Disabled) + - 2.3.7.2 Interactive logon: Don't display last username -> 1 (Enabled) + - 2.3.10.1 Network access: Allow anonymous SID/name translation -> 0 (Disabled) + - 2.3.10.2 Network access: Do not allow anonymous enum of SAM -> 1 (Enabled) + - 2.3.10.3 Network access: Do not allow anonymous enum of SAM and shares -> 1 (Enabled) + - 2.3.11.4 Network security: Do not store LAN Manager hash -> 1 (Enabled) + - 2.3.17.1 UAC: Admin approval mode for Built-in Administrator -> 1 (Enabled) + - 2.3.17.2 UAC: Behavior of elevation prompt for admins -> 2 (Prompt for credentials) + - 2.3.17.5 UAC: Behavior of elevation prompt for standard users -> 0 (Auto-deny) + - 2.3.17.6 UAC: Run all administrators in Admin Approval Mode -> 1 (Enabled) + - 18.1.1.1 Prevent enabling lock screen camera -> 1 (Enabled) + - 18.1.1.2 Prevent enabling lock screen slide show -> 1 (Enabled) + - 18.3.3 Configure SMB v1 client driver -> Disabled + - 18.3.4 Configure SMB v1 server -> Disabled + - 18.4.1 MSS: AutoAdminLogon -> "0" (Disabled) + - 18.9.3 Autoplay: DisableAutoplay -> 1 (Enabled) + - 18.9.4 AutoRun: NoDriveTypeAutoRun -> 255 (All drives) + - 18.9.48 Windows Installer: AlwaysInstallElevated -> 0 (Disabled) + - 18.9.75 WinRM: AllowUnencryptedTraffic -> 0 (Disabled) + + Requires: Administrator privileges + Note: Changes take effect immediately for registry settings. Some may require + a reboot or Group Policy update to fully apply. +#> + +[CmdletBinding()] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +function Set-RegistryValue { + param( + [string]$Path, + [string]$Name, + [object]$Value, + [string]$Type = 'DWord', + [string]$Description = '' + ) + + try { + # Create registry key if it does not exist + if (-not (Test-Path $Path)) { + $null = New-Item -Path $Path -Force + Write-Status " Created key: $Path" + } + + $current = Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue + if ($null -ne $current -and $current.$Name -eq $Value) { + Write-Status " [OK] $Path\$Name = $Value (already set)" + return + } + + Set-ItemProperty -Path $Path -Name $Name -Value $Value -Type $Type -Force + Write-Status " [SET] $Path\$Name = $Value $Description" + } catch { + Write-Status " [FAIL] $Path\$Name : $_" 'WARN' + } +} + +Write-Status "Starting CIS Windows security registry settings remediation" + +# --- Section 2.3: Security Options --- + +# 2.3.1.4: Block Microsoft accounts = 3 (Users can't add or log on with Microsoft accounts) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'NoConnectedUser' ` + -Value 3 ` + -Description '(CIS 2.3.1.4)' + +# 2.3.1.5: Limit blank password use to console logon only = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'LimitBlankPasswordUse' ` + -Value 1 ` + -Description '(CIS 2.3.1.5)' + +# 2.3.2.1: Audit: Force audit policy subcategory settings = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'SCENoApplyLegacyAuditPolicy' ` + -Value 1 ` + -Description '(CIS 2.3.2.1)' + +# 2.3.4.1: Devices: Prevent users from installing printer drivers = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers' ` + -Name 'AddPrinterDrivers' ` + -Value 1 ` + -Description '(CIS 2.3.4.1)' + +# 2.3.7.1: Interactive logon: Do not require CTRL+ALT+DEL = 0 (Disabled = CTRL+ALT+DEL required) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'DisableCAD' ` + -Value 0 ` + -Description '(CIS 2.3.7.1)' + +# 2.3.7.2: Interactive logon: Don't display last username = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'DontDisplayLastUserName' ` + -Value 1 ` + -Description '(CIS 2.3.7.2)' + +# 2.3.10.1: Network access: Allow anonymous SID/Name translation = 0 (Disabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'TurnOffAnonymousBlock' ` + -Value 0 ` + -Description '(CIS 2.3.10.1)' + +# 2.3.10.2: Network access: Do not allow anonymous enumeration of SAM accounts = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'RestrictAnonymousSAM' ` + -Value 1 ` + -Description '(CIS 2.3.10.2)' + +# 2.3.10.3: Network access: Do not allow anonymous enumeration of SAM accounts and shares = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'RestrictAnonymous' ` + -Value 1 ` + -Description '(CIS 2.3.10.3)' + +# 2.3.11.4: Network security: Do not store LAN Manager hash on next password change = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'NoLMHash' ` + -Value 1 ` + -Description '(CIS 2.3.11.4)' + +# --- Section 2.3.17: UAC Settings --- + +# 2.3.17.1: UAC: Admin Approval Mode for Built-in Administrator = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'FilterAdministratorToken' ` + -Value 1 ` + -Description '(CIS 2.3.17.1)' + +# 2.3.17.2: UAC: Behavior of elevation prompt for administrators = 2 (Prompt for credentials on the secure desktop) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'ConsentPromptBehaviorAdmin' ` + -Value 2 ` + -Description '(CIS 2.3.17.2)' + +# 2.3.17.5: UAC: Behavior of elevation prompt for standard users = 0 (Automatically deny elevation requests) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'ConsentPromptBehaviorUser' ` + -Value 0 ` + -Description '(CIS 2.3.17.5)' + +# 2.3.17.6: UAC: Run all administrators in Admin Approval Mode = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'EnableLUA' ` + -Value 1 ` + -Description '(CIS 2.3.17.6)' + +# --- Section 18: Administrative Templates --- + +# 18.1.1.1: Prevent enabling lock screen camera = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization' ` + -Name 'NoLockScreenCamera' ` + -Value 1 ` + -Description '(CIS 18.1.1.1)' + +# 18.1.1.2: Prevent enabling lock screen slide show = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization' ` + -Name 'NoLockScreenSlideshow' ` + -Value 1 ` + -Description '(CIS 18.1.1.2)' + +# 18.3.3: SMBv1 Client Driver = Disabled (4 = Disabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\MrxSmb10' ` + -Name 'Start' ` + -Value 4 ` + -Description '(CIS 18.3.3 - SMBv1 client disabled)' + +# 18.3.4: SMBv1 Server = Disabled (0) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' ` + -Name 'SMB1' ` + -Value 0 ` + -Description '(CIS 18.3.4 - SMBv1 server disabled)' + +# 18.4.1: MSS: Disable AutoAdminLogon (REG_SZ value) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' ` + -Name 'AutoAdminLogon' ` + -Value '0' ` + -Type 'String' ` + -Description '(CIS 18.4.1 - Disable AutoAdminLogon)' + +# 18.9.3: Disable Autoplay for all drives = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' ` + -Name 'NoDriveTypeAutoRun' ` + -Value 255 ` + -Description '(CIS 18.9.3/4 - Disable AutoRun all drives)' + +# 18.9.4: AutoRun commands are disabled +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' ` + -Name 'NoAutorun' ` + -Value 1 ` + -Description '(CIS 18.9.4 - Disable AutoRun commands)' + +# 18.9.48: Windows Installer: Always install with elevated privileges = 0 (Disabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer' ` + -Name 'AlwaysInstallElevated' ` + -Value 0 ` + -Description '(CIS 18.9.48 - Disable AlwaysInstallElevated)' + +# 18.9.75: WinRM: Disallow unencrypted traffic = 0 (Disabled = encryption required) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' ` + -Name 'AllowUnencryptedTraffic' ` + -Value 0 ` + -Description '(CIS 18.9.75 - WinRM client encryption required)' + +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Service' ` + -Name 'AllowUnencryptedTraffic' ` + -Value 0 ` + -Description '(CIS 18.9.75 - WinRM service encryption required)' + +# Enable Windows Defender real-time protection (basic check/set) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection' ` + -Name 'DisableRealtimeMonitoring' ` + -Value 0 ` + -Description '(CIS - Enable Defender real-time monitoring)' + +Write-Status "Windows security registry settings remediation complete." diff --git a/docs/solutions/cis/win-11-intune/README.md b/docs/solutions/cis/win-11-intune/README.md new file mode 100644 index 0000000000..a5c4d70482 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/README.md @@ -0,0 +1,31 @@ +# Windows 11 Enterprise benchmarks (Intune) + +Fleet's policies have been written against v8.1 of the CIS benchmark for Windows 11 Enterprise, targeting devices enrolled in Microsoft Intune. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. + +For requirements and usage details, see the [CIS Benchmarks](https://fleetdm.com/docs/using-fleet/cis-benchmarks) documentation. + +### Contents + +| Folder | Description | +|--------|-------------| +| `policies/` | GitOps-compatible policy YAML (bl/l1/l2) — import via `fleetctl apply` or reference with `- path:` in `fleet.yml` | +| `configuration-profiles/` | SyncML XML profiles — upload via Fleet UI or `fleetctl apply` to enforce the settings checked by the policies | +| `scripts/` | PowerShell scripts — upload via Fleet UI or `fleetctl apply` and link as `run_script` remediation in the corresponding policy | + +### Policy files + +Policies are split by CIS level: + +| File | Level | Description | +|------|-------|-------------| +| `bl_win11_intune.yml` | Baseline | Foundational controls required regardless of level | +| `l1_win11_intune.yml` | Level 1 | Standard security configuration for most environments | +| `l2_win11_intune.yml` | Level 2 | High-security configuration for environments requiring stricter controls | + +### Limitations + +> None. All items in this version of the benchmark are able to be automated. + +### How these policies work + +Each policy uses `mdm_bridge` queries to read CSP (Configuration Service Provider) values via OMA-URI, allowing Fleet to verify settings that were applied through Intune configuration profiles. diff --git a/docs/solutions/cis/win-11-intune/configuration-profiles/audit-policies.xml b/docs/solutions/cis/win-11-intune/configuration-profiles/audit-policies.xml new file mode 100644 index 0000000000..14c4f2bdb3 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/configuration-profiles/audit-policies.xml @@ -0,0 +1,325 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogon_AuditCredentialValidation + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditApplicationGroupManagement + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditSecurityGroupManagement + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditUserAccountManagement + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/DetailedTracking_AuditPNPActivity + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/DetailedTracking_AuditProcessCreation + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditAccountLockout + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditGroupMembership + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditLogoff + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditLogon + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditOtherLogonLogoffEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditSpecialLogon + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditDetailedFileShare + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditFileShare + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditOtherObjectAccessEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditRemovableStorage + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditAuthenticationPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditAuthorizationPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditMPSSVCRuleLevelPolicyChange + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditOtherPolicyChangeEvents + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PrivilegeUse_AuditSensitivePrivilegeUse + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditIPsecDriver + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditOtherSystemEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSecurityStateChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSecuritySystemExtension + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSystemIntegrity + + 3 + + diff --git a/docs/solutions/cis/win-11-intune/configuration-profiles/firewall.xml b/docs/solutions/cis/win-11-intune/configuration-profiles/firewall.xml new file mode 100644 index 0000000000..c4e0b08c21 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/configuration-profiles/firewall.xml @@ -0,0 +1,169 @@ + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogMaxFileSize + + 16384 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogMaxFileSize + + 16384 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalPolicyMerge + + false + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalIpsecPolicyMerge + + false + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogMaxFileSize + + 16384 + + diff --git a/docs/solutions/cis/win-11-intune/configuration-profiles/local-security-options.xml b/docs/solutions/cis/win-11-intune/configuration-profiles/local-security-options.xml new file mode 100644 index 0000000000..b3b49a0b59 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/configuration-profiles/local-security-options.xml @@ -0,0 +1,318 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_EnableGuestAccountStatus + + 0 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_RenameAdministratorAccount + + AdminAcct + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_RenameGuestAccount + + GuestAcct + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/InteractiveLogon_DoNotDisplayLastSignedIn + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/InteractiveLogon_DoNotRequireCTRLALTDEL + + 0 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/InteractiveLogon_MachineInactivityLimit + + 900 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/InteractiveLogon_SmartCardRemovalBehavior + + 1 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/InteractiveLogon_MessageTextForUsersAttemptingToLogOn + + This system is for authorized users only. All activity may be monitored and reported. + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/InteractiveLogon_MessageTitleForUsersAttemptingToLogOn + + Authorized Use Only + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/MicrosoftNetworkClient_DigitallySignCommunicationsAlways + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/MicrosoftNetworkClient_DigitallySignCommunicationsIfServerAgrees + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/MicrosoftNetworkServer_DigitallySignCommunicationsAlways + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/MicrosoftNetworkServer_DigitallySignCommunicationsIfClientAgrees + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkAccess_DoNotAllowAnonymousEnumerationOfSAMAccounts + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkAccess_DoNotAllowAnonymousEnumerationOfSamAccountsAndShares + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkAccess_RestrictAnonymousAccessToNamedPipesAndShares + + 1 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkAccess_RestrictClientsAllowedToMakeRemoteCallsToSAM + + O:BAG:BAD:(A;;RC;;;BA) + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_AllowLocalSystemToUseComputerIdentityForNTLM + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_AllowPKU2UAuthenticationRequests + + 0 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_DoNotStoreLANManagerHashValueOnNextPasswordChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_LANManagerAuthenticationLevel + + 5 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_MinimumSessionSecurityForNTLMSSPBasedClients + + 537395200 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_MinimumSessionSecurityForNTLMSSPBasedServers + + 537395200 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/NetworkSecurity_RestrictNTLM_AuditIncomingNTLMTraffic + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/UserAccountControl_BehaviorOfTheElevationPromptForAdministrators + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/UserAccountControl_BehaviorOfTheElevationPromptForStandardUsers + + 0 + + diff --git a/docs/solutions/cis/win-11-intune/configuration-profiles/user-rights-assignment.xml b/docs/solutions/cis/win-11-intune/configuration-profiles/user-rights-assignment.xml new file mode 100644 index 0000000000..4a51ac473e --- /dev/null +++ b/docs/solutions/cis/win-11-intune/configuration-profiles/user-rights-assignment.xml @@ -0,0 +1,328 @@ + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AccessCredentialManagerAsTrustedCaller + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AccessFromNetwork + + *S-1-5-32-544*S-1-5-32-555 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ActAsPartOfTheOperatingSystem + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AllowLocalLogOn + + *S-1-5-32-544*S-1-5-32-545 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/BackupFilesAndDirectories + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ChangeSystemTime + + *S-1-5-32-544*S-1-5-19 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateToken + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateGlobalObjects + + *S-1-5-32-544*S-1-5-19*S-1-5-20*S-1-5-6 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreatePermanentSharedObjects + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateSymbolicLinks + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DebugPrograms + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyAccessFromNetwork + + *S-1-5-32-546*S-1-5-113 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyLocalLogOn + + *S-1-5-32-546 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyRemoteDesktopServicesLogOn + + *S-1-5-32-546*S-1-5-113 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/EnableDelegation + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/RemoteShutdown + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/GenerateSecurityAudits + + *S-1-5-19*S-1-5-20 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ImpersonateClient + + *S-1-5-32-544*S-1-5-19*S-1-5-20*S-1-5-6 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/IncreaseSchedulingPriority + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/LoadUnloadDeviceDrivers + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/LockMemory + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ManageAuditingAndSecurityLog + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ModifyObjectLabel + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ModifyFirmwareEnvironment + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ProfileSingleProcess + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/RestoreFilesAndDirectories + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/TakeOwnership + + *S-1-5-32-544 + + diff --git a/docs/solutions/cis/win-11-intune/configuration-profiles/windows-defender.xml b/docs/solutions/cis/win-11-intune/configuration-profiles/windows-defender.xml new file mode 100644 index 0000000000..7358a89944 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/configuration-profiles/windows-defender.xml @@ -0,0 +1,123 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AllowBehaviorMonitoring + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AllowEmailScanning + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AllowFullScanRemovableDriveScanning + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AllowRealtimeMonitoring + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AllowIOAVProtection + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AllowScriptScanning + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/EnableNetworkProtection + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Defender/PUAProtection + + 1 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/Defender/AttackSurfaceReductionRules + + 56A863A9-875E-4185-98A7-B882C64B5CE5=1|7674BA52-37EB-4A4F-A9A1-F0F9A1619A2C=1|D4F940AB-401B-4EFC-AADC-AD5F3C50688A=1|9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2=1|BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550=1|01443614-CD74-433A-B99E-2ECDC07BFC25=1|5BEB7EFE-FD9A-4556-801D-275E5FFC04CC=1|D3E037E1-3EB8-44C8-A917-57927947596D=1|3B576869-A4EC-4529-8536-B80A7769E899=1|75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84=1|26190899-1602-49E8-8B27-EB1D0A1CE869=1|E6DB77E5-3DF2-4CF1-B95A-636979351E5B=1|D1E49AAC-8F56-4280-B9BA-993A6D77406C=1|B2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4=1|92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B=1|C1DB55AB-C21A-4637-BB3F-A12568109D35=1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/WindowsDefenderSecurityCenter/DisallowExploitProtectionOverride + + 1 + + diff --git a/docs/solutions/cis/win-11-intune/policies/bl_win11_intune.yml b/docs/solutions/cis/win-11-intune/policies/bl_win11_intune.yml new file mode 100644 index 0000000000..d30bc42690 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/policies/bl_win11_intune.yml @@ -0,0 +1,276 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- name: CIS - Ensure 'Device Enumeration Policy' is set to 'Block all (most restrictive)' + platform: windows + description: 'This policy is intended to provide additional security against external DMA-capable devices. It allows for more control over the enumeration of external DMA-capable devices that are not compatible with DMA Remapping/device memory isolation and sandboxing. The recommended state for this setting is: Block all (most restrictive). Note: This policy does not apply to 1394, PCMCIA or ExpressCard devices. The protection also only applies to Windows 10 R1803 or higher and requires a UEFI BIOS to function.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Block all (most restrictive). Dma Guard\Device Enumeration Policy + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Settings\DeviceEnumerationPolicy' AND data = '0'; + # tags: framework:CISv8.1, benchmark:win11, level:BL, platform:windows, category:dma-guard, requirement:standard, critical:false, control:device-enumeration-policy-is-block-all, cis_safeguard_ids:CIS28.1 + # purpose: Enforcement + +- name: CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes' is set to 'Enabled' + platform: windows + description: 'This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/DeviceInstallation/PreventInstallationOfMatchingDeviceSetupClasses' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:prevent-enabling-lock-screen-slide-show-is-enabled, cis_safeguard_ids:CIS4.1.3.2 + description: 'Disables the lock screen slide show settings in PC Settings and prevents a slide show + + from playing on the lock screen. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Control Panel\Personalization\Prevent enabling lock + + screen slide show' + +- platform: windows + name: CIS - Ensure 'Apply UAC restrictions to local accounts on network logons' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:apply-uac-restrictions-to-local-accounts-on-network-logons-is-enabled, cis_safeguard_ids:CIS4.4.1 + description: 'This setting controls whether local accounts can be used for remote administration via + + network logon (e.g., NET USE, connecting to C$, etc.). Local accounts are at high risk + + for credential theft when the same account and password is configured on multiple + + systems. Enabling this policy significantly reduces that risk. + + Enabled: Applies UAC token-filtering to local accounts on network logons. Membership + + in powerful group such as Administrators is disabled and powerful privileges are + + removed from the resulting access token. This configures the + + LocalAccountTokenFilterPolicy registry value to 0. This is the default behavior for + + Windows. + + Disabled: Allows local accounts to have full administrative rights when authenticating + + via network logon, by configuring the LocalAccountTokenFilterPolicy registry value + + to 1. + + For more information about local accounts and credential theft, review the "Mitigating + + Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques" documents. + + For more information about LocalAccountTokenFilterPolicy, see Microsoft + + Knowledge Base article 951016: Description of User Account Control and remote + + restrictions in Windows Vista. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\MS Security Guide\Apply UAC restrictions to local + + accounts on network logons' + +- platform: windows + name: 'CIS - Ensure ''Configure SMB v1 client driver'' is set to ''Enabled: Disable driver (recommended)''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mrxsmb10\Start' AND data = '4'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:configure-smb-v1-client-driver-is-enabled-disable-driver-recommended, cis_safeguard_ids:CIS4.4.2 + description: 'This setting configures the start type for the Server Message Block version 1 (SMBv1) + + client driver service (MRxSmb10), which is recommended to be disabled. + + The recommended state for this setting is: Enabled: Disable driver + + (recommended). + + Note: Do not, under any circumstances, configure this overall setting as Disabled, as + + doing so will delete the underlying registry entry altogether, which will cause serious + + problems.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Disable driver (recommended). + + Administrative Templates\MS Security Guide\Configure SMB v1 client driver' + +- platform: windows + name: CIS - Ensure 'Configure SMB v1 server' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:configure-smb-v1-server-is-disabled, cis_safeguard_ids:CIS4.4.3 + description: 'This setting configures the server-side processing of the Server Message Block version + + 1 (SMBv1) protocol. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\MS Security Guide\Configure SMB v1 server' + +- platform: windows + name: CIS - Ensure 'Enable Structured Exception Handling Overwrite Protection (SEHOP)' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\DisableExceptionChainValidation' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-structured-exception-handling-overwrite-protection-sehop-is-enabled, cis_safeguard_ids:CIS4.4.4 + description: 'Windows includes support for Structured Exception Handling Overwrite Protection + + (SEHOP). We recommend enabling this feature to improve the security profile of the + + computer. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\MS Security Guide\Enable Structured Exception + + Handling Overwrite Protection (SEHOP) + + + More information is available at MSKB 956607: How to enable Structured Exception + + Handling Overwrite Protection (SEHOP) in Windows operating systems' + +- platform: windows + name: CIS - Ensure 'WDigest Authentication' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:wdigest-authentication-is-disabled, cis_safeguard_ids:CIS4.4.5 + description: 'When WDigest authentication is enabled, Lsass.exe retains a copy of the user''s + + plaintext password in memory, where it can be at risk of theft. If this setting is not + + configured, WDigest authentication is disabled in Windows 8.1 and in Windows Server + + 2012 R2; it is enabled by default in earlier versions of Windows and Windows Server. + + For more information about local accounts and credential theft, review the "Mitigating + + Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques" documents. + + For more information about UseLogonCredential, see Microsoft Knowledge Base + + article 2871997: Microsoft Security Advisory Update to improve credentials protection + + and management May 13, 2014. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\MS Security Guide\WDigest Authentication (disabling + + may require KB2871997)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (AutoAdminLogon) Enable Automatic Logon (not recommended)'' is set to ''Disabled''' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-autoadminlogon-enable-automatic-logon-not-recommended-is-disabled, cis_safeguard_ids:CIS4.5.1 + description: 'This setting is separate from the Welcome screen feature in Windows XP and Windows + + Vista; if that feature is disabled, this setting is not disabled. If you configure a computer + + for automatic logon, anyone who can physically gain access to the computer can also + + gain access to everything that is on the computer, including any network or networks to + + which the computer is connected. Also, if you enable automatic logon, the password is + + stored in the registry in plaintext, and the specific registry key that stores this value is + + remotely readable by the Authenticated Users group. + + For additional information, see Microsoft Knowledge Base article 324737: How to turn + + on automatic logon in Windows. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to `Disabled. + + Administrative Templates\MSS (Legacy)\MSS: (AutoAdminLogon) Enable Automatic + + Logon (not recommended)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (DisableIPSourceRouting IPv6) IP source routing protection level (protects against packet spoofing)'' is set to ''Enabled: Highest protection, source routing is completely disabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisableIPSourceRouting' AND data = '2'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-disableipsourcerouting-ipv6-ip-source-routing-protection-level-protects-against-packet-spoofing-is-enabled-highest-p, cis_safeguard_ids:CIS4.5.2 + description: 'IP source routing is a mechanism that allows the sender to determine the IP route that a + + datagram should follow through the network. + + The recommended state for this setting is: Enabled: Highest protection, source + + routing is completely disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Highest protection, source routing is + + completely disabled. + + Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting IPv6) IP + + source routing protection level (protects against packet spoofing)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (DisableIPSourceRouting) IP source routing protection level (protects against packet spoofing)'' is set to ''Enabled: Highest protection, source routing is completely disabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DisableIPSourceRouting' AND data = '2'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-disableipsourcerouting-ip-source-routing-protection-level-protects-against-packet-spoofing-is-enabled-highest-protec, cis_safeguard_ids:CIS4.5.3 + description: 'IP source routing is a mechanism that allows the sender to determine the IP route that a + + datagram should take through the network. It is recommended to configure this setting + + to Not Defined for enterprise environments and to Highest Protection for high security + + environments to completely disable source routing. + + The recommended state for this setting is: Enabled: Highest protection, source + + routing is completely disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Highest protection, source routing is + + completely disabled. + + Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting) IP source + + routing protection level (protects against packet spoofing)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes'' is set to ''Disabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableICMPRedirect' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-enableicmpredirect-allow-icmp-redirects-to-override-ospf-generated-routes-is-disabled, cis_safeguard_ids:CIS4.5.5 + description: 'Internet Control Message Protocol (ICMP) redirects cause the IPv4 stack to plumb host + + routes. These routes override the Open Shortest Path First (OSPF) generated routes. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\MSS (Legacy)\MSS: (EnableICMPRedirect) Allow ICMP + + redirects to override OSPF generated routes' + +- platform: windows + name: 'CIS - Ensure ''MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\NoNameReleaseOnDemand' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-nonamereleaseondemand-allow-the-computer-to-ignore-netbios-name-release-requests-except-from-wins-servers-is-enabled, cis_safeguard_ids:CIS4.5.7 + description: 'NetBIOS over TCP/IP is a network protocol that among other things provides a way to + + easily resolve NetBIOS names that are registered on Windows-based systems to the IP + + addresses that are configured on those systems. This setting determines whether the + + computer releases its NetBIOS name when it receives a name-release request. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\MSS (Legacy)\MSS: (NoNameReleaseOnDemand) Allow the + + computer to ignore NetBIOS name release requests except from WINS servers' + +- platform: windows + name: 'CIS - Ensure ''MSS: (SafeDllSearchMode) Enable Safe DLL search mode (recommended)'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDllSearchMode' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-safedllsearchmode-enable-safe-dll-search-mode-recommended-is-enabled, cis_safeguard_ids:CIS4.5.9 + description: 'The DLL search order can be configured to search for DLLs that are requested by + + running processes in one of two ways: + + • + + • + + + Search folders specified in the system path first, and then search the current + + working folder. + + Search current working folder first, and then search the folders specified in the + + system path. + + + When enabled, the registry value is set to 1. With a setting of 1, the system first + + searches the folders that are specified in the system path and then searches the current + + working folder. When disabled the registry value is set to 0 and the system first + + searches the current working folder and then searches the folders that are specified in + + the system path. + + Applications will be forced to search for DLLs in the system path first. For applications + + that require unique versions of these DLLs that are included with the application, this + + entry could cause performance or stability problems. + + The recommended state for this setting is: Enabled. + + Note: More information on how Safe DLL search mode works is available at this link: + + Dynamic-Link Library Search Order - Windows applications | Microsoft Docs' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\MSS (Legacy)\MSS: (SafeDllSearchMode) Enable Safe + + DLL search mode (recommended)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires (0 recommended)'' is set to ''Enabled: 5 or fewer seconds''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ScreenSaverGracePeriod' AND CAST(data AS INTEGER) <= 5; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:mss-screensavergraceperiod-the-time-in-seconds-before-the-screen-saver-grace-period-expires-0-recommended-is-enabled-5-o, cis_safeguard_ids:CIS4.5.10 + description: 'Windows includes a grace period between when the screen saver is launched and + + when the console is actually locked automatically when screen saver locking is enabled. + + The recommended state for this setting is: Enabled: 5 or fewer seconds.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 5 or fewer seconds. + + Administrative Templates\MSS (Legacy)\MSS: (ScreenSaverGracePeriod) The time + + in seconds before the screen saver grace period expires (0 recommended)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning'' is set to ''Enabled: 90% or less''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security\WarningLevel' AND CAST(data AS INTEGER) <= 90; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:mss-warninglevel-percentage-threshold-for-the-security-event-log-at-which-the-system-will-generate-a-warning-is-enabled-, cis_safeguard_ids:CIS4.5.13 + description: 'This setting can generate a security audit in the Security event log when the log reaches + + a user-defined threshold. + + The recommended state for this setting is: Enabled: 90% or less. + + Note: If log settings are configured to Overwrite events as needed or Overwrite events + + older than x days, this event will not be generated.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 90% or less. + + Administrative Templates\MSS (Legacy)\MSS: (WarningLevel) Percentage + + threshold for the security event log at which the system will generate a + + warning' + +- platform: windows + name: CIS - Ensure 'Turn off multicast name resolution' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\EnableMulticast' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-multicast-name-resolution-is-enabled, cis_safeguard_ids:CIS4.6.4.1 + description: 'Link-Local Multicast Name Resolution (LLMNR) is a secondary name resolution + + protocol. With LLMNR, queries are sent using multicast over a local network link on a + + single subnet from a client computer to another client computer on the same subnet that + + also has LLMNR enabled. LLMNR does not require a DNS server or DNS client + + configuration and provides name resolution in scenarios in which conventional DNS + + name resolution is not possible. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Network\DNS Client\Turn off multicast name + + resolution' + +- platform: windows + name: CIS - Ensure 'Prohibit installation and configuration of Network Bridge on your DNS domain network' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Connectivity/ProhibitInstallationAndConfigurationOfNetworkBridge' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:printing, requirement:standard, critical:false, control:limits-print-driver-installation-to-administrators-is-enabled, cis_safeguard_ids:CIS4.7.8 + description: 'This policy setting controls whether users who aren''t Administrators can install print + + drivers on the system. + + The recommended state for this setting is: Enabled. + + Note: On August 10, 2021, Microsoft announced a Point and Print Default Behavior + + Change which modifies the default Point and Print driver installation and update + + behavior to require Administrator privileges. This is documented in KB5005652— + + Manage new Point and Print default driver installation behavior (CVE-2021-34481).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Printers\Limits print driver installation to + + Administrators' + +- platform: windows + name: 'CIS - Ensure ''Manage processing of Queue-specific files: Manage processing of Queue-Specific files'' is set to ''Enabled: Limit Queue-specific files to Color profiles''' + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_Printing/ManageProcessingOfQueueSpecificFiles' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:include-command-line-in-process-creation-events-is-enabled, cis_safeguard_ids:CIS4.10.4.1 + description: 'This policy setting controls whether the process creation command line text is logged in + + security audit events when a new process has been created. + + The recommended state for this setting is: Enabled. + + Note: This feature that this setting controls was not originally supported in workstation + + OSes older than Windows 8.1. However, in February 2015 Microsoft added support for + + the feature to Windows 7 and Windows 8.0 via an update - KB3004375. Therefore, this + + setting is also important to set on those older OSes.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Audit Process Creation\Include command line + + in process creation events' + +- platform: windows + name: 'CIS - Ensure ''Encryption Oracle Remediation'' is set to ''Enabled: Force Updated Clients''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_CredSsp/AllowEncryptionOracle' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:encryption-oracle-remediation-is-enabled-force-updated-clients, cis_safeguard_ids:CIS4.10.5.1 + description: 'Some versions of the CredSSP protocol that is used by some applications (such as + + Remote Desktop Connection) are vulnerable to an encryption oracle attack against the + + client. This policy controls compatibility with vulnerable clients and servers and allows + + you to set the level of protection desired for the encryption oracle vulnerability. + + The recommended state for this setting is: Enabled: Force Updated Clients.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Force Updated Clients. + + Administrative Templates\System\Credentials Delegation\Encryption Oracle + + Remediation' + +- platform: windows + name: CIS - Ensure 'Remote host allows delegation of nonexportable credentials' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/CredentialsDelegation/RemoteHostAllowsDelegationOfNonExportableCredentials' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.5.2 + description: 'Remote host allows delegation of non-exportable credentials. When using credential + + delegation, devices provide an exportable version of credentials to the remote host. This + + exposes users to the risk of credential theft from attackers on the remote host. The + + Restricted Admin Mode and Windows Defender Remote Credential Guard features are + + two options to help protect against this risk. + + The recommended state for this setting is: Enabled. + + Note: More detailed information on Windows Defender Remote Credential Guard and + + how it compares to Restricted Admin Mode can be found at this link: Protect Remote + + Desktop credentials with Windows Defender Remote Credential Guard (Windows 10) | + + Microsoft Docs' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Credentials Delegation\Remote host allows + + delegation of non-exportable credentials' + +- platform: windows + name: CIS - Ensure 'Prevent device metadata retrieval from the Internet' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Device Metadata\PreventDeviceMetadataFromNetwork' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:prevent-device-metadata-retrieval-from-the-internet-is-enabled, cis_safeguard_ids:CIS4.10.9.2 + description: 'This policy setting allows you to prevent Windows from retrieving device metadata from + + the Internet. + + The recommended state for this setting is: Enabled. + + Note: This will not prevent the installation of basic hardware drivers, but does prevent + + associated third-party utility software from automatically being installed under the + + context of the SYSTEM account.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Device Installation\Prevent device metadata + + retrieval from the Internet' + +- platform: windows + name: 'CIS - Ensure ''Boot-Start Driver Initialization Policy'' is set to ''Enabled: Good, unknown and bad but critical''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/System/BootStartDriverInitialization' AND mdm_command_output LIKE '%value="3"%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:boot-start-driver-initialization-policy-is-enabled-good-unknown-and-bad-but-critical, cis_safeguard_ids:CIS4.10.13.1 + description: 'This policy setting allows you to specify which boot-start drivers are initialized based on + + a classification determined by an Early Launch Antimalware boot-start driver. The Early + + Launch Antimalware boot-start driver can return the following classifications for each + + boot-start driver: + + • + + • + + • + + • + + + Good: The driver has been signed and has not been tampered with. + + Bad: The driver has been identified as malware. It is recommended that you do + + not allow known bad drivers to be initialized. + + Bad, but required for boot: The driver has been identified as malware, but + + the computer cannot successfully boot without loading this driver. + + Unknown: This driver has not been attested to by your malware detection + + application and has not been classified by the Early Launch Antimalware bootstart driver. + + + If you enable this policy setting you will be able to choose which boot-start drivers to + + initialize the next time the computer is started. + + If your malware detection application does not include an Early Launch Antimalware + + boot-start driver or if your Early Launch Antimalware boot-start driver has been + + disabled, this setting has no effect and all boot-start drivers are initialized. + + The recommended state for this setting is: Enabled: Good, unknown and bad but + + critical.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: `Good, unknown and bad but critical. + + Administrative Templates\System\Early Launch Antimalware\Boot-Start Driver + + Initialization Policy' + +- platform: windows + name: CIS - Ensure 'Continue experiences on this device' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\EnableCdp' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:continue-experiences-on-this-device-is-disabled, cis_safeguard_ids:CIS4.10.19.1 + description: 'This policy setting determines whether the Windows device is allowed to participate in + + cross-device experiences (continue experiences). + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\System\Group Policy\Continue experiences on this + + device' + +- platform: windows + name: CIS - Ensure 'Turn off background refresh of Group Policy' is set to 'Disabled' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\DisableBkGndGroupPolicy' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-background-refresh-of-group-policy-is-disabled, cis_safeguard_ids:CIS4.10.19.2 + description: 'This policy setting prevents Group Policy from being updated while the computer is in + + use. This policy setting applies to Group Policy for computers, users and Domain + + Controllers. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\System\Group Policy\Turn off background refresh of + + Group' + +- platform: windows + name: CIS - Ensure 'Turn off downloading of print drivers over HTTP' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Connectivity/DisableDownloadingOfPrintDriversOverHTTP' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:block-user-from-showing-account-details-on-sign-in-is-enabled, cis_safeguard_ids:CIS4.10.26.1 + description: 'This policy prevents the user from showing account details (email address or user + + name) on the sign-in screen. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Logon\Block user from showing account details + + on sign-in' + +- platform: windows + name: CIS - Ensure 'Do not display network selection UI' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WindowsLogon/DontDisplayNetworkSelectionUI' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:do-not-display-network-selection-ui-is-enabled, cis_safeguard_ids:CIS4.10.26.2 + description: 'This policy setting allows you to control whether anyone can interact with available + + networks UI on the logon screen. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Logon\Do not display network selection UI' + +- platform: windows + name: CIS - Ensure 'Do not enumerate connected users on domain-joined computers' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\DontEnumerateConnectedUsers' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:do-not-enumerate-connected-users-on-domain-joined-computers-is-enabled, cis_safeguard_ids:CIS4.10.26.3 + description: 'This policy setting prevents connected users from being enumerated on domain-joined + + computers. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Logon\Do not enumerate connected users on + + domain-joined computers' + +- platform: windows + name: CIS - Ensure 'Enumerate local users on domain-joined computers' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\EnumerateLocalUsers' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enumerate-local-users-on-domain-joined-computers-is-disabled, cis_safeguard_ids:CIS4.10.26.4 + description: 'This policy setting allows local users to be enumerated on domain-joined computers. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\System\Logon\Enumerate local users on domain-joined + + computers' + +- platform: windows + name: CIS - Ensure 'Turn off app notifications on the lock screen' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/AboveLock/AllowToasts' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-app-notifications-on-the-lock-screen-is-enabled, cis_safeguard_ids:CIS4.10.26.5 + description: 'This policy setting allows you to prevent app notifications from appearing on the lock + + screen. + + The recommended state for this setting is: Enabled. + + Warning: If the Self Service Password Reset (SSPR) feature is used in Microsoft Entra + + ID, an exception to this recommendation is needed as it''s known to interfere with SSPR.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Logon\Turn off app notifications on the lock + + screen' + +- platform: windows + name: CIS - Ensure 'Turn off picture password sign-in' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/CredentialProviders/BlockPicturePassword' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-picture-password-sign-in-is-enabled, cis_safeguard_ids:CIS4.10.26.6 + description: 'This policy setting allows you to control whether a domain user can sign in using a + + picture password. + + The recommended state for this setting is: Enabled. + + Note: If the picture password feature is permitted, the user''s domain password is + + cached in the system vault when using it.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\System\Logon\Turn off picture password sign-in' + +- platform: windows + name: CIS - Ensure 'Turn on convenience PIN sign-in' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/CredentialProviders/AllowPINLogon' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-on-convenience-pin-sign-in-is-disabled, cis_safeguard_ids:CIS4.10.26.7 + description: 'This policy setting allows you to control whether a user can sign in using a convenience + + PIN. + + Note: The user''s password will be cached in the system vault when using this feature. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\System\Logon\Turn on convenience PIN sign-in' + +- platform: windows + name: CIS - Ensure 'Require a password when a computer wakes (on battery)' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Power/RequirePasswordWhenComputerWakesOnBattery' AND mdm_command_output LIKE '%%' AND mdm_command_output LIKE '%value="1"%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:set-the-default-behavior-for-autorun-is-enabled-do-not-execute-any-autorun-commands, cis_safeguard_ids:CIS4.11.6.2 + description: 'This policy setting sets the default behavior for Autorun commands. Autorun commands + + are generally stored in autorun.inf files. They often launch the installation program or + + other routines. + + The recommended state for this setting is: Enabled: Do not execute any autorun + + commands.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Do not execute any autorun commands. + + Administrative Templates\Windows Components\AutoPlay Policies\Set the default + + behavior for AutoRun' + +- platform: windows + name: 'CIS - Ensure ''Turn off Autoplay'' is set to ''Enabled: All drives''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Autoplay/TurnOffAutoPlay' AND mdm_command_output LIKE '%%' AND mdm_command_output LIKE '%value="255"%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-autoplay-is-enabled-all-drives, cis_safeguard_ids:CIS4.11.6.3 + description: 'Autoplay starts to read from a drive as soon as you insert media in the drive, which + + causes the setup file for programs or audio media to start immediately. An attacker + + could use this feature to launch a program to damage the computer or data on the + + computer. Autoplay is disabled by default on some removable drive types, such as + + floppy disk and network drives, but not on CD-ROM drives. + + Note: You cannot use this policy setting to enable Autoplay on computer drives in which + + it is disabled by default, such as floppy disk and network drives. + + The recommended state for this setting is: Enabled: All drives.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: All drives. + + Administrative Templates\Windows Components\AutoPlay Policies\Turn off + + Autoplay' + +- platform: windows + name: CIS - Ensure 'Do not display the password reveal button' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/CredentialsUI/DisablePasswordReveal' AND mdm_command_output LIKE '%enabled%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:do-not-display-the-password-reveal-button-is-enabled, cis_safeguard_ids:CIS4.11.8.1 + description: 'This policy setting allows you to configure the display of the password reveal button in + + password entry user experiences. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Credential User Interface\Do not + + display the password reveal button' + +- platform: windows + name: CIS - Ensure 'Enumerate administrator accounts on elevation' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/CredentialsUI/EnumerateAdministrators' AND mdm_command_output LIKE '%disabled%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enumerate-administrator-accounts-on-elevation-is-disabled, cis_safeguard_ids:CIS4.11.8.2 + description: 'This policy setting controls whether administrator accounts are displayed when a user + + attempts to elevate a running application. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Credential User + + Interface\Enumerate administrator accounts on elevation' + +- platform: windows + name: CIS - Ensure 'Prevent the use of security questions for local accounts' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_CredUI/NoLocalPasswordResetQuestions' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:prevent-the-use-of-security-questions-for-local-accounts-is-enabled, cis_safeguard_ids:CIS4.11.8.3 + description: 'This policy setting controls whether security questions can be used to reset local + + account passwords. The security question feature does not apply to domain accounts, + + only local accounts on the workstation. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Credential User Interface\Prevent + + the use of security questions for local accounts' + +- platform: windows + name: CIS - Ensure 'Enable App Installer Experimental Features' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller\EnableExperimentalFeatures' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-app-installer-experimental-features-is-disabled, cis_safeguard_ids:CIS4.11.10.1 + description: 'This policy setting controls whether users can enable experimental features in the + + Windows Package Manager. + + The recommended state for this setting is Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Administrative Templates\Windows Components\Desktop App Installer\Enable App + + Installer Experimental Features' + +- platform: windows + name: CIS - Ensure 'Enable App Installer Hash Override' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller\EnableHashOverride' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-app-installer-hash-override-is-disabled, cis_safeguard_ids:CIS4.11.10.2 + description: 'This policy setting controls whether or not users can override the SHA256 security + + validation in the Windows Package Manager settings. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Administrative Templates\Windows Components\Desktop App Installer\Enable App + + Installer Hash Override' + +- platform: windows + name: CIS - Ensure 'Enable App Installer ms-appinstaller protocol' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller\EnableMSAppInstallerProtocol' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-app-installer-ms-appinstaller-protocol-is-disabled, cis_safeguard_ids:CIS4.11.10.3 + description: 'This policy setting controls whether users can install packages from a website that is + + using the ms-appinstaller protocol. The ms-appinstaller protocol allows users to + + install an application by clicking a link on a website. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Administrative Templates\Windows Components\Desktop App Installer\Enable App + + Installer ms-appinstaller protocol' + +- platform: windows + name: CIS - Ensure Application 'Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Application\Retention' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:control-event-log-behavior-when-the-log-file-reaches-its-maximum-size-is-disabled, cis_safeguard_ids:CIS4.11.15.1.1 + description: ' + This policy setting controls Event Log behavior when the log file reaches its maximumsize. + + The recommended state for this setting is: Disabled. + + Note: Old events may or may not be retained according to the Backup log automatically + + when full policy setting. + ' + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Event Log + + Service\Application\Control Event Log behavior when the log file reaches its maximum size + ' + +- platform: windows + name: CIS - Ensure Security 'Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Security\Retention' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:control-event-log-behavior-when-the-log-file-reaches-its-maximum-size-is-disabled, cis_safeguard_ids:CIS4.11.15.2.1 + description: ' + This policy setting controls Event Log behavior when the log file reaches its maximumsize. + + The recommended state for this setting is: Disabled. + + Note: Old events may or may not be retained according to the Backup log automatically + + when full policy setting. + ' + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Event Log + + Service\Security\Control Event Log behavior when the log file reaches its maximum size + ' + +- platform: windows + name: CIS - Ensure Event Log Setup 'Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Setup\Retention' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:control-event-log-behavior-when-the-log-file-reaches-its-maximum-size-is-disabled, cis_safeguard_ids:CIS4.11.15.3.1 + description: ' + This policy setting controls Event Log behavior when the log file reaches its maximumsize. + + The recommended state for this setting is: Disabled. + + Note: Old events may or may not be retained according to the Backup log automatically + + when full policy setting. + ' + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Event Log + + Service\Setup\Control Event Log behavior when the log file reaches its maximum size + ' + +- platform: windows + name: CIS - Ensure System 'Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\System\Retention' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:control-event-log-behavior-when-the-log-file-reaches-its-maximum-size-is-disabled, cis_safeguard_ids:CIS4.11.15.4.1 + description: ' + This policy setting controls Event Log behavior when the log file reaches its maximumsize. + + The recommended state for this setting is: Disabled. + + Note: Old events may or may not be retained according to the Backup log automatically + + when full policy setting. + ' + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Event Log + + Service\System\Control Event Log behavior when the log file reaches its maximum size + ' + +- platform: windows + name: CIS - Ensure Application 'Specify the maximum log file size (KB) is set to Enabled and 32,768 or greater' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Application\MaxSize' AND CAST(data AS INTEGER) >= 32768; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:specify-the-maximum-log-file-size-kb-is-enabled-32768-or-greater, cis_safeguard_ids:CIS4.11.15.1.2 + description: ' + This policy setting specifies the maximum size of the log file in kilobytes. The maximum + + log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes + + (4,194,240 kilobytes) in kilobyte increments. + + The recommended state for this setting is: Enabled: 32,768 or greater.' + + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 32,768 or greater. + + Administrative Templates\Windows Components\Event Log + + Service\Application\Specify the maximum log file size (KB).' + +- platform: windows + name: CIS - Ensure Setup 'Specify the maximum log file size (KB) is set to Enabled and 32,768 or greater' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Setup\MaxSize' AND CAST(data AS INTEGER) >= 32768; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:specify-the-maximum-log-file-size-kb-is-enabled-32768-or-greater, cis_safeguard_ids:CIS4.11.15.3.2 + description: ' + This policy setting specifies the maximum size of the log file in kilobytes. The maximum + + log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes + + (4,194,240 kilobytes) in kilobyte increments. + + The recommended state for this setting is: Enabled: 32,768 or greater.' + + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 32,768 or greater. + + Administrative Templates\Windows Components\Event Log + + Service\Setup\Specify the maximum log file size (KB).' + +- platform: windows + name: CIS - Ensure System 'Specify the maximum log file size (KB) is set to Enabled and 32,768 or greater' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\System\MaxSize' AND CAST(data AS INTEGER) >= 32768; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:specify-the-maximum-log-file-size-kb-is-enabled-32768-or-greater, cis_safeguard_ids:CIS4.11.15.4.2 + description: ' + This policy setting specifies the maximum size of the log file in kilobytes. The maximum + + log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes + + (4,194,240 kilobytes) in kilobyte increments. + + The recommended state for this setting is: Enabled: 32,768 or greater.' + + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 32,768 or greater. + + Administrative Templates\Windows Components\Event Log + + Service\System\Specify the maximum log file size (KB).' + +- platform: windows + name: 'CIS - Ensure ''Specify the maximum log file size (KB)'' is set to ''Enabled: 196,608 or greater''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\EventLog\Security\MaxSize' AND CAST(data AS INTEGER) >= 196608; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:specify-the-maximum-log-file-size-kb-is-enabled-196608-or-greater, cis_safeguard_ids:CIS4.11.15.2.2 + description: 'This policy setting specifies the maximum size of the log file in kilobytes. The maximum + + log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes + + (4,194,240 kilobytes) in kilobyte increments. + + The recommended state for this setting is: Enabled: 196,608 or greater.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 196,608 or greater. + + Administrative Templates\Windows Components\Event Log + + Service\Security\Specify the maximum log file size (KB)' + +- platform: windows + name: 'CIS - Ensure ''Configure Windows Defender SmartScreen'' is set to ''Enabled: Warn and prevent bypass''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\EnableSmartScreen' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:configure-windows-defender-smartscreen-is-enabled-warn-and-prevent-bypass, cis_safeguard_ids:CIS4.11.18.1 + description: 'This policy setting allows you to manage the behavior of Windows Defender + + SmartScreen. Windows Defender SmartScreen helps keep PCs safer by warning users + + before running unrecognized programs downloaded from the Internet. Some information + + is sent to Microsoft about files and programs run on PCs with this feature enabled. + + The recommended state for this setting is: Enabled: Warn and prevent bypass.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Warn and prevent bypass. + + Administrative Templates\Windows Components\File Explorer\Configure Windows + + Defender SmartScreen' + +- platform: windows + name: CIS - Ensure 'Turn off Data Execution Prevention for Explorer' is set to 'Disabled' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer\NoDataExecutionPrevention' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-data-execution-prevention-for-explorer-is-disabled, cis_safeguard_ids:CIS4.11.18.2 + description: 'Disabling Data Execution Prevention can allow certain legacy plug-in applications to + + function without terminating Explorer. + + The recommended state for this setting is: Disabled. + + Note: Some legacy plug-in applications and other software may not function with Data + + Execution Prevention and will require an exception to be defined for that specific plugin/software.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\File Explorer\Turn off Data + + Execution Prevention for Explorer' + +- platform: windows + name: CIS - Ensure 'Turn off heap termination on corruption' is set to 'Disabled' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer\DisableHeapTerminationOnCorruption' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-heap-termination-on-corruption-is-disabled, cis_safeguard_ids:CIS4.11.18.3 + description: 'Without heap termination on corruption, legacy plug-in applications may continue to + + function when a File Explorer session has become corrupt. Ensuring that heap + + termination on corruption is active will prevent this. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\File Explorer\Turn off heap + + termination on corruption' + +- platform: windows + name: CIS - Ensure 'Turn off shell protocol protected mode' is set to 'Disabled' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer\PreXPSP2ShellProtocolBehavior' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:turn-off-shell-protocol-protected-mode-is-disabled, cis_safeguard_ids:CIS4.11.18.4 + description: 'This policy setting allows you to configure the amount of functionality that the shell + + protocol can have. When using the full functionality of this protocol, applications can + + open folders and launch files. The protected mode reduces the functionality of this + + protocol allowing applications to only open a limited set of folders. Applications are not + + able to open files with this protocol when it is in the protected mode. It is recommended + + to leave this protocol in the protected mode to increase the security of Windows. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\File Explorer\Turn off shell + + protocol protected mode' + +- platform: windows + name: CIS - Ensure 'Block all consumer Microsoft account user authentication' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MicrosoftAccount\DisableUserAuth' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:block-all-consumer-microsoft-account-user-authentication-is-enabled, cis_safeguard_ids:CIS4.11.27.1 + description: 'This setting determines whether applications and services on the device can utilize new + + consumer Microsoft account authentication via the Windows OnlineID and + + WebAccountManager APIs. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Microsoft accounts\Block all + + consumer Microsoft account user authentication' + +- platform: windows + name: CIS - Ensure 'Configure local setting override for reporting to Microsoft MAPS' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet\LocalSettingOverrideSpynetReporting' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:configure-local-setting-override-for-reporting-to-microsoft-maps-is-disabled, cis_safeguard_ids:CIS4.11.28.3.1 + description: 'This policy setting configures a local override for the configuration to join Microsoft + + Active Protection Service (MAPS), which Microsoft renamed to Windows Defender + + Antivirus Cloud Protection Service and then Microsoft Defender Antivirus Cloud + + Protection Service. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Microsoft Defender + + Antivirus\MAPS\Configure local setting override for reporting to Microsoft + + MAPS' + +- platform: windows + name: CIS - Ensure 'Prevent users from sharing files within their profile. (User)' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoInplaceSharing' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:network, requirement:standard, critical:false, control:prevent-users-from-sharing-files-within-their-profile-user-is-enabled, cis_safeguard_ids:CIS4.11.31.1 + description: 'This policy setting determines whether users can share files within their profile. By + + default, users are allowed to share files within their profile to other users on their + + network after an administrator opts in the computer. An administrator can opt in the + + computer by using the sharing wizard to share a file within their profile. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Network Sharing\Prevent users + + from sharing files within their profile. (User)' + +- platform: windows + name: CIS - Ensure 'Do not allow passwords to be saved' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\DisablePasswordSaving' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:remote, requirement:standard, critical:false, control:do-not-allow-passwords-to-be-saved-is-enabled, cis_safeguard_ids:CIS4.11.36.3.2 + description: 'This policy setting helps prevent Remote Desktop clients from saving passwords on a + + computer. + + The recommended state for this setting is: Enabled. + + Note: If this policy setting was previously configured as Disabled or Not configured, any + + previously saved passwords will be deleted the first time a Remote Desktop client + + disconnects from any server.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Remote Desktop Services\Remote + + Desktop Connection Client\Do not allow passwords to be saved' + +- platform: windows + name: CIS - Ensure 'Do not allow drive redirection' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableCdm' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:do-not-allow-drive-redirection-is-enabled, cis_safeguard_ids:CIS4.11.36.4.3.2 + description: 'This policy setting prevents users from sharing the local drives on their client computers + + to Remote Desktop Servers that they access. Mapped drives appear in the session + + folder tree in Windows Explorer in the following format: + + \\TSClient\$ + + If local drives are shared they are left vulnerable to intruders who want to exploit the + + data that is stored on them. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Remote Desktop Services\Remote + + Desktop Session Host\Device and Resource Redirection\Do not allow drive + + redirection' + +- platform: windows + name: CIS - Ensure 'Always prompt for password upon connection' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fPromptForPassword' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:always-prompt-for-password-upon-connection-is-enabled, cis_safeguard_ids:CIS4.11.36.4.9.1 + description: 'This policy setting specifies whether Remote Desktop Services always prompts the + + client computer for a password upon connection. You can use this policy setting to + + enforce a password prompt for users who log on to Remote Desktop Services, even if + + they already provided the password in the Remote Desktop Connection client. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Remote Desktop Services\Remote + + Desktop Session Host\Security\Always prompt for password upon connection' + +- platform: windows + name: CIS - Ensure 'Require secure RPC communication' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/RemoteDesktopServices/RequireSecureRPCCommunication' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-mpr-notifications-for-the-system-is-disabled, cis_safeguard_ids:CIS4.11.50.1 + description: 'This policy setting controls whether winlogon sends Multiple Provider Router (MPR) + + notifications. MPR handles communication between the Windows operating system and + + the installed network providers. MPR checks the registry to determine which providers + + are installed on the system and the order they are cycled through. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Administrative Templates\Windows Components\Windows Logon Options\Enable MPR + + notifications for the system' + +- platform: windows + name: CIS - Ensure 'Sign-in and lock last interactive user automatically after a restart' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WindowsLogon/AllowAutomaticRestartSignOn' AND mdm_command_output LIKE '%%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:sign-in-and-lock-last-interactive-user-automatically-after-a-restart-is-disabled, cis_safeguard_ids:CIS4.11.50.2 + description: 'This policy setting controls whether a device will automatically sign-in the last interactive + + user after Windows Update restarts the system. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Windows Logon Options\Sign-in and + + lock last interactive user automatically after a restart' + +- platform: windows + name: CIS - Ensure Client 'Allow Basic authentication is set to Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client\AllowBasic' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-basic-authentication-is-disabled, cis_safeguard_ids:CIS4.11.55.1.1 + description: ' + + This policy setting allows you to manage whether the Windows Remote Management + + (WinRM) client uses Basic authentication. + + The recommended state for this setting is: Disabled. + + Note: Clients that use Microsoft''s Exchange Online service (Office 365) will require an + + exception to this recommendation, to instead have this setting set to Enabled. + + Exchange Online uses Basic authentication over HTTPS, and so the Exchange Online + + authentication traffic will still be safely encrypted.' + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Windows Remote Management + + (WinRM)\WinRM Client\Allow Basic authentication' + +- platform: windows + name: CIS - Ensure Service 'Allow Basic authentication is set to Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WinRM\Service\AllowBasic' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-basic-authentication-is-disabled, cis_safeguard_ids:CIS4.11.55.2.1 + description: ' + This policy setting allows you to manage whether the Windows Remote Management + + (WinRM) service accepts Basic authentication from a remote client. + + The recommended state for this setting is: Disabled.' + + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Windows Remote Management + + (WinRM)\WinRM Service\Allow Basic authentication' + +- platform: windows + name: CIS - Ensure Client 'Allow unencrypted traffic' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client\AllowUnencryptedTraffic' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-unencrypted-traffic-is-disabled, cis_safeguard_ids:CIS4.11.55.1.2 + description: ' + + This policy setting allows you to manage whether the Windows Remote Management + + (WinRM) client sends and receives unencrypted messages over the network. + + The recommended state for this setting is: Disabled.' + + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Windows Remote Management + + (WinRM)\WinRM Client\Allow unencrypted traffic' + +- platform: windows + name: CIS - Ensure Service 'Allow unencrypted traffic' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WinRM\Service\AllowUnencryptedTraffic' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-unencrypted-traffic-is-disabled, cis_safeguard_ids:CIS4.11.55.2.3 + description: ' + + This policy setting allows you to manage whether the Windows Remote Management + + (WinRM) service sends and receives unencrypted messages over the network. + + The recommended state for this setting is: Disabled.' + + resolution: ' + + To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + Administrative Templates\Windows Components\Windows Remote Management + + (WinRM)\WinRM Service\Allow unencrypted traffic' + +- platform: windows + name: CIS - Ensure 'Disallow Digest authentication' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client\AllowDigest' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:disallow-digest-authentication-is-enabled, cis_safeguard_ids:CIS4.11.55.1.3 + description: 'This policy setting allows you to manage whether the Windows Remote Management + + (WinRM) client will not use Digest authentication. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Windows Remote Management + + (WinRM)\WinRM Client\Disallow Digest authentication' + +- platform: windows + name: CIS - Ensure 'Disallow WinRM from storing RunAs credentials' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WinRM\Service\DisableRunAs' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:disallow-winrm-from-storing-runas-credentials-is-enabled, cis_safeguard_ids:CIS4.11.55.2.4 + description: 'This policy setting allows you to manage whether the Windows Remote Management + + (WinRM) service will allow RunAs credentials to be stored for any plug-ins. + + The recommended state for this setting is: Enabled. + + Note: If you enable and then disable this policy setting, any values that were previously + + configured for RunAsPassword will need to be reset.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Administrative Templates\Windows Components\Windows Remote Management + + (WinRM)\WinRM Service\Disallow WinRM from storing RunAs credentials' + +- platform: windows + name: CIS - Ensure 'Account Logon Audit Credential Validation' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogon_AuditCredentialValidation' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:account-logon-audit-credential-validation-is-success-and-failure, cis_safeguard_ids:CIS6.1 + description: 'This subcategory reports the results of validation tests on credentials submitted for a + + user account logon request. These events occur on the computer that is authoritative for + + the credentials. For domain accounts, the Domain Controller is authoritative, whereas + + for local accounts, the local computer is authoritative. In domain environments, most of + + the Account Logon events occur in the Security log of the Domain Controllers that are + + authoritative for the domain accounts. However, these events can occur on other + + computers in the organization when local accounts are used to log on. Events for this + + subcategory include: + + • + + • + + • + + • + + + 4774: An account was mapped for logon. + + 4775: An account could not be mapped for logon. + + 4776: The Domain Controller attempted to validate the credentials for an + + account. + + 4777: The Domain Controller failed to validate the credentials for an account. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Account Logon Audit Credential Validation' + +- platform: windows + name: CIS - Ensure 'Account Logon Logoff Audit Account Lockout' is set to include 'Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogonLogoff_AuditAccountLockout' AND (mdm_command_output = '2' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.2 + description: 'This subcategory reports when a user''s account is locked out as a result of too many + + failed logon attempts. Events for this subcategory include: + + • + + + 4625: An account failed to log on. + + + The recommended state for this setting is to include: Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Failure. + + Auditing\Account Logon Logoff Audit Account Lockout' + +- platform: windows + name: CIS - Ensure 'Account Logon Logoff Audit Group Membership' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogonLogoff_AuditGroupMembership' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.3 + description: 'This policy allows you to audit the group membership information in the user’s logon + + token. Events in this subcategory are generated on the computer on which a logon + + session is created. For an interactive logon, the security audit event is generated on the + + computer that the user logged on to. For a network logon, such as accessing a shared + + folder on the network, the security audit event is generated on the computer hosting the + + resource. + + The recommended state for this setting is to include: Success. + + Note: A Windows 10, Server 2016 or newer OS is required to access and set this value + + in Group Policy.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Account Logon Logoff Audit Group Membership' + +- platform: windows + name: CIS - Ensure 'Account Logon Logoff Audit Logoff' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogonLogoff_AuditLogoff' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.4 + description: 'This subcategory reports when a user logs off from the system. These events occur on + + the accessed computer. For interactive logons, the generation of these events occurs + + on the computer that is logged on to. If a network logon takes place to access a share, + + these events generate on the computer that hosts the accessed resource. If you + + configure this setting to No auditing, it is difficult or impossible to determine which user + + has accessed or attempted to access organization computers. Events for this + + subcategory include: + + • + + • + + + 4634: An account was logged off. + + 4647: User initiated logoff. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Account Logon Logoff Audit Logoff' + +- platform: windows + name: CIS - Ensure 'Account Logon Logoff Audit Logon' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogonLogoff_AuditLogon' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:account-logon-logoff-audit-logon-is-success-and-failure, cis_safeguard_ids:CIS6.5 + description: 'This subcategory reports when a user attempts to log on to the system. These events + + occur on the accessed computer. For interactive logons, the generation of these events + + occurs on the computer that is logged on to. If a network logon takes place to access a + + share, these events generate on the computer that hosts the accessed resource. If you + + configure this setting to No auditing, it is difficult or impossible to determine which user + + has accessed or attempted to access organization computers. Events for this + + subcategory include: + + • + + • + + • + + • + + + 4624: An account was successfully logged on. + + 4625: An account failed to log on. + + 4648: A logon was attempted using explicit credentials. + + 4675: SIDs were filtered. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Account Logon Logoff Audit Logon' + +- platform: windows + name: CIS - Ensure 'Account Management Audit Application Group Management' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditApplicationGroupManagement' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:account-management-audit-application-group-management-is-success-and-failure, cis_safeguard_ids:CIS6.6 + description: 'This policy setting allows you to audit events generated by changes to application + + groups such as the following: + + • + + • + + + Application group is created, changed, or deleted. + + Member is added or removed from an application group. + + + Application groups are utilized by Windows Authorization Manager, which is a flexible + + framework created by Microsoft for integrating role-based access control (RBAC) into + + applications. More information on Windows Authorization Manager is available at MSDN + + - Windows Authorization Manager. + + The recommended state for this setting is: Success and Failure. + + Note: Although Microsoft "Deprecated" Windows Authorization Manager (AzMan) in + + Windows Server 2012 and 2012 R2, this feature still exists in the OS (unimproved), and + + therefore should still be audited.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Account Management Audit Application Group Management' + +- platform: windows + name: CIS - Ensure 'Audit Authentication Policy Change' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditAuthenticationPolicyChange' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.7 + description: 'This subcategory reports changes in authentication policy. Events for this subcategory + + include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 4706: A new trust was created to a domain. + + 4707: A trust to a domain was removed. + + 4713: Kerberos policy was changed. + + 4716: Trusted domain information was modified. + + 4717: System security access was granted to an account. + + 4718: System security access was removed from an account. + + 4739: Domain Policy was changed. + + 4864: A namespace collision was detected. + + 4865: A trusted forest information entry was added. + + 4866: A trusted forest information entry was removed. + + 4867: A trusted forest information entry was modified. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Audit Authentication Policy Change' + +- platform: windows + name: CIS - Ensure 'Audit Authorization Policy Change' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditAuthorizationPolicyChange' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.8 + description: 'This subcategory reports changes in authorization policy. Events for this subcategory + + include: + + • + + • + + • + + • + + • + + • + + + 4703: A user right was adjusted. + + 4704: A user right was assigned. + + 4705: A user right was removed. + + 4670: Permissions on an object were changed. + + 4911: Resource attributes of the object were changed. + + 4913: Central Access Policy on the object was changed. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Audit Authorization Policy Change' + +- platform: windows + name: CIS - Ensure 'Audit Changes to Audit Policy' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditPolicyChange' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.9 + description: 'This subcategory reports changes in audit policy including SACL changes. Events for + + this subcategory include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 4715: The audit policy (SACL) on an object was changed. + + 4719: System audit policy was changed. + + 4902: The Per-user audit policy table was created. + + 4904: An attempt was made to register a security event source. + + 4905: An attempt was made to unregister a security event source. + + 4906: The CrashOnAuditFail value has changed. + + 4907: Auditing settings on object were changed. + + 4908: Special Groups Logon table modified. + + 4912: Per User Audit Policy was changed. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Audit Changes to Audit Policy' + +- platform: windows + name: CIS - Ensure 'Audit File Share Access' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditFileShare' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:audit-file-share-access-is-success-and-failure, cis_safeguard_ids:CIS6.10 + description: 'This policy setting allows you to audit attempts to access a shared folder. + + The recommended state for this setting is: Success and Failure. + + Note: There are no system access control lists (SACLs) for shared folders. If this policy + + setting is enabled, access to all shared folders on the system is audited.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Audit File Share Access' + +- platform: windows + name: CIS - Ensure 'Audit Other Logon Logoff Events' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogonLogoff_AuditOtherLogonLogoffEvents' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:audit-other-logon-logoff-events-is-success-and-failure, cis_safeguard_ids:CIS6.11 + description: 'This subcategory reports other logon/logoff-related events, such as Remote Desktop + + Services session disconnects and reconnects, using RunAs to run processes under a + + different account, and locking and unlocking a workstation. Events for this subcategory + + include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 4649: A replay attack was detected. + + 4778: A session was reconnected to a Window Station. + + 4779: A session was disconnected from a Window Station. + + 4800: The workstation was locked. + + 4801: The workstation was unlocked. + + 4802: The screen saver was invoked. + + 4803: The screen saver was dismissed. + + 5378: The requested credentials delegation was disallowed by policy. + + 5632: A request was made to authenticate to a wireless network. + + 5633: A request was made to authenticate to a wired network. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Audit Other Logon Logoff Events' + +- platform: windows + name: CIS - Ensure 'Audit Security Group Management' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditSecurityGroupManagement' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.12 + description: 'This subcategory reports each event of security group management, such as when a + + security group is created, changed, or deleted or when a member is added to or + + removed from a security group. If you enable this Audit policy setting, administrators + + can track events to detect malicious, accidental, and authorized creation of security + + group accounts. Events for this subcategory include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 4727: A security-enabled global group was created. + + 4728: A member was added to a security-enabled global group. + + 4729: A member was removed from a security-enabled global group. + + 4730: A security-enabled global group was deleted. + + 4731: A security-enabled local group was created. + + 4732: A member was added to a security-enabled local group. + + 4733: A member was removed from a security-enabled local group. + + 4734: A security-enabled local group was deleted. + + 4735: A security-enabled local group was changed. + + 4737: A security-enabled global group was changed. + + 4754: A security-enabled universal group was created. + + 4755: A security-enabled universal group was changed. + + 4756: A member was added to a security-enabled universal group. + + 4757: A member was removed from a security-enabled universal group. + + 4758: A security-enabled universal group was deleted. + + 4764: A group''s type was changed. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Audit Security Group Management' + +- platform: windows + name: CIS - Ensure 'Audit Security System Extension' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSecuritySystemExtension' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.13 + description: 'This subcategory reports the loading of extension code such as authentication + + packages by the security subsystem. Events for this subcategory include: + + • + + • + + • + + • + + • + + + 4610: An authentication package has been loaded by the Local Security + + Authority. + + 4611: A trusted logon process has been registered with the Local Security + + Authority. + + 4614: A notification package has been loaded by the Security Account Manager. + + 4622: A security package has been loaded by the Local Security Authority. + + 4697: A service was installed in the system. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Audit Security System Extension' + +- platform: windows + name: CIS - Ensure 'Audit Special Logon' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogonLogoff_AuditSpecialLogon' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.14 + description: 'This subcategory reports when a special logon is used. A special logon is a logon that + + has administrator-equivalent privileges and can be used to elevate a process to a higher + + level. Events for this subcategory include: + + • + + + 4964: Special groups have been assigned to a new logon. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Audit Special Logon' + +- platform: windows + name: CIS - Ensure 'Audit User Account Management' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditUserAccountManagement' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:audit-user-account-management-is-success-and-failure, cis_safeguard_ids:CIS6.15 + description: 'This subcategory reports each event of user account management, such as when a + + user account is created, changed, or deleted; a user account is renamed, disabled, or + + enabled; or a password is set or changed. If you enable this Audit policy setting, + + administrators can track events to detect malicious, accidental, and authorized creation + + of user accounts. Events for this subcategory include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 4720: A user account was created. + + 4722: A user account was enabled. + + 4723: An attempt was made to change an account''s password. + + 4724: An attempt was made to reset an account''s password. + + 4725: A user account was disabled. + + 4726: A user account was deleted. + + 4738: A user account was changed. + + 4740: A user account was locked out. + + 4765: SID History was added to an account. + + 4766: An attempt to add SID History to an account failed. + + 4767: A user account was unlocked. + + 4780: The ACL was set on accounts which are members of administrators + + groups. + + 4781: The name of an account was changed: + + 4794: An attempt was made to set the Directory Services Restore Mode. + + 5376: Credential Manager credentials were backed up. + + 5377: Credential Manager credentials were restored from a backup. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Audit User Account Management' + +- platform: windows + name: CIS - Ensure 'Detailed Tracking Audit PNP Activity' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/DetailedTracking_AuditPNPActivity' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.16 + description: 'This policy setting allows you to audit when plug and play detects an external device. + + The recommended state for this setting is to include: Success. + + Note: A Windows 10, Server 2016 or newer OS is required to access and set this value + + in Group Policy.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Detailed Tracking Audit PNP Activity' + +- platform: windows + name: CIS - Ensure 'Detailed Tracking Audit Process Creation' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/DetailedTracking_AuditProcessCreation' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.17 + description: 'This subcategory reports the creation of a process and the name of the program or user + + that created it. Events for this subcategory include: + + • + + • + + + 4688: A new process has been created. + + 4696: A primary token was assigned to process. + + + Refer to Microsoft Knowledge Base article 947226: Description of security events in + + Windows Vista and in Windows Server 2008 for the most recent information about this + + setting. + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\Detailed Tracking Audit Process Creation' + +- platform: windows + name: CIS - Ensure 'Object Access Audit Detailed File Share' is set to include 'Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditDetailedFileShare' AND (mdm_command_output = '2' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.18 + description: 'This subcategory allows you to audit attempts to access files and folders on a shared + + folder. Events for this subcategory include: + + • + + + 5145: network share object was checked to see whether client can be granted + + desired access. + + + The recommended state for this setting is to include: Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Failure. + + Auditing\Object Access Audit Detailed File Share' + +- platform: windows + name: CIS - Ensure 'Object Access Audit Other Object Access Events' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditOtherObjectAccessEvents' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:network, requirement:standard, critical:false, control:object-access-audit-other-object-access-events-is-success-and-failure, cis_safeguard_ids:CIS6.19 + description: 'This policy setting allows you to audit events generated by the management of task + + scheduler jobs or COM+ objects. + + For scheduler jobs, the following are audited: + + • + + • + + • + + • + + • + + + Job created. + + Job deleted. + + Job enabled. + + Job disabled. + + Job updated. + + + For COM+ objects, the following are audited: + + • + + • + + • + + + Catalog object added. + + Catalog object updated. + + Catalog object deleted. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Object Access Audit Other Object Access Events' + +- platform: windows + name: CIS - Ensure 'Object Access Audit Removable Storage' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditRemovableStorage' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:object-access-audit-removable-storage-is-success-and-failure, cis_safeguard_ids:CIS6.20 + description: 'This policy setting allows you to audit user attempts to access file system objects on a + + removable storage device. A security audit event is generated only for all objects for all + + types of access requested. If you configure this policy setting, an audit event is + + generated each time an account accesses a file system object on a removable storage. + + Success audits record successful attempts and Failure audits record unsuccessful + + attempts. If you do not configure this policy setting, no audit event is generated when an + + account accesses a file system object on a removable storage. + + The recommended state for this setting is: Success and Failure. + + Note: A Windows 8.0, Server 2012 (non-R2) or newer OS is required to access and set + + this value in Group Policy.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Object Access Audit Removable Storage' + +- platform: windows + name: CIS - Ensure 'Policy Change Audit MPSSVC Rule Level Policy Change' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditMPSSVCRuleLevelPolicyChange' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:policy-change-audit-mpssvc-rule-level-policy-change-is-success-and-failure, cis_safeguard_ids:CIS6.21 + description: 'This subcategory determines whether the operating system generates audit events + + when changes are made to policy rules for the Microsoft Protection Service + + (MPSSVC.exe). Events for this subcategory include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 4944: The following policy was active when the Windows Firewall started. + + 4945: A rule was listed when the Windows Firewall started. + + 4946: A change has been made to Windows Firewall exception list. A rule was + + added. + + 4947: A change has been made to Windows Firewall exception list. A rule was + + modified. + + 4948: A change has been made to Windows Firewall exception list. A rule was + + deleted. + + 4949: Windows Firewall settings were restored to the default values. + + 4950: A Windows Firewall setting has changed. + + 4951: A rule has been ignored because its major version number was not + + recognized by Windows Firewall. + + 4952: Parts of a rule have been ignored because its minor version number was + + not recognized by Windows Firewall. The other parts of the rule will be enforced. + + 4953: A rule has been ignored by Windows Firewall because it could not parse + + the rule. + + 4954: Windows Firewall Group Policy settings have changed. The new settings + + have been applied. + + 4956: Windows Firewall has changed the active profile. + + 4957: Windows Firewall did not apply the following rule. + + 4958: Windows Firewall did not apply the following rule because the rule referred + + to items not configured on this computer. + + + The recommended state for this setting is: Success and Failure' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Policy Change Audit MPSSVC Rule Level Policy Change' + +- platform: windows + name: CIS - Ensure 'Policy Change Audit Other Policy Change Events' is set to include 'Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditOtherPolicyChangeEvents' AND (mdm_command_output = '2' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.22 + description: 'This subcategory contains events about EFS Data Recovery Agent policy changes, + + changes in Windows Filtering Platform filter, status on Security policy settings updates + + for local Group Policy settings, Central Access Policy changes, and detailed + + troubleshooting events for Cryptographic Next Generation (CNG) operations. Events for + + this subcategory include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 5063: A cryptographic provider operation was attempted. + + 5064: A cryptographic context operation was attempted. + + 5065: A cryptographic context modification was attempted. + + 5066: A cryptographic function operation was attempted. + + 5067: A cryptographic function modification was attempted. + + 5068: A cryptographic function provider operation was attempted. + + 5069: A cryptographic function property operation was attempted. + + 5070: A cryptographic function property modification was attempted. + + 6145: One or more errors occurred while processing security policy in the group + + policy objects. + + + The recommended state for this setting is to include: Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Failure. + + Auditing\Policy Change Audit Other Policy Change Events' + +- platform: windows + name: CIS - Ensure 'Privilege Use Audit Sensitive Privilege Use' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/PrivilegeUse_AuditSensitivePrivilegeUse' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:privilege-use-audit-sensitive-privilege-use-is-success-and-failure, cis_safeguard_ids:CIS6.23 + description: 'This subcategory reports when a user account or service uses a sensitive privilege. A + + sensitive privilege includes the following user rights: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + Act as part of the operating system + + Back up files and directories + + Create a token object + + Debug programs + + Enable computer and user accounts to be trusted for delegation + + Generate security audits + + Impersonate a client after authentication + + Load and unload device drivers + + Manage auditing and security log + + Modify firmware environment values + + Replace a process-level token + + Restore files and directories + + Take ownership of files or other objects + + + Auditing this subcategory will create a high volume of events. Events for this + + subcategory include: + + • + + • + + • + + + 4672: Special privileges assigned to new logon. + + 4673: A privileged service was called. + + 4674: An operation was attempted on a privileged object. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\Privilege Use Audit Sensitive Privilege Use' + +- platform: windows + name: CIS - Ensure 'System Audit I Psec Driver' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditIPsecDriver' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:system-audit-i-psec-driver-is-success-and-failure, cis_safeguard_ids:CIS6.24 + description: 'This subcategory reports on the activities of the Internet Protocol security (IPsec) driver. + + Events for this subcategory include: + + • + + + • + + • + + • + + + • + + + • + + • + + + • + + + • + + + 4960: IPsec dropped an inbound packet that failed an integrity check. If this + + problem persists, it could indicate a network issue or that packets are being + + modified in transit to this computer. Verify that the packets sent from the remote + + computer are the same as those received by this computer. This error might also + + indicate interoperability problems with other IPsec implementations. + + 4961: IPsec dropped an inbound packet that failed a replay check. If this problem + + persists, it could indicate a replay attack against this computer. + + 4962: IPsec dropped an inbound packet that failed a replay check. The inbound + + packet had too low a sequence number to ensure it was not a replay. + + 4963: IPsec dropped an inbound clear text packet that should have been + + secured. This is usually due to the remote computer changing its IPsec policy + + without informing this computer. This could also be a spoofing attack attempt. + + 4965: IPsec received a packet from a remote computer with an incorrect Security + + Parameter Index (SPI). This is usually caused by malfunctioning hardware that is + + corrupting packets. If these errors persist, verify that the packets sent from the + + remote computer are the same as those received by this computer. This error + + may also indicate interoperability problems with other IPsec implementations. In + + that case, if connectivity is not impeded, then these events can be ignored. + + 5478: IPsec Services has started successfully. + + 5479: IPsec Services has been shut down successfully. The shutdown of IPsec + + Services can put the computer at greater risk of network attack or expose the + + computer to potential security risks. + + 5480: IPsec Services failed to get the complete list of network interfaces on the + + computer. This poses a potential security risk because some of the network + + interfaces may not get the protection provided by the applied IPsec filters. Use + + the IP Security Monitor snap-in to diagnose the problem. + + 5483: IPsec Services failed to initialize RPC server. IPsec Services could not be + + started. + + • + + + • + + + 5484: IPsec Services has experienced a critical failure and has been shut down. + + The shutdown of IPsec Services can put the computer at greater risk of network + + attack or expose the computer to potential security risks. + + 5485: IPsec Services failed to process some IPsec filters on a plug-and-play + + event for network interfaces. This poses a potential security risk because some + + of the network interfaces may not get the protection provided by the applied + + IPsec filters. Use the IP Security Monitor snap-in to diagnose the problem. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\System Audit I Psec Driver' + +- platform: windows + name: CIS - Ensure 'System Audit Other System Events' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditOtherSystemEvents' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:system-audit-other-system-events-is-success-and-failure, cis_safeguard_ids:CIS6.25 + description: 'This subcategory reports on other system events. Events for this subcategory include: + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + • + + + 5024: The Windows Firewall Service has started successfully. + + 5025: The Windows Firewall Service has been stopped. + + 5027: The Windows Firewall Service was unable to retrieve the security policy + + from the local storage. The service will continue enforcing the current policy. + + 5028: The Windows Firewall Service was unable to parse the new security + + policy. The service will continue with currently enforced policy. + + 5029: The Windows Firewall Service failed to initialize the driver. The service will + + continue to enforce the current policy. + + 5030: The Windows Firewall Service failed to start. + + 5032: Windows Firewall was unable to notify the user that it blocked an + + application from accepting incoming connections on the network. + + 5033: The Windows Firewall Driver has started successfully. + + 5034: The Windows Firewall Driver has been stopped. + + 5035: The Windows Firewall Driver failed to start. + + 5037: The Windows Firewall Driver detected critical runtime error. Terminating. + + 5058: Key file operation. + + 5059: Key migration operation. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\System Audit Other System Events' + +- platform: windows + name: CIS - Ensure 'System Audit Security State Change' is set to include 'Success' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSecurityStateChange' AND (mdm_command_output = '1' OR mdm_command_output = '3'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS6.26 + description: 'This subcategory reports changes in security state of the system, such as when the + + security subsystem starts and stops. Events for this subcategory include: + + • + + • + + • + + • + + + 4608: Windows is starting up. + + 4609: Windows is shutting down. + + 4616: The system time was changed. + + 4621: Administrator recovered system from CrashOnAuditFail. Users who are not + + administrators will now be allowed to log on. Some audit-able activity might not + + have been recorded. + + + The recommended state for this setting is to include: Success.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success. + + Auditing\System Audit Security State Change' + +- platform: windows + name: CIS - Ensure 'System Audit System Integrity' is set to 'Success and Failure' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSystemIntegrity' AND mdm_command_output = '3'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:system-audit-system-integrity-is-success-and-failure, cis_safeguard_ids:CIS6.27 + description: 'This subcategory reports on violations of integrity of the security subsystem. Events for + + this subcategory include: + + • + + • + + • + + • + + • + + + • + + • + + • + + • + + • + + + 4612: Internal resources allocated for the queuing of audit messages have been + + exhausted, leading to the loss of some audits. + + 4615: Invalid use of LPC port. + + 4618: A monitored security event pattern has occurred. + + 4816: RPC detected an integrity violation while decrypting an incoming message. + + 5038: Code integrity determined that the image hash of a file is not valid. The file + + could be corrupt due to unauthorized modification or the invalid hash could + + indicate a potential disk device error. + + 5056: A cryptographic self test was performed. + + 5057: A cryptographic primitive operation failed. + + 5060: Verification operation failed. + + 5061: Cryptographic operation. + + 5062: A kernel-mode cryptographic self test was performed. + + + The recommended state for this setting is: Success and Failure.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Success and Failure. + + Auditing\System Audit System Integrity' + +- platform: windows + name: CIS - Ensure 'Config refresh' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Enrollments\%\ConfigRefresh\Enabled' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:config-refresh-is-enabled, cis_safeguard_ids:CIS15.1 + description: 'This policy setting determines whether or not MDM policies are refreshed on the + + system. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + Config Refresh\Config refresh' + +- platform: windows + name: CIS - Ensure 'Refresh cadence' is set to '90' (or less) + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_GroupPolicy/CSE_NOBACKGROUND' AND mdm_command_output LIKE '%90%') OR EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\GroupPolicyRefreshTime' AND data = '90'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS15.2 + description: 'This policy setting determines how often MDM policies are refreshed on the system. + + The recommended state for this setting is: 90 (or less).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 90 (or less). + + Config Refresh\Refresh cadence + + + Note: The shortest configurable refresh interval is 30 minutes.' + +- platform: windows + name: CIS - Ensure 'Allow Behavior Monitoring' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AllowBehaviorMonitoring' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-behavior-monitoring-is-allowed, cis_safeguard_ids:CIS22.1 + description: 'This policy setting allows you to configure behavior monitoring for Microsoft Defender + + Antivirus. + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed. + + Defender\Allow Behavior Monitoring' + +- platform: windows + name: CIS - Ensure 'Allow Email Scanning' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AllowEmailScanning' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-email-scanning-is-allowed, cis_safeguard_ids:CIS22.2 + description: 'This policy setting allows you to configure e-mail scanning. When e-mail scanning is + + enabled, the engine will parse the mailbox and mail files, according to their specific + + format, in order to analyze the mail bodies and attachments. Several e-mail formats are + + currently supported, for example: pst (Outlook), dbx, mbx, mime (Outlook Express), + + binhex (Mac). + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed. + + Defender\Allow Email Scanning' + +- platform: windows + name: CIS - Ensure 'Allow Full Scan Removable Drive Scanning' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AllowFullScanRemovableDriveScanning' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-full-scan-removable-drive-scanning-is-allowed, cis_safeguard_ids:CIS22.3 + description: 'This policy setting allows you to manage whether or not to scan for malicious software + + and unwanted software in the contents of removable drives, such as USB flash drives, + + when running a full scan. + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed. + + Defender Antivirus\Allow Full Scan Removable Drive Scanning' + +- platform: windows + name: CIS - Ensure 'Allow Realtime Monitoring' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AllowRealtimeMonitoring' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-realtime-monitoring-is-allowed, cis_safeguard_ids:CIS22.4 + description: 'This policy setting configures real-time protection prompts for known malware detection. + + Microsoft Defender Antivirus alerts you when malware or potentially unwanted software + + attempts to install itself or to run on your computer. + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed. + + Defender\Allow Realtime Monitoring' + +- platform: windows + name: CIS - Ensure 'Allow scanning of all downloaded files and attachments' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AllowIOAVProtection' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-scanning-of-all-downloaded-files-and-attachments-is-allowed, cis_safeguard_ids:CIS22.5 + description: 'This policy setting configures scanning for all downloaded files and attachments. + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed. + + Defender\Allow scanning of all downloaded files and attachments' + +- platform: windows + name: CIS - Ensure 'Allow Script Scanning' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AllowScriptScanning' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-script-scanning-is-allowed, cis_safeguard_ids:CIS22.6 + description: 'This policy setting allows script scanning to be turned on/off. Script scanning intercepts + + scripts then scans them before they are executed on the system. + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed. + + Defender\Allow Script Scanning' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block abuse of exploited vulnerable signed drivers'' is set to ''Block`' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%56A863A9-875E-4185-98A7-B882C64B5CE5=1%' OR mdm_command_output LIKE '%56A863A9-875E-4185-98A7-B882C64B5CE5=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.7 + description: 'This rule prevents an application from writing a vulnerable signed driver to disk. + + The recommended state for this setting is: Block. + + Note: The Block abuse of exploited vulnerable signed drivers rule does not block a + + driver that already exists on the system from being loaded.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block abuse of exploited vulnerable signed drivers (Device)' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block Adobe Reader from creating child processes'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%7674BA52-37EB-4A4F-A9A1-F0F9A1619A2C=1%' OR mdm_command_output LIKE '%7674BA52-37EB-4A4F-A9A1-F0F9A1619A2C=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-adobe-reader-from-creating-child-processes-is-block, cis_safeguard_ids:CIS22.8 + description: 'This rule prevents attacks by blocking Adobe Reader from creating processes. + + Malware can download and launch payloads and break out of Adobe Reader through + + social engineering or exploits. By blocking child processes from being generated by + + Adobe Reader, malware attempting to use Adobe Reader as an attack vector are + + prevented from spreading. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block Adobe Reader from creating child processes' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block all Office applications from creating child processes'' is set to ''Audit'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%D4F940AB-401B-4EFC-AADC-AD5F3C50688A=1%' OR mdm_command_output LIKE '%D4F940AB-401B-4EFC-AADC-AD5F3C50688A=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.9 + description: 'This rule blocks Office apps from creating child processes. Office apps include Word, + + Excel, PowerPoint, OneNote, and Access. + + Creating malicious child processes is a common malware strategy. Malware that + + abuses Office as a vector often runs VBA macros and exploit code to download and + + attempt to run more payloads. However, some legitimate line-of-business applications + + might also generate child processes for benign purposes; such as spawning a + + command prompt or using PowerShell to configure registry settings. + + The recommended state for this setting is: Audit. Configuring this setting to Block also + + conforms to the benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit or Block. + + Defender\Block all Office applications from creating child processes' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block credential stealing from the Windows local security authority subsystem'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2=1%' OR mdm_command_output LIKE '%9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-credential-stealing-from-the-windows-local-security-authority-subsystem-is-block, cis_safeguard_ids:CIS22.10 + description: 'This rule helps prevent credential stealing by locking down Local Security Authority + + Subsystem Service (LSASS). + + LSASS authenticates users who sign in on a Windows computer. Microsoft Defender + + Credential Guard in Windows normally prevents attempts to extract credentials from + + LSASS. Some organizations can''t enable Credential Guard on all of their computers + + because of compatibility issues with custom smartcard drivers or other programs that + + load into the Local Security Authority (LSA). In these cases, attackers can use tools like + + Mimikatz to scrape cleartext passwords and NTLM hashes from LSASS. + + Note: Enabling this rule doesn''t provide additional protection if you have LSA protection + + enabled since the ASR rule and LSA protection work similarly. However, when LSA + + protection cannot be enabled, this rule can be configured to provide equivalent + + protection against malware that target lsass.exe. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block credential stealing from the Windows local security authority + + subsystem' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block executable content from email client and webmail'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550=1%' OR mdm_command_output LIKE '%BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-executable-content-from-email-client-and-webmail-is-block, cis_safeguard_ids:CIS22.11 + description: 'This rule blocks email opened within the Microsoft Outlook application, or Outlook.com + + and other popular webmail providers from propagating the following file types: + + • + + • + + + Executable files (such as .exe, .dll, or .scr) + + Script files (such as a PowerShell .ps1, Visual Basic .vbs, or JavaScript .js file) + + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block executable content from email client and webmail' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block executable files from running unless they meet a prevalence, age, or trusted list criterion'' is set to ''Audit'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%01443614-CD74-433A-B99E-2ECDC07BFC25=1%' OR mdm_command_output LIKE '%01443614-CD74-433A-B99E-2ECDC07BFC25=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.12 + description: 'This rule blocks executable files, such as .exe, .dll, or .scr, from launching. Thus, + + launching untrusted or unknown executable files can be risky, as it might not be initially + + clear if the files are malicious. + + The recommended state for this setting is: Audit. Configuring this setting to Block also + + conforms to the benchmark. + + Note: Cloud-delivered protection must be enabled to use this rule.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit or Block. + + Defender\Block executable files from running unless they meet a prevalence, + + age, or trusted list criterion' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block execution of potentially obfuscated scripts'' is set to ''Audit'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%5BEB7EFE-FD9A-4556-801D-275E5FFC04CC=1%' OR mdm_command_output LIKE '%5BEB7EFE-FD9A-4556-801D-275E5FFC04CC=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.13 + description: 'This rule blocks Office apps from creating child processes. Office apps include Word, + + Excel, PowerPoint, OneNote, and Access. + + Creating malicious child processes is a common malware strategy. Malware that + + abuses Office as a vector often runs VBA macros and exploit code to download and + + attempt to run more payloads. However, some legitimate line-of-business applications + + might also generate child processes for benign purposes; such as spawning a + + command prompt or using PowerShell to configure registry settings. + + The recommended state for this setting is: Audit. Configuring this setting to Block also + + conforms to the benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit or Block. + + Defender\Block execution of potentially obfuscated scripts' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block JavaScript or VBScript from launching downloaded executable content'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%D3E037E1-3EB8-44C8-A917-57927947596D=1%' OR mdm_command_output LIKE '%D3E037E1-3EB8-44C8-A917-57927947596D=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-javascript-or-vbscript-from-launching-downloaded-executable-content-is-block, cis_safeguard_ids:CIS22.14 + description: 'This rule prevents scripts from launching potentially malicious downloaded content. + + Malware written in JavaScript or VBScript often acts as a downloader to fetch and + + launch other malware from the Internet. Although not common, line-of-business + + applications sometimes use scripts to download and launch installers. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block JavaScript or VBScript from launching downloaded executable + + content' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block Office applications from creating executable content'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%3B576869-A4EC-4529-8536-B80A7769E899=1%' OR mdm_command_output LIKE '%3B576869-A4EC-4529-8536-B80A7769E899=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-office-applications-from-creating-executable-content-is-block, cis_safeguard_ids:CIS22.15 + description: 'This rule prevents scripts from launching potentially malicious downloaded content. + + Malware written in JavaScript or VBScript often acts as a downloader to fetch and + + launch other malware from the Internet. Although not common, line-of-business + + applications sometimes use scripts to download and launch installers. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block Office applications from creating executable content' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block Office applications from injecting code into other processes'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84=1%' OR mdm_command_output LIKE '%75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-office-applications-from-injecting-code-into-other-processes-is-block, cis_safeguard_ids:CIS22.16 + description: 'Attackers might attempt to use Office apps to migrate malicious code into other + + processes through code injection, so the code can masquerade as a clean process. + + There are no known legitimate business purposes for using code injection. + + This rule applies to Word, Excel, OneNote, and PowerPoint. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block Office applications from injecting code into other processes' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block Office communication application from creating child processes'' is set to ''Audit'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%26190899-1602-49E8-8B27-EB1D0A1CE869=1%' OR mdm_command_output LIKE '%26190899-1602-49E8-8B27-EB1D0A1CE869=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.17 + description: 'This rule prevents Outlook from creating child processes, while still allowing legitimate + + Outlook functions. + + The recommended state for this setting is: Audit. Configuring this setting to Block also + + conforms to the benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit or Block. + + Defender\Block Office communication application from creating child processes' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block persistence through WMI event subscription'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%E6DB77E5-3DF2-4CF1-B95A-636979351E5B=1%' OR mdm_command_output LIKE '%E6DB77E5-3DF2-4CF1-B95A-636979351E5B=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-persistence-through-wmi-event-subscription-is-block, cis_safeguard_ids:CIS22.18 + description: 'This rule prevents malware from abusing WMI to attain persistence on a device. + + Note: If CcmExec.exe (SCCM Agent) is detected on the device, the ASR rule is + + classified as "not applicable" in Defender for Endpoint settings in the Microsoft Defender + + portal. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block persistence through WMI event subscription' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block process creations originating from PSExec and WMI commands'' is set to ''Audit'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%D1E49AAC-8F56-4280-B9BA-993A6D77406C=1%' OR mdm_command_output LIKE '%D1E49AAC-8F56-4280-B9BA-993A6D77406C=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.19 + description: 'This rule blocks processes created through PsExec and WMI from running. Both + + PsExec and WMI can remotely execute code. + + The recommended state for this setting is: Audit. Configuring this setting to Block also + + conforms to the benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit or Block. + + Defender\Block process creations originating from PSExec and WMI commands' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block untrusted and unsigned processes that run from USB'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%B2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4=1%' OR mdm_command_output LIKE '%B2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-untrusted-and-unsigned-processes-that-run-from-usb-is-block, cis_safeguard_ids:CIS22.20 + description: 'With this rule, admins can prevent unsigned or untrusted executable files from running + + from USB removable drives, including SD cards. Blocked file types include executable + + files (such as .exe, .dll, or .scr) + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block untrusted and unsigned processes that run from USB' + +- platform: windows + name: 'CIS - Ensure ''ASR: Block Win32 API calls from Office macros'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B=1%' OR mdm_command_output LIKE '%92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:asr-block-win32-api-calls-from-office-macros-is-block, cis_safeguard_ids:CIS22.21 + description: 'This rule prevents VBA macros from calling Win32 APIs. Office VBA enables Win32 API + + calls. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Defender\Block Win32 API calls from Office macros' + +- platform: windows + name: 'CIS - Ensure ''ASR: Use advanced protection against ransomware'' is set to ''Audit'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/AttackSurfaceReductionRules' AND (mdm_command_output LIKE '%C1DB55AB-C21A-4637-BB3F-A12568109D35=1%' OR mdm_command_output LIKE '%C1DB55AB-C21A-4637-BB3F-A12568109D35=2%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.22 + description: 'This rule provides an extra layer of protection against ransomware. It uses both client + + and cloud heuristics to determine whether a file resembles ransomware. This rule + + doesn''t block files that have one or more of the following characteristics: + + The file has already been found to be unharmful in the Microsoft cloud. The file is a valid + + signed file. The file is prevalent enough to not be considered as ransomware. The rule + + tends to err on the side of caution to prevent ransomware. + + The recommended state for this setting is: Audit. Configuring this setting to Block also + + conforms to the benchmark. + + Note: Cloud-delivered protection must be enabled to use this rule.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit or Block. + + Defender\Use advanced protection against ransomware' + +- platform: windows + name: CIS - Ensure 'Days Until Aggressive Catchup Quick Scan' is set to '7 days' or fewer + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Scan\DaysUntilAggressiveCatchupQuickScan' AND data = '7'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.23 + description: 'This policy setting configures the number of days after the last scan (of any type) before + + an aggressive Quick Scan is automatically triggered. + + The recommended state for this setting is: 7 days or fewer.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 7 days or fewer. + + Defender\Days Until Aggressive Catchup Quick Scan' + +- platform: windows + name: CIS - Ensure 'Enable Network Protection' is set to 'Enabled (block mode)' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/EnableNetworkProtection' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-network-protection-is-enabled-block-mode, cis_safeguard_ids:CIS22.26 + description: 'This policy setting controls Microsoft Defender Exploit Guard network protection. + + The recommended state for this setting is: Enabled (block mode).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled (block mode): + + Defender\Enable Network Protection' + +- platform: windows + name: CIS - Ensure 'Hide Exclusions From Local Users' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Defender/Configuration/HideExclusionsFromLocalUsers' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:hide-exclusions-from-local-users-is-enabled, cis_safeguard_ids:CIS22.27 + description: 'This policy setting controls whether Microsoft Defender Antivirus exclusions are visible + + to local users on the system. + + The recommended state for this setting is: If you enable this setting, local + + users will no longer be able to see the exclusion list in Windows + + Security App or via PowerShell.. + + Note: As of the publication of this Benchmark, the setting configuration state in Intune is + + the sentence above after The recommended state for this setting is: and not Enabled as + + the title states. This was done to keep title length to a minimum.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to If you enable this setting, local users will no + + longer be able to see the exclusion list in Windows Security App or + + via PowerShell.. + + Defender\Hide Exclusions From Local Users' + +- platform: windows + name: CIS - Ensure 'Oobe Enable Rtp And Sig Update' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Defender/Configuration/OobeEnableRtpAndSigUpdate' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:oobe-enable-rtp-and-sig-update-is-enabled, cis_safeguard_ids:CIS22.28 + description: 'This policy setting configures whether Real-time Protection and Security Intelligence + + Updates are enabled during the Out of Box experience (OOBE). + + The recommended state for this setting is: If you enable this setting, realtime protection and Security Intelligence Updates are enabled during + + OOBE.. + + Note: As of the publication of this Benchmark, the setting configuration state in Intune is + + the sentence above after The recommended state for this setting is: and not Enabled as + + the title states. This was done to keep title length to a minimum.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to If you enable this setting, real-time protection + + and Security Intelligence Updates are enabled during OOBE.. + + Defender\Oobe Enable Rtp And Sig Update' + +- platform: windows + name: CIS - Ensure 'PUA Protection' is set to 'PUA Protection on' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Defender/PUAProtection' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:pua-protection-is-pua-protection-on, cis_safeguard_ids:CIS22.29 + description: 'This policy setting controls detection and action for Potentially Unwanted Applications + + (PUA), which are sneaky unwanted application bundlers or their bundled applications, + + that can deliver adware or malware. + + The recommended state for this setting is: PUA Protection on. + + For more information, see this link: Block potentially unwanted applications with + + Microsoft Defender Antivirus | Microsoft Docs' + resolution: 'To establish the recommended configuration via GP, set the following UI path to PUA + + Protection on: + + Defender\PUA Protection' + +- platform: windows + name: CIS - Ensure 'Quick Scan Include Exclusions' is set to '1' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Defender/Configuration/QuickScanIncludeExclusions' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:quick-scan-include-exclusions-is-1, cis_safeguard_ids:CIS22.30 + description: 'This policy setting manages whether or not Microsoft Defender Antivirus scans + + excluded files and directories when running a Quick Scan. + + The recommended state for this setting is: If you set this setting to 1, all + + files and directories that are excluded from real-time protection + + using contextual exclusions are scanned during a quick scan. + + Note: As of the publication of this Benchmark, the setting configuration state in Intune is + + the sentence above after The recommended state for this setting is: and not 1 as the + + title states. This was done to keep title length to a minimum.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to If you set this setting to 1, all files and + + directories that are excluded from real-time protection using + + contextual exclusions are scanned during a quick scan. + + Defender\Quick Scan Include Exclusions' + +- platform: windows + name: 'CIS - Ensure ''Remote Encryption Protection Configured State'' is set to ''Audit: Generate EDR detections without blocking'' or higher' + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Defender/Configuration/RemoteEncryptionProtectionConfiguredState' AND mdm_command_output = '2') OR EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Defender\\Configuration\\BehavioralNetworkBlocks\\RemoteEncryptionProtection\\RemoteEncryptionProtectionConfiguredState' AND data = '2'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS22.32 + description: 'This policy setting configures the Brute-Force Protection feature in Microsoft Defender + + Antivirus. Brute-Force Protection can detect and block attempts to forcibly initiate signins and sessions. + + The recommended state for this setting is: Audit: Generate EDR detections + + without blocking. Configuring this setting to Block: Prevent suspicious and + + malicious behaviors also conforms to the benchmark. + + Note: Configuring the value to either Default or Off does not conform to this + + benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Audit: Generate EDR detections without blocking or + + Block: Prevent suspicious and malicious behaviors. + + Defender\Remote Encryption Protection Configured State' + +- platform: windows + name: CIS - Ensure 'DO Download Mode' is NOT set to 'HTTP blended with Internet Peering' + query: SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeliveryOptimization\\DODownloadMode' AND data = 3); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS23.1 + description: 'This policy setting specifies the download method that Delivery Optimization can use in + + downloads of Windows Updates, Apps and App updates. The following methods are + + supported: + + • + + • + + • + + + • + + • + + + • + + + 0 = HTTP only, no peering. + + 1 = HTTP blended with peering behind the same NAT. + + 2 = HTTP blended with peering across a private group. Peering occurs on + + devices in the same Active Directory Site (if exist) or the same domain by default. + + When this option is selected, peering will cross NATs. To create a custom group + + use Group ID in combination with Mode 2. + + 3 = HTTP blended with Internet Peering. + + 99 = Simple download mode with no peering. Delivery Optimization downloads + + using HTTP only and does not attempt to contact the Delivery Optimization cloud + + services. + + 100 = Bypass mode. Do not use Delivery Optimization and use BITS instead. + + + The recommended state for this setting is any value EXCEPT: Enabled: Internet + + (3). + + Note: The default on all SKUs other than Enterprise, Enterprise LTSB or Education is + + Enabled: Internet (3), so on other SKUs, be sure to set this to a different value.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to any value other than HTTP blended with Internet + + Peering: + + Delivery Optimization\DO Download Mode' + +- platform: windows + name: CIS - Ensure 'Configure System Guard Launch' is set to 'Unmanaged Enables Secure Launch if supported by hardware' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/DeviceGuard/ConfigureSystemGuardLaunch' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:configure-system-guard-launch-is-unmanaged-enables-secure-launch-if-supported-by-hardware, cis_safeguard_ids:CIS24.1 + description: 'Secure Launch protects the Virtualization Based Security environment from exploited + + vulnerabilities in device firmware. + + The recommended state for this setting is: Unmanaged Enables Secure Launch if + + supported by hardware. + + Note: Credential Guard and Device Guard are not currently supported when using + + Azure IaaS VMs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Unmanaged Enables Secure Launch if supported by + + hardware: + + Device Guard\Configure System Guard Launch' + +- platform: windows + name: CIS - Ensure 'Credential Guard' is set to 'Enabled with UEFI lock' + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/DeviceGuard/EnableVirtualizationBasedSecurity' AND mdm_command_output = '1') OR EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\\LsaCfgFlags' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:credential-guard-is-enabled-with-uefi-lock, cis_safeguard_ids:CIS24.2 + description: 'This setting lets users turn on Credential Guard with virtualization-based security to help + + protect credentials. The "Enabled with UEFI lock" option ensures that Credential Guard + + cannot be disabled remotely. In order to disable the feature, you must set the Group + + Policy to "Disabled" as well as remove the security functionality from each computer, + + with a physically present user, in order to clear configuration persisted in UEFI. + + The recommended state for this setting is: Enabled with UEFI lock. + + Note: Virtualization Based Security requires a 64-bit version of Windows with Secure + + Boot enabled, which in turn requires that Windows was installed with a UEFI BIOS + + configuration, not a Legacy BIOS configuration. In addition, if running Windows on a + + virtual machine, the hardware-assisted CPU virtualization feature (Intel VT-x or AMD-V) + + must be exposed by the host to the guest VM. + + More information on system requirements for this feature can be found at Windows + + Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + + Note #2: Credential Guard and Device Guard are not currently supported when using + + Azure IaaS VMs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled with UEFI lock: + + Device Guard\Credential Guard' + +- platform: windows + name: CIS - Ensure 'Enable Virtualization Based Security' is set to 'Enable virtualization based security' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\EnableVirtualizationBasedSecurity' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-virtualization-based-security-is-enable-virtualization-based-security, cis_safeguard_ids:CIS24.3 + description: 'This policy setting specifies whether Virtualization Based Security is enabled. + + Virtualization Based Security uses the Windows Hypervisor to provide support for + + security services. + + The recommended state for this setting is: Enable virtualization based security. + + Note: Virtualization Based Security requires a 64-bit version of Windows with Secure + + Boot enabled, which in turn requires that Windows was installed with a UEFI BIOS + + configuration, not a Legacy BIOS configuration. In addition, if running Windows on a + + virtual machine, the hardware-assisted CPU virtualization feature (Intel VT-x or AMD-V) + + must be exposed by the host to the guest VM. + + More information on system requirements for this feature can be found at Windows + + Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + + Note #2: Credential Guard and Device Guard are not currently supported when using + + Azure IaaS VMs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable virtualization based security: + + Device Guard\Enable Virtualization Based Security' + +- platform: windows + name: CIS - Ensure 'Require Platform Security Features' is set to 'Turns on VBS with Secure Boot' or higher + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/DeviceGuard/RequirePlatformSecurityFeatures' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS24.4 + description: 'This policy setting specifies whether Virtualization Based Security (VBS) is enabled. + + VBS uses the Windows Hypervisor to provide support for security services. + + The recommended state for this setting is: Turns on VBS with Secure Boot or + + Turns on VBS with Secure Boot and direct memory access (DMA). DMA + + requires hardware support. + + Note: VBS requires a 64-bit version of Windows with Secure Boot enabled, which in + + turn requires that Windows was installed with a UEFI BIOS configuration, not a Legacy + + BIOS configuration. In addition, if running Windows on a virtual machine, the hardwareassisted CPU virtualization feature (Intel VT-x or AMD-V) must be exposed by the host + + to the guest VM. + + More information on system requirements for this feature can be found at Windows + + Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + + Note #2: Credential Guard and Device Guard are not currently supported when using + + Azure IaaS VMs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Turns on VBS with Secure Boot or Turns on VBS with + + Secure Boot and direct memory access (DMA). DMA requires hardware + + support: + + Device Guard\Require Platform Security Features' + +- platform: windows + name: CIS - Ensure 'Device Password Enabled' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\DevicePasswordEnabled' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:session, requirement:standard, critical:false, control:device-password-enabled-is-enabled, cis_safeguard_ids:CIS26.1 + description: 'This policy setting specifics whether device lock is enabled. when enabled, the following + + policy settings take effect on the system which are included in the Device Lock Section: + + • + + • + + • + + • + + • + + • + + + AllowSimpleDevicePassword + + MinDevicePasswordLength + + AlphanumericDevicePasswordRequired + + MaxDevicePasswordFailedAttempts + + MaxInactivityTimeDeviceLock + + MinDevicePasswordComplexCharacters + + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to `3Enabled: + + Device Lock\Device Password Enabled' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Alphanumeric Device Password Required'' is set to ''Password or Alphanumeric PIN required''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\AlphanumericDevicePasswordRequired' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:authn, requirement:standard, critical:false, control:device-password-enabled-alphanumeric-device-password-required-is-password-or-alphanumeric-pin-required, cis_safeguard_ids:CIS26.2 + description: 'This policy setting determines the type of PIN or password this is required on a system. + + The recommended state for this setting is: Password or Alphanumeric PIN + + required. + + Note: This policy only applies if the DevicePasswordEnabled policy is set to 1. This is a + + pre-requisite for Alphanumeric Device Password Required in the settings catalog.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Password or Alphanumeric PIN required: + + Device Lock\Device Password Enabled: Alphanumeric Device Password Required' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Min Device Password Complex Characters'' is set to ''Digits and lowercase letters are required''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\MinDevicePasswordComplexCharacters' AND data LIKE '%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:device-password-enabled-min-device-password-complex-characters-is-digits-and-lowercase-letters-are-required, cis_safeguard_ids:CIS26.3 + description: 'This policy setting configures the number of complex element types (uppercase and + + lowercase letters, numbers, and punctuation) required for PIN or password. + + The recommended state for this setting is: Digits and lowercase letters are + + required + + Note: The enforcement of policies for Microsoft accounts happens on the server, and + + the server requires a password length of 8 and a complexity of 2. A complexity value of + + 3 or 4 is unsupported and setting this value on the server makes Microsoft accounts + + non-compliant. However, configuring this setting to 2 will force the value of 3 for + + Local accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Digits lowercase letters and uppercase letters are + + required: + + Device Lock\Device Password Enabled: Alphanumeric Device Password Required: + + Min Device Password Complex Characters + + + Note: As of March 20, 2025, this setting is nested under Alphanumeric Device + + Password Required and may not fully appear in Settings Catalog unless unchecked and + + re-checked in the settings picker.' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Device Password Expiration'' is set to ''365 or fewer days, but not 0''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\DevicePasswordExpiration' AND CAST(data AS INTEGER) BETWEEN 1 AND 365; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:device-password-enabled-device-password-expiration-is-365-or-fewer-days-but-not-0, cis_safeguard_ids:CIS26.4 + description: 'This policy setting defines how long a user can use their password before it expires. + + The recommended state for this setting is 365 or fewer days, but not 0. + + Note: Values for this policy setting range from 0 to 730 days. If this policy is set to the + + value 0, the password will never expire.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 365 or fewer days, but not 0: + + Device Lock\Device Password Enabled: Device Password Expiration' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Device Password History'' is set to ''24 or more password(s)''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\DevicePasswordHistory' AND data = '24'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:authn, requirement:standard, critical:false, control:device-password-enabled-device-password-history-is-24-or-more-passwords, cis_safeguard_ids:CIS26.5 + description: 'This policy setting determines the number of renewed, unique passwords that have to + + be associated with a user account before you can reuse an old password. In an Intune + + managed environment this setting applies to local user accounts and not Entra ID + + accounts. + + The value includes the user''s current password. This value denotes that with a setting of + + 1, the user can''t reuse their current password when choosing a new password, while a + + setting of 5 means that a user can''t set their new password to their current password or + + any of their previous four passwords. + + The recommended state for this setting is: 24 or more password(s).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 24 or more password(s): + + Device Lock\Device Password Enabled: Device Password History' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Max Device Password Failed Attempts'' is set to ''5 or fewer failed attempt(s), but not 0''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\MaxDevicePasswordFailedAttempts' AND data = '5'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:device-password-enabled-max-device-password-failed-attempts-is-5-or-fewer-failed-attempts-but-not-0, cis_safeguard_ids:CIS26.6 + description: 'This policy setting determines the number of failed logon attempts before the account is + + locked. Setting this policy to 0 does not conform to the benchmark as doing so disables + + the account lockout threshold. + + The recommended state for this setting is: 5 or fewer invalid logon attempt(s), + + but not 0. + + Note: When a user reaches the value set by this policy, the system is not wiped, + + instead the system will be in BitLocker recovery mode, which makes data inaccessible + + but recoverable. If BitLocker is not enabled, then this policy will not be enforced.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 5 or fewer invalid logon attempt(s), but not 0: + + Device Lock\Device Password Enabled: Max Device Password Failed Attempts' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Max Inactivity Time Device Lock'' is set to ''15 or fewer minutes, but not 0''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\MaxInactivityTimeDeviceLock' AND data = '15'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:session, requirement:standard, critical:false, control:device-password-enabled-max-inactivity-time-device-lock-is-15-or-fewer-minutes-but-not-0, cis_safeguard_ids:CIS26.7 + description: 'Windows notices inactivity of a logon session, and if the amount of inactive time + + exceeds the inactivity limit, then the screen saver will run, locking the session. + + The recommended state for this setting is: 15 or fewer minutes, but not 0. + + Note: A value of 0 does not conform to the benchmark as it disables the machine + + inactivity limit.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 15 or fewer minutes, but not 0: + + Device Lock\Device Password Enabled: Max Inactivity Time Device Lock' + +- platform: windows + name: 'CIS - Ensure ''Device Password Enabled: Min Device Password Length'' is set to ''14 or more character(s)''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeviceLock\MinDevicePasswordLength' AND data = '14'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:session, requirement:standard, critical:false, control:device-password-enabled-min-device-password-length-is-14-or-more-characters, cis_safeguard_ids:CIS26.8 + description: 'This policy setting determines the least number of characters that make up a password + + for a local user account. There are many different theories about how to determine the + + best password length for an organization, but perhaps "passphrase" is a better term + + than "password." In Microsoft Windows 2000 or newer, passphrases can be quite long + + and can include spaces. Therefore, a phrase such as "I want to drink a $5 milkshake" is + + a valid passphrase; it is a considerably stronger password than an 8 or 10 character + + string of random numbers and letters, and yet is easier to remember. Users must be + + educated about the proper selection and maintenance of passwords, especially around + + password length. In enterprise environments, the ideal value for the Minimum password + + length setting is 14 characters, however you should adjust this value to meet your + + organization''s business requirements. + + The recommended state for this setting is: 14 or more character(s).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 14 or more character(s): + + Device Lock\Device Password Enabled: Min Device Password Length' + +- platform: windows + name: CIS - Ensure 'Minimum Password Age' is set to '1 or more day(s)' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/DeviceLock/MinimumPasswordAge' AND CAST(mdm_command_output AS INTEGER) >= 1; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:session, requirement:standard, critical:false, control:minimum-password-age-is-1-or-more-days, cis_safeguard_ids:CIS26.9 + description: 'This security setting determines the period of time (in days) that a password must be + + used before the user can change it. You can set a value between 1 and 998 days, or + + you can allow changes immediately by setting the number of days to 0. + + The recommended state for this setting is: 1 or more day(s)).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 1 (or more day(s)): + + Device Lock\Minimum Password Age' + +- platform: windows + name: CIS - Ensure 'Allow Cortana' is set to 'Block' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Experience/AllowCortana' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-cortana-is-block, cis_safeguard_ids:CIS34.1 + description: 'This policy setting specifies whether Cortana is allowed on the device. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Experience\Allow Cortana' + +- platform: windows + name: CIS - Ensure 'Allow Spotlight Collection (User)' is set to '0' + query: SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\S-1-%\SOFTWARE\Policies\Microsoft\Windows\CloudContent\DisableWindowsSpotlightFeatures' AND data = '1' LIMIT 1; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-spotlight-collection-user-is-0, cis_safeguard_ids:CIS34.2 + description: 'This policy setting removes the Spotlight collection setting in Personalization, rendering + + the user unable to select and subsequently download daily images from Microsoft to the + + system desktop. + + The recommended state for this setting is: 0.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 0: + + Experience\Allow Spotlight Collection (User)' + +- platform: windows + name: CIS - Ensure 'Disable Consumer Account State Content' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Experience/DisableConsumerAccountStateContent' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:disable-consumer-account-state-content-is-enabled, cis_safeguard_ids:CIS34.4 + description: 'This policy setting determines whether cloud consumer account state content is allowed + + in all Windows experiences. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Experience\Disable Consumer Account State Content' + +- platform: windows + name: CIS - Ensure 'Do not show feedback notifications' is set to 'Feedback notifications are disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Experience\DoNotShowFeedbackNotifications' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:do-not-show-feedback-notifications-is-feedback-notifications-are-disabled, cis_safeguard_ids:CIS34.5 + description: 'This policy setting allows an organization to prevent its devices from showing feedback + + questions from Microsoft. + + The recommended state for this setting is: Feedback notifications are disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Feedback notifications are disabled: + + Experience\Do not show feedback notifications' + +- platform: windows + name: CIS - Ensure 'Enable Domain Network Firewall' is set to 'True' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\EnableFirewall' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-is-true, cis_safeguard_ids:CIS38.1 + description: 'Select True (recommended) to have Windows Firewall with Advanced Security use the + + settings for this profile to filter network traffic. If you select False, Windows Firewall with + + Advanced Security will not use any of the firewall rules or connection security rules for + + this profile. + + The recommended state for this setting is: True.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to True: + + Firewall\Enable Domain Network Firewall' + +- platform: windows + name: 'CIS - Ensure ''Enable Domain Network Firewall: Default Inbound Action for Domain Profile'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/DomainProfile/DefaultInboundAction' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-default-inbound-action-for-domain-profile-is-block, cis_safeguard_ids:CIS38.2 + description: 'This setting determines the behavior for inbound connections that do not match an + + inbound firewall rule. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Firewall\Enable Domain Network Firewall: Default Inbound Action for Domain + + Profile' + +- platform: windows + name: CIS - Ensure 'Enable Domain Network Firewall Disable Inbound Notifications' is set to 'True' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Mdm\DomainProfile\DisableNotifications' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-disable-inbound-notifications-is-true, cis_safeguard_ids:CIS38.3 + description: 'Select this option to have Windows Firewall with Advanced Security display notifications + + to the user when a program is blocked from receiving inbound connections. + + The recommended state for this setting is: True. + + Note: When the Apply local firewall rules setting is configured to No, it''s + + recommended to also configure the Display a notification setting to No. + + Otherwise, users will continue to receive messages that ask if they want to unblock a + + restricted inbound connection, but the user''s response will be ignored.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to True: + + Firewall\Enable Domain Network Firewall: Disable Inbound Notifications' + +- platform: windows + name: CIS - Ensure 'Enable Domain Network Firewall Enable Log Dropped Packets' is set to 'Yes'. Enable Logging Of Dropped Packets + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableLogDroppedPackets' AND mdm_command_output = 'true'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-enable-log-dropped-packets-is-yes-enable-logging-of-dropped-packets, cis_safeguard_ids:CIS38.4 + description: 'Use this option to log when Windows Firewall with Advanced Security discards an + + inbound packet for any reason. The log records why and when the packet was dropped. + + Look for entries with the word DROP in the action column of the log. + + The recommended state for this setting is: Enable Logging Of Dropped Packets.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable Logging Of Dropped Packets: + + Firewall\Enable Domain Network Firewall: Enable Log Dropped Packets' + +- platform: windows + name: CIS - Ensure 'Enable Domain Network Firewall Enable Log Success Connections' is set to 'Enable Logging Of Successful Connections' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Mdm\DomainProfile\Logging\LogSuccessfulConnections' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-enable-log-success-connections-is-enable-logging-of-successful-connections, cis_safeguard_ids:CIS38.5 + description: 'Use this option to log when Windows Firewall with Advanced Security allows an + + inbound connection. The log records why and when the connection was formed. Look + + for entries with the word ALLOW in the action column of the log. + + The recommended state for this setting is: Enable Logging Of Successful + + Connections.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable Logging Of Successful Connections: + + Firewall\Enable Domain Network Firewall: Enable Log Success Connections' + +- platform: windows + name: 'CIS - Ensure ''Enable Domain Network Firewall: Log File Path'' is set to ''%SystemRoot%\System32\logfiles\firewall\domainfw.log''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogFilePath' AND mdm_command_output LIKE '%domainfw.log'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-log-file-path-is-systemroot-system32-logfiles-firewall-domainfw-log, cis_safeguard_ids:CIS38.6 + description: 'Use this option to specify the path and name of the file in which Windows Firewall will + + write its log information. + + The recommended state for this setting is: + + %SystemRoot%\System32\logfiles\firewall\domainfw.log.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to + + %SystemRoot%\System32\logfiles\firewall\domainfw.log: + + Firewall\Enable Domain Network Firewall: Log File Path' + +- platform: windows + name: 'CIS - Ensure ''Enable Domain Network Firewall: Log Max File Size'' is set to ''16,384 KB or greater''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogMaxFileSize' AND CAST(mdm_command_output AS INTEGER) >= 16384; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-domain-network-firewall-log-max-file-size-is-16384-kb-or-greater, cis_safeguard_ids:CIS38.7 + description: 'Use this option to specify the size limit of the file in which Windows Firewall will write its + + log information. + + The recommended state for this setting is: 16,384 KB or greater.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 16,384 KB or greater: + + Firewall\Enable Domain Network Firewall: Log Max File Size (KB)' + +- platform: windows + name: CIS - Ensure 'Enable Private Network Firewall' is set to 'True' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-is-true, cis_safeguard_ids:CIS38.8 + description: 'Select True (recommended) to have Windows Firewall with Advanced Security use the + + settings for this profile to filter network traffic. If you select False, Windows Firewall with + + Advanced Security will not use any of the firewall rules or connection security rules for + + this profile. + + The recommended state for this setting is: True (recommended).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to True (recommended): + + Firewall\Enable Private Network Firewall' + +- platform: windows + name: 'CIS - Ensure ''Enable Private Network Firewall: Default Inbound Action for Private Profile'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PrivateProfile/DefaultInboundAction' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-default-inbound-action-for-private-profile-is-block, cis_safeguard_ids:CIS38.9 + description: 'This setting determines the behavior for inbound connections that do not match an + + inbound firewall rule. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Firewall\Enable Private Network Firewall: Default Inbound Action for Private + + Profile' + +- platform: windows + name: CIS - Ensure 'Enable Private Network Firewall Disable Inbound Notifications' is set to 'True' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Mdm\StandardProfile\DisableNotifications' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-disable-inbound-notifications-is-true, cis_safeguard_ids:CIS38.10 + description: 'Select this option to have Windows Firewall with Advanced Security display notifications + + to the user when a program is blocked from receiving inbound connections. + + The recommended state for this setting is: True. + + Note: When the Apply local firewall rules setting is configured to No, it''s + + recommended to also configure the Display a notification setting to No. + + Otherwise, users will continue to receive messages that ask if they want to unblock a + + restricted inbound connection, but the user''s response will be ignored.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to True: + + Firewall\Enable Private Network Firewall: Disable Inbound Notifications' + +- platform: windows + name: CIS - Ensure 'Enable Private Network Firewall Enable Log Success Connections' is set to 'Enable Logging Of Successful Connections' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Mdm\StandardProfile\Logging\LogSuccessfulConnections' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-enable-log-success-connections-is-enable-logging-of-successful-connections, cis_safeguard_ids:CIS38.11 + description: 'Use this option to log when Windows Firewall with Advanced Security allows an + + inbound connection. The log records why and when the connection was formed. Look + + for entries with the word ALLOW in the action column of the log. + + The recommended state for this setting is: Enable Logging Of Successful + + Connections.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable Logging Of Successful Connections: + + Firewall\Enable Private Network Firewall: Enable Log Success Connections' + +- platform: windows + name: 'CIS - Ensure ''Enable Private Network Firewall: Enable Log Dropped Packets'' is set to ''Yes: Enable Logging Of Dropped Packets''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableLogDroppedPackets' AND mdm_command_output = 'true'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-enable-log-dropped-packets-is-yes-enable-logging-of-dropped-packets, cis_safeguard_ids:CIS38.12 + description: 'Use this option to log when Windows Firewall with Advanced Security discards an + + inbound packet for any reason. The log records why and when the packet was dropped. + + Look for entries with the word DROP in the action column of the log. + + The recommended state for this setting is: Enable Logging Of Dropped Packets.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable Logging Of Dropped Packets: + + Firewall\Enable Private Network Firewall: Enable Log Dropped Packets' + +- platform: windows + name: 'CIS - Ensure ''Enable Private Network Firewall: Log File Path'' is set to ''%SystemRoot%\System32\logfiles\firewall\privatefw.log''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogFilePath' AND mdm_command_output LIKE '%privatefw.log'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-log-file-path-is-systemroot-system32-logfiles-firewall-privatefw-log, cis_safeguard_ids:CIS38.13 + description: 'Use this option to specify the path and name of the file in which Windows Firewall will + + write its log information. + + The recommended state for this setting is: + + %SystemRoot%\System32\logfiles\firewall\privatefw.log.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to + + %SystemRoot%\System32\logfiles\firewall\privatefw.log: + + Firewall\Enable Private Network Firewall: Log File Path' + +- platform: windows + name: 'CIS - Ensure ''Enable Private Network Firewall: Log Max File Size'' is set to ''16,384 KB or greater''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogMaxFileSize' AND CAST(mdm_command_output AS INTEGER) >= 16384; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-private-network-firewall-log-max-file-size-is-16384-kb-or-greater, cis_safeguard_ids:CIS38.14 + description: 'Use this option to specify the size limit of the file in which Windows Firewall will write its + + log information. + + The recommended state for this setting is: 16,384 KB or greater.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 16,384 KB or greater: + + Firewall\Enable Private Network Firewall: Log Max File Size (KB)' + +- platform: windows + name: CIS - Ensure 'Enable Public Network Firewall' is set to 'True' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\EnableFirewall' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-is-true, cis_safeguard_ids:CIS38.15 + description: 'Select True (recommended) to have Windows Firewall with Advanced Security use the + + settings for this profile to filter network traffic. If you select False, Windows Firewall with + + Advanced Security will not use any of the firewall rules or connection security rules for + + this profile. + + The recommended state for this setting is: True (recommended).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to True (recommended): + + Firewall\Enable Public Network Firewall' + +- platform: windows + name: 'CIS - Ensure ''Enable Public Network Firewall: Allow Local Ipsec Policy Merge'' is set to ''False''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalIpsecPolicyMerge' AND mdm_command_output = 'false'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-allow-local-ipsec-policy-merge-is-false, cis_safeguard_ids:CIS38.16 + description: 'This setting controls whether local administrators are allowed to create connection + + security rules that apply together with connection security rules configured by Group + + Policy. + + The recommended state for this setting is: False.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to False: + + Firewall\Enable Public Network Firewall: Allow Local Ipsec Policy Merge' + +- platform: windows + name: 'CIS - Ensure ''Enable Public Network Firewall: Allow Local Policy Merge'' is set to ''False''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalPolicyMerge' AND mdm_command_output = 'false'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-allow-local-policy-merge-is-false, cis_safeguard_ids:CIS38.17 + description: 'This setting controls whether local administrators are allowed to create local firewall + + rules that apply together with firewall rules configured by Group Policy. + + The recommended state for this setting is: False. + + Note: When the Allow Local Policy Merge setting is configured to False, it''s + + recommended to also configure the Disable Inbound Notifications setting to True. + + Otherwise, users will continue to receive messages that ask if they want to unblock a + + restricted inbound connection, but the user''s response will be ignored.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to False: + + Firewall\Enable Public Network Firewall: Allow Local Policy Merge' + +- platform: windows + name: 'CIS - Ensure ''Enable Public Network Firewall: Default Inbound Action for Public Profile'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PublicProfile/DefaultInboundAction' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-default-inbound-action-for-public-profile-is-block, cis_safeguard_ids:CIS38.18 + description: 'This setting determines the behavior for inbound connections that do not match an + + inbound firewall rule. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Firewall\Enable Public Network Firewall: Default Inbound Action for Public + + Profile' + +- platform: windows + name: CIS - Ensure 'Enable Public Network Firewall Disable Inbound Notifications' is set to 'True' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Mdm\PublicProfile\DisableNotifications' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-disable-inbound-notifications-is-true, cis_safeguard_ids:CIS38.19 + description: 'Select this option to have Windows Firewall with Advanced Security display notifications + + to the user when a program is blocked from receiving inbound connections. + + The recommended state for this setting is: True.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to ''True'': + + Firewall\Enable Public Network Firewall: Disable Inbound Notifications' + +- platform: windows + name: CIS - Ensure 'Enable Public Network Firewall Enable Log Dropped Packets' is set to 'Enable Logging Of Dropped Packets' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableLogDroppedPackets' AND mdm_command_output = 'true'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-enable-log-dropped-packets-is-yes-enable-logging-of-dropped-packets, cis_safeguard_ids:CIS38.20 + description: 'Use this option to log when Windows Firewall with Advanced Security discards an + + inbound packet for any reason. The log records why and when the packet was dropped. + + Look for entries with the word DROP in the action column of the log. + + The recommended state for this setting is: Enable Logging Of Dropped Packets.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable Logging Of Dropped Packets: + + Firewall\Enable Public Network Firewall: Enable Log Dropped Packets' + +- platform: windows + name: CIS - Ensure 'Enable Public Network Firewall Enable Log Success Connections' is set to 'Enable Logging Of Successful Connections' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Mdm\PublicProfile\Logging\LogSuccessfulConnections' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-enable-log-success-connections-is-enable-logging-of-successful-connections, cis_safeguard_ids:CIS38.21 + description: 'Use this option to log when Windows Firewall with Advanced Security allows an + + inbound connection. The log records why and when the connection was formed. Look + + for entries with the word ALLOW in the action column of the log. + + The recommended state for this setting is: Enable Logging Of Successful + + Connections.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable Logging Of Successful Connections. + + Firewall\Enable Public Network Firewall: Enable Log success connections' + +- platform: windows + name: 'CIS - Ensure ''Enable Public Network Firewall: Log File Path'' is set to ''%SystemRoot%\System32\logfiles\firewall\publicfw.log''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogFilePath' AND mdm_command_output LIKE '%publicfw.log'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-log-file-path-is-systemroot-system32-logfiles-firewall-publicfw-log, cis_safeguard_ids:CIS38.22 + description: 'Use this option to specify the path and name of the file in which Windows Firewall will + + write its log information. + + The recommended state for this setting is: + + %SystemRoot%\System32\logfiles\firewall\publicfw.log.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to + + %SystemRoot%\System32\logfiles\firewall\publicfw.log: + + Firewall\Enable Public Network Firewall: Log File Path' + +- platform: windows + name: 'CIS - Ensure ''Enable Public Network Firewall: Log Max File Size'' is set to ''16,384 KB or greater''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogMaxFileSize' AND CAST(mdm_command_output AS INTEGER) >= 16384; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-public-network-firewall-log-max-file-size-is-16384-kb-or-greater, cis_safeguard_ids:CIS38.23 + description: 'Use this option to specify the size limit of the file in which Windows Firewall will write its + + log information. + + The recommended state for this setting is: 16,384 KB or greater.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 16,384 KB or greater: + + Firewall\Enable Public Network Firewall: Log Max File Size (KB)' + +- platform: windows + name: CIS - Ensure 'Enable insecure guest logons' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LanmanWorkstation/EnableInsecureGuestLogons' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-insecure-guest-logons-is-disabled, cis_safeguard_ids:CIS46.1 + description: 'This policy setting determines if the SMB client will allow insecure guest logons to an + + SMB server. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Lanman Workstation\Enable insecure guest logons' + +- platform: windows + name: 'CIS - Ensure ''Accounts: Enable Guest account status'' is set to ''Disabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_EnableGuestAccountStatus' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:accounts-enable-guest-account-status-is-disabled, cis_safeguard_ids:CIS49.1 + description: 'This policy setting determines whether the Guest account is enabled or disabled. The + + Guest account allows unauthenticated network users to gain access to the system. + + The recommended state for this setting is: Disabled. + + Note: This setting will have no impact when applied to the Domain Controllers + + organizational unit via group policy because Domain Controllers have no local account + + database. It can be configured at the domain level via group policy, similar to account + + lockout and password policy settings.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Local Policies Security Options\Accounts: Guest account status' + +- platform: windows + name: 'CIS - Ensure ''Accounts: Limit local account use of blank passwords to console logon only'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LimitBlankPasswordUse' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:accounts, requirement:standard, critical:false, control:accounts-limit-local-account-use-of-blank-passwords-to-console-logon-only-is-enabled, cis_safeguard_ids:CIS49.2 + description: 'This policy setting determines whether local accounts that are not password protected + + can be used to log on from locations other than the physical computer console. If you + + enable this policy setting, local accounts that have blank passwords will not be able to + + log on to the network from remote client computers. Such accounts will only be able to + + log on at the keyboard of the computer. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Accounts: Limit local account use of blank + + passwords to console logon only' + +- platform: windows + name: 'CIS - Ensure ''Interactive logon: Do not display last signed-in'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/InteractiveLogon_DoNotDisplayLastSignedIn' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:interactive-logon-do-not-display-last-signed-in-is-enabled, cis_safeguard_ids:CIS49.6 + description: 'This policy setting determines whether the account name of the last user to log on to the + + client computers in your organization will be displayed in each computer''s respective + + Windows logon screen. Enable this policy setting to prevent intruders from collecting + + account names visually from the screens of desktop or laptop computers in your + + organization. + + The recommended state for this setting is: Enabled. + + Warning: If the Self Service Password Reset (SSPR) feature is used in Microsoft Entra + + ID, an exception to this recommendation is needed as it''s known to interfere with SSPR. + + Warning #2: If the Windows passwordless experience feature is used, an exception to + + this recommendation is needed as it prevents this feature from working.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Interactive logon: Don''t display last signedin + + + Note: In older versions of Microsoft Windows, this setting was named Interactive logon: + + Do not display last user name, but it was renamed starting with Windows 10 Release + + 1703.' + +- platform: windows + name: 'CIS - Ensure ''Interactive logon: Do not require CTRL+ALT+DEL'' is set to ''Disabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/InteractiveLogon_DoNotRequireCTRLALTDEL' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:interactive-logon-do-not-require-ctrl-alt-del-is-disabled, cis_safeguard_ids:CIS49.7 + description: 'This policy setting determines whether users must press CTRL+ALT+DEL before they + + log on. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Local Policies Security Options\Interactive logon: Do not require + + CTRL+ALT+DEL' + +- platform: windows + name: 'CIS - Ensure ''Interactive logon: Machine inactivity limit'' is set to ''900 or fewer second(s), but not 0''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/InteractiveLogon_MachineInactivityLimit' AND CAST(mdm_command_output AS INTEGER) > 0 AND CAST(mdm_command_output AS INTEGER) <= 900; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:interactive-logon-machine-inactivity-limit-is-900-or-fewer-seconds-but-not-0, cis_safeguard_ids:CIS49.8 + description: 'Windows notices inactivity of a logon session, and if the amount of inactive time + + exceeds the inactivity limit, then the screen saver will run, locking the session. + + The recommended state for this setting is: 900 or fewer second(s), but not 0. + + Note: A value of 0 does not conform to the benchmark as it disables the machine + + inactivity limit.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 900 or fewer seconds, but not 0: + + Local Policies Security Options\Interactive logon: Machine inactivity limit' + +- platform: windows + name: 'CIS - Ensure ''Interactive logon: Smart card removal behavior'' is set to ''Lock Workstation'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/InteractiveLogon_SmartCardRemovalBehavior' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS49.11 + description: 'This policy setting determines what happens when the smart card for a logged-on user + + is removed from the smart card reader. + + The recommended state for this setting is: Lock Workstation. Configuring this setting + + to Force Logoff or Disconnect if a Remote Desktop Services session also + + conforms to the benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Lock Workstation (or, if applicable for your environment, + + Force Logoff or Disconnect if a Remote Desktop Services session): + + Local Policies Security Options\Interactive logon: Smart card removal + + behavior' + +- platform: windows + name: 'CIS - Ensure ''Microsoft network client: Digitally sign communications (always)'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/MicrosoftNetworkClient_DigitallySignCommunicationsAlways' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:session, requirement:standard, critical:false, control:microsoft-network-client-digitally-sign-communications-always-is-enabled, cis_safeguard_ids:CIS49.12 + description: 'This policy setting determines whether packet signing is required by the SMB client + + component. + + Note: When Windows Vista-based computers have this policy setting enabled and they + + connect to file or print shares on remote servers, it is important that the setting is + + synchronized with its companion setting, Microsoft network server: Digitally sign + + communications (always), on those servers. For more information about these + + settings, see the "Microsoft network client and server: Digitally sign communications + + (four related settings)" section in Chapter 5 of the Threats and Countermeasures guide. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Microsoft network client: Digitally sign + + communications (always)' + +- platform: windows + name: 'CIS - Ensure ''Microsoft network client: Digitally sign communications (if server agrees)'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/MicrosoftNetworkClient_DigitallySignCommunicationsIfServerAgrees' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:microsoft-network-client-digitally-sign-communications-if-server-agrees-is-enabled, cis_safeguard_ids:CIS49.13 + description: 'This policy setting determines whether the SMB client will attempt to negotiate SMB + + packet signing. + + Note: Enabling this policy setting on SMB clients on your network makes them fully + + effective for packet signing with all clients and servers in your environment. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Microsoft network client: Digitally sign + + communications (if server agrees)' + +- platform: windows + name: 'CIS - Ensure ''Microsoft network client: Send unencrypted password to third-party SMB servers'' is set to ''Disabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\EnablePlainTextPassword' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:microsoft-network-client-send-unencrypted-password-to-third-party-smb-servers-is-disabled, cis_safeguard_ids:CIS49.14 + description: 'This policy setting determines whether the SMB redirector will send plaintext passwords + + during authentication to third-party SMB servers that do not support password + + encryption. + + It is recommended that you disable this policy setting unless there is a strong business + + case to enable it. If this policy setting is enabled, unencrypted passwords will be allowed + + across the network. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Local Policies Security Options\Microsoft network client: Send unencrypted + + password to third-party SMB servers' + +- platform: windows + name: 'CIS - Ensure ''Microsoft network server: Digitally sign communications (always)'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/MicrosoftNetworkServer_DigitallySignCommunicationsAlways' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:microsoft-network-server-digitally-sign-communications-always-is-enabled, cis_safeguard_ids:CIS49.15 + description: 'This policy setting determines whether packet signing is required by the SMB server + + component. Enable this policy setting in a mixed environment to prevent downstream + + clients from using the workstation as a network server. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Microsoft network server: Digitally sign + + communications (always)' + +- platform: windows + name: 'CIS - Ensure ''Microsoft network server: Digitally sign communications (if client agrees)'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/MicrosoftNetworkServer_DigitallySignCommunicationsIfClientAgrees' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:microsoft-network-server-digitally-sign-communications-if-client-agrees-is-enabled, cis_safeguard_ids:CIS49.16 + description: 'This policy setting determines whether the SMB server will negotiate SMB packet + + signing with clients that request it. If no signing request comes from the client, a + + connection will be allowed without a signature if the Microsoft network server: + + Digitally sign communications (always) setting is not enabled. + + Note: Enable this policy setting on SMB clients on your network to make them fully + + effective for packet signing with all clients and servers in your environment. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Microsoft network server: Digitally sign + + communications (if client agrees)' + +- platform: windows + name: 'CIS - Ensure ''Network access: Do not allow anonymous enumeration of SAM accounts'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkAccess_DoNotAllowAnonymousEnumerationOfSAMAccounts' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-access-do-not-allow-anonymous-enumeration-of-sam-accounts-is-enabled, cis_safeguard_ids:CIS49.17 + description: 'This policy setting controls the ability of anonymous users to enumerate the accounts in + + the Security Accounts Manager (SAM). If you enable this policy setting, users with + + anonymous connections will not be able to enumerate domain account user names on + + the systems in your environment. This policy setting also allows additional restrictions + + on anonymous connections. + + The recommended state for this setting is: Enabled. + + Note: This policy has no effect on Domain Controllers.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Network access: Do not allow anonymous + + enumeration of SAM accounts' + +- platform: windows + name: 'CIS - Ensure ''Network access: Do not allow anonymous enumeration of SAM accounts and shares'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkAccess_DoNotAllowAnonymousEnumerationOfSamAccountsAndShares' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-access-do-not-allow-anonymous-enumeration-of-sam-accounts-and-shares-is-enabled, cis_safeguard_ids:CIS49.18 + description: 'This policy setting controls the ability of anonymous users to enumerate SAM accounts + + as well as shares. If you enable this policy setting, anonymous users will not be able to + + enumerate domain account user names and network share names on the systems in + + your environment. + + The recommended state for this setting is: Enabled. + + Note: This policy has no effect on Domain Controllers.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Network access: Do not allow anonymous + + enumeration of SAM accounts and shares' + +- platform: windows + name: 'CIS - Ensure ''Network access: Restrict anonymous access to Named Pipes and Shares'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkAccess_RestrictAnonymousAccessToNamedPipesAndShares' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-access-restrict-anonymous-access-to-named-pipes-and-shares-is-enabled, cis_safeguard_ids:CIS49.19 + description: 'When enabled, this policy setting restricts anonymous access to only those shares and + + pipes that are named in the Network access: Named pipes that can be accessed + + anonymously and Network access: Shares that can be accessed anonymously + + settings. This policy setting controls null session access to shares on your computers by + + adding RestrictNullSessAccess with the value 1 in the + + HKLM\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters + + registry key. This registry value toggles null session shares on or off to control whether + + the server service restricts unauthenticated clients'' access to named resources. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Network access: Restrict anonymous access to + + Named Pipes and Shares' + +- platform: windows + name: 'CIS - Ensure ''Network access: Restrict clients allowed to make remote calls to SAM'' is set to ''Administrators: Remote Access: Allow''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkAccess_RestrictClientsAllowedToMakeRemoteCallsToSAM' AND mdm_command_output LIKE '%BA%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-access-restrict-clients-allowed-to-make-remote-calls-to-sam-is-administrators-remote-access-allow, cis_safeguard_ids:CIS49.20 + description: 'This policy setting allows you to restrict remote RPC connections to SAM. + + The recommended state for this setting is: Administrators: Remote Access: Allow. + + Note: A Windows 10 R1607, Server 2016 or newer OS is required to access and set + + this value in Group Policy. + + Note #2: This setting was originally only supported on Windows 10 R1607 or newer, + + then support for it was added to Windows 7 or newer via the March 2017 security + + patches. + + Note #3: If your organization is using Microsoft Defender for Identity (formerly Azure + + Advanced Threat Protection (Azure ATP)), the (organization-named) Defender for + + Identity Directory Service Account (DSA), will also need to be granted the same Remote + + Access: Allow permission. For more information on adding the service account please + + see Configure SAM-R to enable lateral movement path detection in Microsoft Defender + + for Identity | Microsoft Docs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Administrators: Remote Access: Allow: + + Local Policies Security Options\Network access: Restrict clients allowed to + + make remote calls to SAM' + +- platform: windows + name: 'CIS - Ensure ''Network security: Allow Local System to use computer identity for NTLM'' is set to ''Allow''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_AllowLocalSystemToUseComputerIdentityForNTLM' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-security-allow-local-system-to-use-computer-identity-for-ntlm-is-allow, cis_safeguard_ids:CIS49.21 + description: 'This policy setting determines whether Local System services that use Negotiate when + + reverting to NTLM authentication can use the computer identity. This policy is supported + + on at least Windows 7 or Windows Server 2008 R2. + + The recommended state for this setting is: Allow.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allow: + + Local Policies Security Options\Network security: Allow Local System to use + + computer identity for NTLM' + +- platform: windows + name: 'CIS - Ensure ''Network Security: Allow PKU2U authentication requests'' is set to ''Block''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_AllowPKU2UAuthenticationRequests' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:network-security-allow-pku2u-authentication-requests-is-block, cis_safeguard_ids:CIS49.22 + description: 'This setting determines if online identities are able to authenticate to this computer. + + The Public Key Cryptography Based User-to-User (PKU2U) protocol introduced in + + Windows 7 and Windows Server 2008 R2 is implemented as a security support provider + + (SSP). The SSP enables peer-to-peer authentication, particularly through the Windows + + 7 media and file sharing feature called HomeGroup, which permits sharing between + + computers that are not members of a domain. + + With PKU2U, a new extension was introduced to the Negotiate authentication package, + + Spnego.dll. In previous versions of Windows, Negotiate decided whether to use + + Kerberos or NTLM for authentication. The extension SSP for Negotiate, Negoexts.dll, + + which is treated as an authentication protocol by Windows, supports Microsoft SSPs + + including PKU2U. + + When computers are configured to accept authentication requests by using online IDs, + + Negoexts.dll calls the PKU2U SSP on the computer that is used to log on. The + + PKU2U SSP obtains a local certificate and exchanges the policy between the peer + + computers. When validated on the peer computer, the certificate within the metadata is + + sent to the logon peer for validation and associates the user''s certificate to a security + + token and the logon process completes. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Local Policies Security Options\Network Security: Allow PKU2U authentication + + requests to this computer' + +- platform: windows + name: 'CIS - Ensure ''Network security: Do not store LAN Manager hash value on next password change'' is set to ''Enabled''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_DoNotStoreLANManagerHashValueOnNextPasswordChange' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-security-do-not-store-lan-manager-hash-value-on-next-password-change-is-enabled, cis_safeguard_ids:CIS49.23 + description: 'This policy setting determines whether the LAN Manager (LM) hash value for the new + + password is stored when the password is changed. The LM hash is relatively weak and + + prone to attack compared to the cryptographically stronger Microsoft Windows NT hash. + + Since LM hashes are stored on the local computer in the security database, passwords + + can then be easily compromised if the database is attacked. + + Note: Older operating systems and some third-party applications may fail when this + + policy setting is enabled. Also, note that the password will need to be changed on all + + accounts after you enable this setting to gain the proper benefit. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\Network security: Do not store LAN Manager + + hash value on next password change' + +- platform: windows + name: 'CIS - Ensure ''Network security: LAN Manager authentication level'' is set to ''Send LM and NTLMv2 responses only. Refuse LM and NTLM''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_LANManagerAuthenticationLevel' AND mdm_command_output = '5'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-security-lan-manager-authentication-level-is-send-lm-and-ntlmv2-responses-only-refuse-lm-and-ntlm, cis_safeguard_ids:CIS49.24 + description: 'LAN Manager (LM) was a family of early Microsoft client/server software (predating + + Windows NT) that allowed users to link personal computers together on a single + + network. LM network capabilities included transparent file and print sharing, user + + security features, and network administration tools. In Active Directory domains, the + + Kerberos protocol is the default authentication protocol. However, if the Kerberos + + protocol is not negotiated for some reason, Active Directory will use LM, NTLM, or + + NTLMv2. LAN Manager authentication includes the LM, NTLM, and NTLM version 2 + + (NTLMv2) variants, and is the protocol that is used to authenticate all Windows clients + + when they perform the following operations: + + • + + • + + • + + • + + • + + + Join a domain + + Authenticate between Active Directory forests + + Authenticate to down-level domains + + Authenticate to computers that do not run Windows 2000, Windows Server 2003, + + or Windows XP + + Authenticate to computers that are not in the domain + + + The Network security: LAN Manager authentication level setting determines which + + challenge/response authentication protocol is used for network logons. This choice + + affects the level of authentication protocol used by clients, the level of session security + + negotiated, and the level of authentication accepted by servers. + + The recommended state for this setting is: Send LM and NTLMv2 responses only. + + Refuse LM and NTLM.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to: Send LM and NTLMv2 responses only. Refuse LM and + + NTLM: + + Local Policies Security Options\Network security: LAN Manager authentication + + level' + +- platform: windows + name: CIS - Ensure 'Network Security Minimum Session Security For NTLMSSP Based Clients' is set to 'Require NTLM and 128-bit encryption' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_MinimumSessionSecurityForNTLMSSPBasedClients' AND mdm_command_output = '537395200'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:network-security-minimum-session-security-for-ntlmssp-based-clients-is-require-ntlm-and-128-bit-encryption, cis_safeguard_ids:CIS49.25 + description: 'This policy setting determines which behaviors are allowed by clients for applications + + using the NTLM Security Support Provider (SSP). The SSP Interface (SSPI) is used by + + applications that need authentication services. The setting does not modify how the + + authentication sequence works but instead require certain behaviors in applications that + + use the SSPI. + + The recommended state for this setting is: Require NTLM and 128-bit encryption. + + Note: These values are dependent on the Network security: LAN Manager + + Authentication Level security setting value.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Require NTLM and 128-bit encryption: + + Local Policies Security Options\Network security: Minimum session security + + for NTLM SSP based (including secure RPC) clients' + +- platform: windows + name: CIS - Ensure 'Network Security Minimum Session Security For NTLMSSP Based Servers' is set to 'Require NTLM and 128bit encryption' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_MinimumSessionSecurityForNTLMSSPBasedServers' AND mdm_command_output = '537395200'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS49.26 + description: 'This policy setting determines which behaviors are allowed by servers for applications + + using the NTLM Security Support Provider (SSP). The SSP Interface (SSPI) is used by + + applications that need authentication services. The setting does not modify how the + + authentication sequence works but instead require certain behaviors in applications that + + use the SSPI. + + The recommended state for this setting is: Require NTLM and 128-bit encryption. + + Note: These values are dependent on the Network security: LAN Manager + + Authentication Level security setting value.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Require NTLM and 128-bit encryption: + + Local Policies Security Options\Network security: Minimum session security + + for NTLM SSP based (including secure RPC) servers' + +- platform: windows + name: 'CIS - Ensure ''Network security: Restrict NTLM: Audit Incoming NTLM Traffic'' is set to ''Enable auditing for all accounts''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/NetworkSecurity_RestrictNTLM_AuditIncomingNTLMTraffic' AND mdm_command_output = '2'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:network, requirement:standard, critical:false, control:network-security-restrict-ntlm-audit-incoming-ntlm-traffic-is-enable-auditing-for-all-accounts, cis_safeguard_ids:CIS49.27 + description: 'This policy setting allows the auditing of incoming NTLM traffic. Events for this setting + + are recorded in the operational event log (e.g. Applications and Services + + Log\Microsoft\Windows\NTLM). + + The recommended state for this setting is: Enable auditing for all accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enable auditing for all accounts: + + Local Policies Security Options\Network security: Restrict NTLM: Audit + + Incoming NTLM Traffic' + +- platform: windows + name: 'CIS - Ensure ''User Account Control: Behavior of the elevation prompt for administrators'' is set to ''Prompt for consent on the secure desktop'' or higher' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/UserAccountControl_BehaviorOfTheElevationPromptForAdministrators' AND mdm_command_output = '2'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS49.28 + description: 'This policy setting controls the behavior of the elevation prompt for administrators. + + The recommended state for this setting is: Prompt for consent on the secure + + desktop. Configuring this setting to Prompt for credentials on the secure + + desktop also conforms to the benchmark.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Prompt for consent on the secure desktop or Prompt + + for credentials on the secure desktop: + + Local Policies Security Options\User Account Control: Behavior of the + + elevation prompt for administrators' + +- platform: windows + name: 'CIS - Ensure ''User Account Control: Behavior of the elevation prompt for standard users'' is set to ''Automatically deny elevation requests''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/UserAccountControl_BehaviorOfTheElevationPromptForStandardUsers' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:user-account-control-behavior-of-the-elevation-prompt-for-standard-users-is-automatically-deny-elevation-requests, cis_safeguard_ids:CIS49.29 + description: 'This policy setting controls the behavior of the elevation prompt for standard users. + + The recommended state for this setting is: Automatically deny elevation + + requests.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Automatically deny elevation requests: + + Local Policies Security Options\User Account Control: Behavior of the + + elevation prompt for standard users' + +- platform: windows + name: 'CIS - Ensure ''User Account Control: Detect application installations and prompt for elevation'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableInstallerDetection' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:user-account-control-detect-application-installations-and-prompt-for-elevation-is-enabled, cis_safeguard_ids:CIS49.30 + description: 'This policy setting controls the behavior of application installation detection for the + + computer. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\User Account Control: Detect application + + installations and prompt for elevation' + +- platform: windows + name: 'CIS - Ensure ''User Account Control: Only elevate UIAccess applications that are installed in secure locations'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableSecureUIAPaths' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:user-account-control-only-elevate-uiaccess-applications-that-are-installed-in-secure-locations-is-enabled, cis_safeguard_ids:CIS49.31 + description: 'This policy setting controls whether applications that request to run with a User Interface + + Accessibility (UIAccess) integrity level must reside in a secure location in the file + + system. Secure locations are limited to the following: + + • + + • + + • + + + …\Program Files\, including subfolders + + …\Windows\System32\ + + …\Program Files (x86)\, including subfolders (for 64-bit versions of Windows) + + + Note: Windows enforces a public key infrastructure (PKI) signature check on any + + interactive application that requests to run with a UIAccess integrity level regardless of + + the state of this security setting. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\User Account Control: Only elevate UIAccess + + applications that are installed in secure locations' + +- platform: windows + name: CIS - Ensure 'User Account Control Use Admin Approval Mode' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:user-account-control-use-admin-approval-mode-is-enabled, cis_safeguard_ids:CIS49.32 + description: 'This policy setting controls the behavior of Admin Approval Mode for the built-in + + Administrator account. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\User Account Control: Use Admin Approval Mode' + +- platform: windows + name: 'CIS - Ensure ''User Account Control: Switch to the secure desktop when prompting for elevation'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:authn, requirement:standard, critical:false, control:user-account-control-switch-to-the-secure-desktop-when-prompting-for-elevation-is-enabled, cis_safeguard_ids:CIS49.33 + description: 'This policy setting controls whether the elevation request prompt is displayed on the + + interactive user''s desktop or the secure desktop. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\User Account Control: Switch to the secure + + desktop when prompting for elevation' + +- platform: windows + name: CIS - Ensure 'User Account Control Run all administrators in Admin Approval Mode' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:user-account-control-run-all-administrators-in-admin-approval-mode-is-enabled, cis_safeguard_ids:CIS49.34 + description: 'This policy setting controls the behavior of all User Account Control (UAC) policy + + settings for the computer. If you change this policy setting, you must restart your + + computer. + + The recommended state for this setting is: Enabled. + + Note: If this policy setting is disabled, the Security Center notifies you that the overall + + security of the operating system has been reduced.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\User Account Control: Run all administrators + + in Admin Approval Mode' + +- platform: windows + name: 'CIS - Ensure ''User Account Control: Virtualize file and registry write failures to per-user locations'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableVirtualization' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations-is-enabled, cis_safeguard_ids:CIS49.35 + description: 'This policy setting controls whether application write failures are redirected to defined + + registry and file system locations. This policy setting mitigates applications that run as + + administrator and write run-time application data to: + + • + + • + + • + + • + + + %ProgramFiles% + + %windir% + + %windir%\System32 + + HKLM\SOFTWARE + + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Local Policies Security Options\User Account Control: Virtualize file and + + registry write failures to per-user locations' + +- platform: windows + name: CIS - Ensure 'Configure Lsa Protected Process is set to 'Enabled with UEFI Lock...' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\RunAsPPL' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS50.1 + description: 'This policy setting controls whether the Local Security Authority Subservice Service + + (LSASS) runs in protected mode and also has the option to lock in protected mode with + + Unified Extensible Firmware Interface (UEFI). The Local Security Authority (LSA), which + + includes the LSASS process, validates users for local and remote sign-ins and enforces + + local security policies. + + The recommended state for this setting is: Enabled with UEFI lock. LSA will run + + as protected process and this configuration is UEFI locked.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled with UEFI lock.... + + Local Security Authority\Configure Lsa Protected Process' + +- platform: windows + name: CIS - Ensure 'Allow apps from the Microsoft app store to auto update' is set to 'Allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ApplicationManagement/AllowAppStoreAutoUpdate' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-apps-from-the-microsoft-app-store-to-auto-update-is-allowed, cis_safeguard_ids:CIS55.1 + description: 'This setting enables or disables the automatic download and installation of Microsoft + + Store app updates. + + The recommended state for this setting is: Allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allowed: + + Microsoft App Store\Allow apps from the Microsoft app store to auto update' + +- platform: windows + name: CIS - Ensure 'Allow Game DVR' is set to 'Block' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ApplicationManagement/AllowGameDVR' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-game-dvr-is-block, cis_safeguard_ids:CIS55.2 + description: 'This setting enables or disables the Windows Game Recording and Broadcasting + + features. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Microsoft App Store\Allow Game DVR' + +- platform: windows + name: CIS - Ensure 'Block Non Admin User Install' is set to 'Allow' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\DisableMSI' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:network, requirement:standard, critical:false, control:block-non-admin-user-install-is-allow, cis_safeguard_ids:CIS55.4 + description: 'This setting manages non-Administrator users'' ability to install Windows app packages. + + The recommended state for this setting is: Allow. + + Warning: If the Self Service Password Reset (SSPR) feature is used in Microsoft Entra + + ID, an exception to this recommendation is needed as it''s known to interfere with SSPR.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Allow. + + Microsoft App Store\Block Non Admin User Install' + +- platform: windows + name: CIS - Ensure 'MSI Allow user control over installs' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ApplicationManagement/MSIAllowUserControlOverInstall' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:msi-allow-user-control-over-installs-is-disabled, cis_safeguard_ids:CIS55.6 + description: 'This setting controls whether users are permitted to change installation options that + + typically are available only to system administrators. The security features of Windows + + Installer normally prevent users from changing installation options that are typically + + reserved for system administrators, such as specifying the directory to which files are + + installed. If Windows Installer detects that an installation package has permitted the + + user to change a protected option, it stops the installation and displays a message. + + These security features operate only when the installation program is running in a + + privileged security context in which it has access to directories denied to the user. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Microsoft App Store\MSI Allow user control over installs' + +- platform: windows + name: CIS - Ensure 'MSI Always install with elevated privileges' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ApplicationManagement/MSIAlwaysInstallWithElevatedPrivileges' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:msi-always-install-with-elevated-privileges-is-disabled, cis_safeguard_ids:CIS55.7 + description: 'This setting controls whether or not Windows Installer should use system permissions + + when it installs any program on the system. + + Note: This setting appears both in the Computer Configuration and User Configuration + + folders. To make this setting effective, you must enable the setting in both folders. + + Caution: If enabled, skilled users can take advantage of the permissions this setting + + grants to change their privileges and gain permanent access to restricted files and + + folders. Note that the User Configuration version of this setting is not guaranteed to be + + secure. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Microsoft App Store\MSI Always install with elevated privileges' + +- platform: windows + name: CIS - Ensure 'MSI Always install with elevated privileges (User)' is set to 'Disabled' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\S-1-%\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:msi-always-install-with-elevated-privileges-user-is-disabled, cis_safeguard_ids:CIS55.8 + description: 'This setting controls whether or not Windows Installer should use system permissions + + when it installs any program on the system. + + Note: This setting appears both in the Computer Configuration and User Configuration + + folders. To make this setting effective, you must enable the setting in both folders. + + Caution: If enabled, skilled users can take advantage of the permissions this setting + + grants to change their privileges and gain permanent access to restricted files and + + folders. Note that the User Configuration version of this setting is not guaranteed to be + + secure. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled: + + Microsoft App Store\MSI Always install with elevated privileges (User)' + +- platform: windows + name: CIS - Ensure 'Allow Input Personalization' is set to 'Block' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Privacy/AllowInputPersonalization' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-input-personalization-is-block, cis_safeguard_ids:CIS68.2 + description: 'This policy enables the automatic learning component of input personalization that + + includes speech, inking, and typing. Automatic learning enables the collection of speech + + and handwriting patterns, typing history, contacts, and recent calendar information. It is + + required for the use of Cortana. Some of this collected information may be stored on the + + user''s OneDrive, in the case of inking and typing; some of the information will be + + uploaded to Microsoft to personalize speech. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Privacy\Allow Input Personalization' + +- platform: windows + name: 'CIS - Ensure ''Let Apps Activate With Voice Above Lock'' is set to ''Enabled: Force Deny''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Privacy/LetAppsActivateWithVoiceAboveLock' AND mdm_command_output = '2'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:let-apps-activate-with-voice-above-lock-is-enabled-force-deny, cis_safeguard_ids:CIS68.4 + description: 'This policy setting specifies whether Windows apps can be activated by voice (apps and + + Cortana) while the system is locked. + + The recommended state for this setting is: Enabled: Force Deny.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Force Deny: + + Privacy\Let Apps Activate With Voice Above Lock' + +- platform: windows + name: CIS - Ensure 'Allow Indexing Encrypted Stores Or Items' is set to 'Block' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Search/AllowIndexingEncryptedStoresOrItems' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-indexing-encrypted-stores-or-items-is-block, cis_safeguard_ids:CIS72.2 + description: 'This policy setting controls whether encrypted items are allowed to be indexed. When + + this setting is changed, the index is rebuilt completely. Full volume encryption (such as + + BitLocker Drive Encryption or a non-Microsoft solution) must be used for the location of + + the index to maintain security for encrypted files. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Search\Allow Indexing Encrypted Stores Or Items' + +- platform: windows + name: CIS - Ensure 'Allow Search To Use Location' is set to 'Block' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Search/AllowSearchToUseLocation' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-search-to-use-location-is-block, cis_safeguard_ids:CIS72.3 + description: 'This policy setting specifies whether search and Cortana can provide location aware + + search and Cortana results. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block: + + Search\Allow search to use location' + +- platform: windows + name: CIS - Ensure 'Notify Malicious' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WebThreatDefense/NotifyMalicious' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:notify-malicious-is-enabled, cis_safeguard_ids:CIS76.1.1 + description: 'This policy setting determines whether Enhanced Phishing Protection in Microsoft + + Defender SmartScreen warns users if they type their work or school password into one + + of the following malicious scenarios: into a reported phishing site, into a Microsoft login + + URL with an invalid certificate, or into an application connecting to either a reported + + phishing site or a Microsoft login URL with an invalid certificate. + + The recommended state for this setting is: Enabled. + + Note: This setting only applies to Microsoft Accounts (computer or browser login) while + + using Microsoft Windows 11 and not on-prem domain-joined accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Smart Screen\Enhanced Phishing Protection\Notify Malicious' + +- platform: windows + name: CIS - Ensure 'Notify Password Reuse' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WebThreatDefense/NotifyPasswordReuse' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:notify-password-reuse-is-enabled, cis_safeguard_ids:CIS76.1.2 + description: 'This policy setting determines whether Enhanced Phishing Protection in Microsoft + + Defender SmartScreen warns users if they reuse their work or school password. + + The recommended state for this setting is: Enabled. + + Note: This setting only applies to Microsoft Accounts (computer or browser login) while + + using Microsoft Windows 11 and not on prem domain-joined accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Smart Screen\Enhanced Phishing Protection\Notify Password Reuse' + +- platform: windows + name: CIS - Ensure 'Notify Unsafe App' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WebThreatDefense/NotifyUnsafeApp' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:notify-unsafe-app-is-enabled, cis_safeguard_ids:CIS76.1.3 + description: 'This policy setting determines whether Enhanced Phishing Protection in Microsoft + + Defender SmartScreen warns users if they type their work or school passwords in + + Notepad, WordPad, or M365 Office apps like OneNote, Word, Excel, etc. + + The recommended state for this setting is: Enabled. + + Note: This setting only applies to Microsoft Accounts (computer or browser login) while + + using Microsoft Windows 11 and not on prem domain-joined accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Smart Screen\Enhanced Phishing Protection\Notify Unsafe App' + +- platform: windows + name: CIS - Ensure 'Service Enabled' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WTDS\Components\ServiceEnabled' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS76.1.4 + description: 'This policy setting determines whether Enhanced Phishing Protection is in audit mode. + + This allows notifications to be sent to users regarding unsafe password events. + + Additionally, Enhanced Phishing Protection captures unsafe password entry events and + + sends diagnostic data through Microsoft Defender. + + The recommended state for this setting is: Enabled. + + Note: This setting only applies to Microsoft accounts (computer or browser login) while + + using Microsoft Windows 11 and not on-prem domain-joined accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + Smart Screen\Enhanced Phishing Protection\Service Enabled' + +- platform: windows + name: CIS - Ensure 'Enable Sudo' is set to 'Sudo is disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Sudo/EnableSudo' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-sudo-is-sudo-is-disabled, cis_safeguard_ids:CIS79.1 + description: 'This policy setting configures the use of the sudo.exe command line tool. The sudo + + feature in Windows allows users to run elevated commands (as an administrator) + + directly from an unelevated console session. + + The recommended state for this setting is: Sudo is disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Sudo is disabled. + + Sudo\Enable Sudo' + +- platform: windows + name: CIS - Ensure 'Allow Telemetry' is set to 'Basic' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/System/AllowTelemetry' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-telemetry-is-basic, cis_safeguard_ids:CIS80.3 + description: 'This policy setting determines the amount of diagnostic and usage data reported to + + Microsoft: + + The recommended state for this setting is: Basic or Security. + + Note: If your organization relies on Windows Update, the minimum recommended + + setting is Required diagnostic data. Because no Windows Update information is + + collected when diagnostic data is off, important information about update failures is not + + sent. Microsoft uses this information to fix the causes of those failures and improve the + + quality of updates. + + Note #2: The Configure diagnostic data opt-in settings user interface group policy can + + be used to prevent end users from changing their data collection settings. + + Note #3: Enhanced diagnostic data setting is not available on Windows 11 and + + Windows Server 2022 and has been replaced with policies that can control the amount + + of optional diagnostic data that is sent. For more information on these settings visit + + Manage diagnostic data using Group Policy and MDM' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Basic or Security: + + System\Allow Telemetry' + +- platform: windows + name: CIS - Ensure 'Enable OneSettings Auditing' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection\EnableOneSettingsAuditing' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-onesettings-auditing-is-enabled, cis_safeguard_ids:CIS80.6 + description: 'This policy setting controls whether Windows records attempts to connect with the + + OneSettings service to the Event Log. + + The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + System\Enable OneSettings Auditing' + +- platform: windows + name: CIS - Ensure 'Limit Diagnostic Log Collection' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/System/LimitDiagnosticLogCollection' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:limit-diagnostic-log-collection-is-enabled, cis_safeguard_ids:CIS80.7 + description: 'This policy setting controls whether additional diagnostic logs are collected when more + + information is needed to troubleshoot a problem on the device. + + The recommended state for this setting is: Enabled. + + Note: Diagnostic logs are only sent when the device has been configured to send + + optional diagnostic data. Diagnostic data is limited when recommendation Allow + + Diagnostic Data is set to Enabled: Diagnostic data off (not recommended) or + + Enabled: Send required diagnostic data to send only basic information.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: + + System\Limit Diagnostic Log Collection' + +- platform: windows + name: CIS - Ensure 'Limit Dump Collection' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/System/LimitDumpCollection' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:limit-dump-collection-is-enabled, cis_safeguard_ids:CIS80.8 + description: 'This policy setting limits the type of memory dumps that can be collected when more + + information is needed to troubleshoot a problem. + + The recommended state for this setting is: Enabled. + + Note: Memory dumps are only sent when the device has been configured to send + + optional diagnostic data. Diagnostic data is limited when recommendation Allow + + Diagnostic Data is set to Enabled: Diagnostic data off (not recommended) or + + Enabled: Send required diagnostic data to send only basic information.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled. + + System\Limit Dump Collection' + +- platform: windows + name: CIS - Ensure 'Computer Browser (Browser)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'Browser'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.3 + description: 'Maintains an updated list of computers on the network and supplies this list to + + computers designated as browsers. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: In Windows 8.1 and Windows 10, this service is bundled with the SMB 1.0/CIFS + + File Sharing Support optional feature. As a result, removing that feature (highly + + recommended unless backward compatibility is needed to XP/2003 and older Windows + + OSes - see Stop using SMB1 | Storage at Microsoft) will also remediate this + + recommendation. The feature is not installed by default starting with Windows 10 + + R1709.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureComputerBrowserSer + + viceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell, by running the + + following cmdlet: + + if(Test-Path -LiteralPath "HKLM:\SYSTEM\CurrentControlSet\Services\Browser") + + { + + Set-ItemProperty -LiteralPath + + ''HKLM:\SYSTEM\CurrentControlSet\Services\Browser'' -Name ''Start'' -Value 4 Verbose + + } + + + Note: This service is not installed in Windows 10 R1709 and newer. Running the cmdlet + + Set-Service or Get-Service aganist ''Browser'' will cause a inadvertent match + + against a similarly named service called bowser which also has the DisplayName of + + Browser which will then throw an error. bowser is actually the NT Lan Manager + + Datagram Receiver Driver. Using the literal registry path above avoids that error.' + +- platform: windows + name: CIS - Ensure 'IIS Admin Service (IISADMIN)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM services WHERE name = 'IISADMIN') OR EXISTS (SELECT 1 FROM services WHERE name = 'IISADMIN' AND start_type = 'DISABLED'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.7 + description: 'Enables the server to administer the IIS metabase. The IIS metabase stores + + configuration for the SMTP and FTP services. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but is installed + + by enabling an optional Windows feature (Internet Information Services). + + Note #2: An organization may choose to selectively grant exceptions to web developers + + to allow IIS (or another web server) on their workstation, in order for them to locally test + + & develop web pages. However, the organization should track those machines and + + ensure the security controls and mitigations are kept up to date, to reduce risk of + + compromise.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureIISAdminServiceSta + + rtupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name IISADMIN -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Infrared monitor service (irmon)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'irmon'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.8 + description: 'Detects other Infrared devices that are in range and launches the file transfer + + application. + + The recommended state for this setting is: Disabled or Not Installed.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureInfraredMonitorSer + + viceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name irmon -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'LxssManager (LxssManager)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM services WHERE name = 'LxssManager') OR EXISTS (SELECT 1 FROM services WHERE name = 'LxssManager' AND start_type = 'DISABLED'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.10 + description: 'The LXSS Manager service supports running native ELF binaries. The service provides + + the infrastructure necessary for ELF binaries to run on Windows. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but is installed + + by enabling an optional Windows feature (Windows Subsystem for Linux).' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureLxssManagerService + + StartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name LxssManager -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Microsoft FTP Service (FTPSVC)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'FTPSVC'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.11 + description: 'Enables the server to be a File Transfer Protocol (FTP) server. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but is installed + + by enabling an optional Windows feature (Internet Information Services - FTP Server).' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureMicrosoftFTPServic + + eStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name FTPSVC -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'OpenSSH SSH Server (sshd)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'sshd'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.13 + description: 'SSH protocol based service to provide secure encrypted communications between two + + untrusted hosts over an insecure network. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but it is + + installed by enabling an optional Windows feature (OpenSSH Server).' + resolution: 'Remediation of this service is currently not possible through Settings Catalog or a + + custom profile OMA-URI. Instead, it can be scripted and deployed through the Intune + + Scripts or Remediations blade or by other means. + + To establish the recommended configuration via PowerShell, run the following cmdlet: + + Set-Service -Name sshd -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Remote Procedure Call (RPC) Locator (RpcLocator)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'RpcLocator'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:remote-procedure-call-rpc-locator-rpclocator-is-disabled, cis_safeguard_ids:CIS81.20 + description: 'In Windows 2003 and older versions of Windows, the Remote Procedure Call (RPC) + + Locator service manages the RPC name service database. In Windows Vista or newer + + versions of Windows, this service does not provide any functionality and is present for + + application compatibility. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureRemoteProcedureCal + + lLocatorServiceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name RpcLocator -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Routing and Remote Access (RemoteAccess)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'RemoteAccess'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:routing-and-remote-access-remoteaccess-is-disabled, cis_safeguard_ids:CIS81.22 + description: 'Offers routing services to businesses in local area and wide area network environments. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureRoutingAndRemoteAc + + cessServiceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name RemoteAccess -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Simple TCP/IP Services (simptcp)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'simptcp'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.24 + description: 'Supports the following TCP/IP services: Character Generator, Daytime, Discard, Echo, + + and Quote of the Day. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but is installed + + by enabling an optional Windows feature (Simple TCPIP services (i.e. echo, daytime + + etc)).' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureSimpleTCPIPService + + sStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name simptcp -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Special Administration Console Helper (sacsvr)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'sacsvr'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.26 + description: 'This service allows administrators to remotely access a command prompt using + + Emergency Management Services. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but it is + + installed by enabling an optional Windows capability (Windows Emergency + + Management Services and Serial Console).' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureSpecialAdministrat + + ionConsoleHelperServiceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name sacsvr -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'SSDP Discovery (SSDPSRV)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'SSDPSRV'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:ssdp-discovery-ssdpsrv-is-disabled, cis_safeguard_ids:CIS81.27 + description: 'Discovers networked devices and services that use the SSDP discovery protocol, such + + as UPnP devices. Also announces SSDP devices and services running on the local + + computer. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureSSDPDiscoveryServi + + ceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name SSDPSRV -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'UPnP Device Host (upnphost)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'upnphost'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:upnp-device-host-upnphost-is-disabled, cis_safeguard_ids:CIS81.28 + description: 'Allows UPnP devices to be hosted on this computer. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureUPnPDeviceHostServ + + iceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name upnphost -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Web Management Service (WMSvc)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'WMSvc'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.29 + description: 'The Web Management Service enables remote and delegated management capabilities + + for administrators to manage for the Web server, sites and applications present on the + + machine. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but is installed + + by enabling an optional Windows feature (Internet Information Services - Web + + Management Tools - IIS Management Service).' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureWebManagementServi + + ceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name WMSvc -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Windows Media Player Network Sharing Service (WMPNetworkSvc)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'WMPNetworkSvc'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.32 + description: 'Shares Windows Media Player libraries to other networked players and media devices + + using Universal Plug and Play. + + The recommended state for this setting is: Disabled or Not Installed.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureWindowsMediaPlayer + + NetworkSharingServiceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name WMPNetworkSvc -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Windows Mobile Hotspot Service (icssvc)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'icssvc'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:windows-mobile-hotspot-service-icssvc-is-disabled, cis_safeguard_ids:CIS81.33 + description: 'Provides the ability to share a cellular data connection with another device. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureWindowsMobileHotsp + + otServiceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name icssvc -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'World Wide Web Publishing Service (W3SVC)' is set to 'Disabled' or 'Not Installed' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'W3SVC'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS81.38 + description: 'Provides Web connectivity and administration through the Internet Information Services + + Manager. + + The recommended state for this setting is: Disabled or Not Installed. + + Note: This service is not installed by default. It is supplied with Windows, but is installed + + by enabling an optional Windows feature (Internet Information Services - World Wide + + Web Services). + + Note #2: An organization may choose to selectively grant exceptions to web developers + + to allow IIS (or another web server) on their workstation, in order for them to locally test + + & develop web pages. However, the organization should track those machines and + + ensure the security controls and mitigations are kept up to date, to reduce risk of + + compromise.' + resolution: 'To establish the recommended configuration, set the following Custom Configuration + + Policy to 4 or confirm that the service is Not installed: + + Name: + + + + Description: + + OMA-URI: + + ./Device/Vendor/MSFT/Policy/Config/SystemServices/ConfigureWorldWideWebPublis + + hingServiceStartupMode + + Data Type: + + Integer + + Value: + + 4 + + + Note: As of January 2024, despite its inclusion in Microsoft’s official documentation, + + using an OMI-URI to configure a Windows Service Startup Mode via a custom profile + + will lead to an error in Intune. This error will be logged in the local event log as “The + + system cannot find the file specified.” Currently, the most reliable method for + + remediation is through PowerShell. + + The recommended configuration can also be established via PowerShell by running the + + following cmdlet: + + Set-Service -Name W3SVC -StartupType Disabled' + +- platform: windows + name: CIS - Ensure 'Xbox Accessory Management Service (XboxGipSvc)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'XboxGipSvc'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:xbox-accessory-management-service-xboxgipsvc-is-disabled, cis_safeguard_ids:CIS81.39 + description: 'This service manages connected Xbox Accessories. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + System Services\Xbox Accessory Management Service' + +- platform: windows + name: CIS - Ensure 'Xbox Live Auth Manager (XblAuthManager)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'XblAuthManager'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:xbox-live-auth-manager-xblauthmanager-is-disabled, cis_safeguard_ids:CIS81.40 + description: 'Provides authentication and authorization services for interacting with Xbox Live. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + System Services\Xbox Live Auth Manager' + +- platform: windows + name: CIS - Ensure 'Xbox Live Game Save (XblGameSave)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'XblGameSave'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:xbox-live-game-save-xblgamesave-is-disabled, cis_safeguard_ids:CIS81.41 + description: 'This service syncs save data for Xbox Live save enabled games. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + System Services\Xbox Live Game Save' + +- platform: windows + name: CIS - Ensure 'Xbox Live Networking Service (XboxNetApiSvc)' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'XboxNetApiSvc'), 'DISABLED') = 'DISABLED'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:xbox-live-networking-service-xboxnetapisvc-is-disabled, cis_safeguard_ids:CIS81.42 + description: 'This service supports the Windows.Networking.XboxLive application programming + + interface. + + The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disabled. + + System Services\Xbox Live Networking Service' + +- platform: windows + name: CIS - Ensure 'Access Credential Manager As Trusted Caller' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/AccessCredentialManagerAsTrustedCaller' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.1 + description: 'This security setting is used by Credential Manager during Backup and Restore. No + + accounts should have this user right, as it is only assigned to Winlogon. Users'' saved + + credentials might be compromised if this user right is assigned to other entities. + + The recommended state for this setting is: No One.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which represents No One. + + User Rights\Access Credential Manager As Trusted Caller + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but this does not affect the policy setting from being applied properly to + + the system.' + +- platform: windows + name: CIS - Ensure 'Access From Network' is set to 'Administrators, Remote Desktop Users' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/AccessFromNetwork' AND (mdm_command_output LIKE '%Administrators%' AND mdm_command_output LIKE '%Remote Desktop Users%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.2 + description: 'This policy setting allows other users on the network to connect to the computer and is + + required by various network protocols that include Server Message Block (SMB)-based + + protocols, NetBIOS, Common Internet File System (CIFS), and Component Object + + Model Plus (COM+). + + The recommended state for this setting is: *S-1-5-32-544 and *S-1-5-32-555 + + (Administrators, Remote Desktop Users). + + Note: If your organization is using Microsoft Defender for Identity (formerly Azure + + Advanced Threat Protection (Azure ATP)), the (organization-named) Defender for + + Identity Directory Service Account (DSA), will also need to be granted the same Access + + from network User Right Assignment. For more information on adding the service + + account please see Make sure the DSA is allowed to access computers from the + + network in Microsoft Defender for Identity | Microsoft Docs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 and *S-1-5-32-555 (Administrators, Remote + + Desktop Users). + + User Rights\Access From Network + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Act As Part Of The Operating System' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ActAsPartOfTheOperatingSystem' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.3 + description: 'This policy setting allows a process to assume the identity of any user and thus gain + + access to the resources that the user is authorized to access. + + The recommended state for this setting is: No One. + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which equals No One. + + User Rights\Act As Part Of The Operating System + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but does not affect the policy setting from being applied to the system + + properly.' + +- platform: windows + name: CIS - Ensure 'Allow Local Log On' is set to 'Administrators, Users' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/AllowLocalLogOn' AND (mdm_command_output LIKE '%Administrators%' AND mdm_command_output LIKE '%Users%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.4 + description: 'This policy setting determines which users can interactively log on to computers in your + + environment. Logons that are initiated by pressing the CTRL+ALT+DEL key sequence + + on the client computer keyboard require this user right. Users who attempt to log on + + through Terminal Services / Remote Desktop Services or IIS also require this user right. + + The recommended state for this setting is: *S-1-5-32-544, *S-1-5-32-545 + + (Administrators, Users). + + Note: The Guest account is also assigned this user right by default. Although this + + account is disabled by default, it''s recommended that you configure this setting through + + Group Policy. However, this user right should generally be restricted to the + + Administrators and Users groups. Assign this user right to the Backup Operators + + group if your organization requires that they have this capability.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544, *S-1-5-32-545 (Administrators, Users). + + User Rights\Allow Local Log On + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Backup Files And Directories' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/BackupFilesAndDirectories' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.5 + description: 'This policy setting allows users to circumvent file and directory permissions to back up + + the system. This user right is enabled only when an application (such as NTBACKUP) + + attempts to access a file or directory through the NTFS file system backup application + + programming interface (API). Otherwise, the assigned file and directory permissions + + apply. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Backup Files And Directories + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Change System Time' is set to 'Administrators, LOCAL SERVICE' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ChangeSystemTime' AND (mdm_command_output LIKE '%Administrators%' AND mdm_command_output LIKE '%LOCAL SERVICE%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.6 + description: 'This policy setting determines which users and groups can change the time and date on + + the internal clock of the computers in your environment. Users who are assigned this + + user right can affect the appearance of event logs. When a computer''s time setting is + + changed, logged events reflect the new time, not the actual time that the events + + occurred. + + The recommended state for this setting is: *S-1-5-32-544 and *S-1-5-19 + + (Administrators, LOCAL SERVICE). + + Note: Discrepancies between the time on the local computer and on the Domain + + Controllers in your environment may cause problems for the Kerberos authentication + + protocol, which could make it impossible for users to log on to the domain or obtain + + authorization to access domain resources after they are logged on. Also, problems will + + occur when Group Policy is applied to client computers if the system time is not + + synchronized with the Domain Controllers.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 and *S-1-5-19 (Administrators, LOCAL + + SERVICE). + + User Rights\Change System Time + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Create Global Objects' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateGlobalObjects' AND (mdm_command_output LIKE '%Administrators%' AND mdm_command_output LIKE '%LOCAL SERVICE%' AND mdm_command_output LIKE '%NETWORK SERVICE%' AND mdm_command_output LIKE '%SERVICE%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.7 + description: 'This policy setting determines whether users can create global objects that are available + + to all sessions. Users can still create objects that are specific to their own session if they + + do not have this user right. + + Users who can create global objects could affect processes that run under other users'' + + sessions. This capability could lead to a variety of problems, such as application failure + + or data corruption. + + The recommended state for this setting is: *S-1-5-32-544, *S-1-5-19, *S-1-5-20 and + + *S-1-5-6 (Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544, *S-1-5-19, *S-1-5-20 and *S-1-5-6 + + (Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE). + + User Rights\Create Global Objects + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Create Page File' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/CreatePageFile' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.8 + description: 'This policy setting allows users to change the size of the pagefile. By making the + + pagefile extremely large or extremely small, an attacker could easily affect the + + performance of a compromised computer. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Create Page File + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Create Permanent Shared Objects' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/CreatePermanentSharedObjects' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.9 + description: 'This user right is useful to kernel-mode components that extend the object namespace. + + However, components that run in kernel mode have this user right inherently. Therefore, + + it is typically not necessary to specifically assign this user right. + + The recommended state for this setting is: No One.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which equals No One. + + User Rights\Create Permanent Shared Objects + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but does not affect the policy setting from being applied to the system + + properly.' + +- platform: windows + name: CIS - Ensure 'Create Symbolic Links' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateSymbolicLinks' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.10 + description: 'This policy setting determines which users can create symbolic links. In Windows Vista, + + existing NTFS file system objects, such as files and folders, can be accessed by + + referring to a new kind of file system object called a symbolic link. A symbolic link is a + + pointer (much like a shortcut or .lnk file) to another file system object, which can be a + + file, folder, shortcut or another symbolic link. The difference between a shortcut and a + + symbolic link is that a shortcut only works from within the Windows shell. To other + + programs and applications, shortcuts are just another file, whereas with symbolic links, + + the concept of a shortcut is implemented as a feature of the NTFS file system. + + Symbolic links can potentially expose security vulnerabilities in applications that are not + + designed to use them. For this reason, the privilege for creating symbolic links should + + only be assigned to trusted users. By default, only Administrators can create + + symbolic links. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators) and (when + + the Hyper-V feature is installed) *S-1-5-83-0 (NT VIRTUAL MACHINE\Virtual + + Machines).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators) and optionally *S-1-5-83-0 + + (NT VIRTUAL MACHINE\Virtual Machines) + + User Rights\Create Symbolic Links + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Create Token' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateToken' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.11 + description: 'This policy setting allows a process to create an access token, which may provide + + elevated rights to access sensitive data. + + The recommended state for this setting is: No One. + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which equals No One. + + User Rights\Create Token + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but does not affect the policy setting from being applied to the system + + properly.' + +- platform: windows + name: CIS - Ensure 'Debug Programs' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/DebugPrograms' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.12 + description: 'This policy setting determines which user accounts will have the right to attach a + + debugger to any process or to the kernel, which provides complete access to sensitive + + and critical operating system components. Developers who are debugging their own + + applications do not need to be assigned this user right; however, developers who are + + debugging new system components will need it. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Debug Programs + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Deny Access From Network' to include 'Guests, Local account' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyAccessFromNetwork' AND (mdm_command_output LIKE '%Guests%' AND mdm_command_output LIKE '%Local account%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.13 + description: 'This policy setting prohibits users from connecting to a computer from across the + + network, which would allow users to access and potentially modify data remotely. In + + high security environments, there should be no need for remote users to access data on + + a computer. Instead, file sharing should be accomplished through the use of network + + servers. This user right supersedes the Access Computer From Network user right if + + an account is subject to both policies. + + The recommended state for this setting is to include: *S-1-5-32-546 and *S-1-5-113 + + (Guests, Local account). + + Caution: Configuring a standalone (non-domain-joined) workstation as described above + + may result in an inability to remotely administer the workstation. + + Note: The security identifier Local account is not available in Windows 7 and + + Windows 8.0 unless MSKB 2871997 has been installed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-546 and *S-1-5-113 (Guests, Local account). + + User Rights\Deny Access From Network + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Deny Local Log On' to include 'Guests' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyLocalLogOn' AND mdm_command_output LIKE '%Guests%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.14 + description: 'This security setting determines which users are prevented from logging on at the + + computer. This policy setting supersedes the Allow log on locally policy setting if an + + account is subject to both policies. + + The recommended state for this setting is to include: *S-1-5-32-546 (Guests). + + Important: If you apply this security policy to the Everyone group, no one will be able to + + log on locally. + + Warning: The help text in Intune associated with this recommendation is for the setting, + + Deny log on as a service and not this setting.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-546 (Guests). + + User Rights\Deny Local Log On + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Deny Log On As Batch Job' to include 'Guests' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyLogOnAsBatchJob' AND mdm_command_output LIKE '%Guests%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.15 + description: 'This policy setting determines which accounts will not be able to log on to the computer + + as a batch job. A batch job is not a batch (.bat) file, but rather a batch-queue facility. + + Accounts that use the Task Scheduler to schedule jobs need this user right. + + This user right supersedes the Log on as a batch job user right, which could be used + + to allow accounts to schedule jobs that consume excessive system resources. Such an + + occurrence could cause a DoS condition. Failure to assign this user right to the + + recommended accounts can be a security risk. + + The recommended state for this setting is to include: *S-1-5-32-546 (Guests).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-546 (Guests). + + User Rights\Deny Log On As Batch Job' + +- platform: windows + name: CIS - Ensure 'Deny Log On As Service Job' to include 'Guests' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyLogOnAsService' AND mdm_command_output LIKE '%Guests%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.16 + description: 'This security setting determines which service accounts are prevented from registering + + a process as a service. This user right supersedes the Log on as a service user right if + + an account is subject to both policies. + + The recommended state for this setting is to include: *S-1-5-32-546 (Guests). + + Note: This security setting does not apply to the System, Local Service, or Network + + Service accounts.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-546 (Guests). + + User Rights\Deny Log On As Service Job' + +- platform: windows + name: CIS - Ensure 'Deny Remote Desktop Services Log On' to include 'Guests, Local account' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyRemoteDesktopServicesLogOn' AND (mdm_command_output LIKE '%Guests%' AND mdm_command_output LIKE '%Local account%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.17 + description: 'This policy setting determines whether users can log on as Remote Desktop clients. + + After the baseline workstation is joined to a domain environment, there is no need to + + use local accounts to access the workstation from the network. Domain accounts can + + access the workstation for administration and end-user processing. This user right + + supersedes the Allow log on through Remote Desktop Services user right if an + + account is subject to both policies. + + The recommended state for this setting is to include: *S-1-5-32-546 and *S-1-5-113 + + (Guests, Local account). + + Caution: Configuring a standalone (non-domain-joined) workstation as described above + + may result in an inability to remotely administer the workstation. + + Caution #2: Configuring a cloud system workstation as described above may result in + + an inability log on to the workstation. In this case, Local Accounts need this ability for + + the log on to succeed. + + Note: The security identifier Local account is not available in Windows 7 and + + Windows 8.0 unless MSKB 2871997 has been installed. + + Note #2: In all versions of Windows prior to Windows 7, Remote Desktop Services + + was known as Terminal Services, so you should substitute the older term if comparing + + against an older OS.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-546 and *S-1-5-113 (Guests, Local account). + + User Rights\Deny Remote Desktop Services Log On + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Enable Delegation' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/EnableDelegation' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.18 + description: 'This policy setting allows users to change the Trusted for Delegation setting on a + + computer object in Active Directory. Abuse of this privilege could allow unauthorized + + users to impersonate other users on the network. + + The recommended state for this setting is: No One. + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which equals No One. + + User Rights\Enable Delegation + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but does not affect the policy setting from being applied to the system + + properly.' + +- platform: windows + name: CIS - Ensure 'Generate Security Audits' is set to 'LOCAL SERVICE, NETWORK SERVICE' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/GenerateSecurityAudits' AND (mdm_command_output LIKE '%LOCAL SERVICE%' AND mdm_command_output LIKE '%NETWORK SERVICE%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.19 + description: 'This policy setting determines which users or processes can generate audit records in + + the Security log. + + The recommended state for this setting is: *S-1-5-19 and *S-1-5-20 (LOCAL + + SERVICE, NETWORK SERVICE). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-19 and *S-1-5-20 (LOCAL SERVICE, NETWORK + + SERVICE). + + User Rights\Generate security audits + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Impersonate Client' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ImpersonateClient' AND (mdm_command_output LIKE '%Administrators%' AND mdm_command_output LIKE '%LOCAL SERVICE%' AND mdm_command_output LIKE '%NETWORK SERVICE%' AND mdm_command_output LIKE '%SERVICE%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.20 + description: 'The policy setting allows programs that run on behalf of a user to impersonate that user + + (or another specified account) so that they can act on behalf of the user. If this user right + + is required for this kind of impersonation, an unauthorized user will not be able to + + convince a client to connect—for example, by remote procedure call (RPC) or named + + pipes—to a service that they have created to impersonate that client, which could + + elevate the unauthorized user''s permissions to administrative or system levels. + + Services that are started by the Service Control Manager have the built-in Service group + + added by default to their access tokens. COM servers that are started by the COM + + infrastructure and configured to run under a specific account also have the Service + + group added to their access tokens. As a result, these processes are assigned this user + + right when they are started. + + Also, a user can impersonate an access token if any of the following conditions exist: + + • + + • + + • + + + The access token that is being impersonated is for this user. + + The user, in this logon session, logged on to the network with explicit credentials + + to create the access token. + + The requested level is less than Impersonate, such as Anonymous or Identify. + + + An attacker with the Impersonate a client after authentication user right could create + + a service, trick a client to make them connect to the service, and then impersonate that + + client to elevate the attacker''s level of access to that of the client. + + The recommended state for this setting is: *S-1-5-32-544, *S-1-5-19, *S-1-5-20 and + + *S-1-5-6 (Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544, *S-1-5-19, *S-1-5-20 and *S-1-5-6 + + (Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE). + + User Rights\Impersonate Client + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Increase Scheduling Priority' is set to 'Administrators, Window Manager\Window Manager Group' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/IncreaseSchedulingPriority' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.21 + description: 'This policy setting determines whether users can increase the base priority class of a + + process. (It is not a privileged operation to increase relative priority within a priority + + class.) This user right is not required by administrative tools that are supplied with the + + operating system but might be required by software development tools. + + The recommended state for this setting is: *S-1-5-32-544 and *S-1-5-90-0 + + (Administrators, Window Manager\Window Manager Group).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 and *S-1-5-90-0 (Administrators, Window + + Manager\Window Manager Group). + + User Rights\Increase scheduling priority + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Load Unload Device Drivers' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/LoadUnloadDeviceDrivers' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.22 + description: 'This policy setting allows users to dynamically load a new device driver on a system. An + + attacker could potentially use this capability to install malicious code that appears to be + + a device driver. This user right is required for users to add local printers or printer + + drivers in Windows Vista. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Load Unload Device Drivers + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Lock Memory' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/LockMemory' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.23 + description: 'This policy setting allows a process to keep data in physical memory, which prevents + + the system from paging the data to virtual memory on disk. If this user right is assigned, + + significant degradation of system performance can occur. + + The recommended state for this setting is: No One.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which equals No One. + + User Rights\Lock Memory + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but does not affect the policy setting from being applied to the system + + properly.' + +- platform: windows + name: CIS - Ensure 'Manage auditing and security log' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ManageAuditingAndSecurityLog' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.25 + description: 'This policy setting determines which users can change the auditing options for files and + + directories and clear the Security log. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Manage auditing and security log + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Manage Volume' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ManageVolume' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.26 + description: 'This policy setting allows users to manage the system''s volume or disk configuration, + + which could allow a user to delete a volume and cause data loss as well as a denial-ofservice condition. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: A workstation with Microsoft SQL Server installed will require a special exception + + to this recommendation for the account that runs the SQL Server service to be granted + + this user right.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Manage Volume + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen. + + \' + +- platform: windows + name: CIS - Ensure 'Modify Firmware Environment' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ModifyFirmwareEnvironment' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.27 + description: 'This policy setting allows users to configure the system-wide environment variables that + + affect hardware configuration. This information is typically stored in the Last Known + + Good Configuration. Modification of these values and could lead to a hardware failure + + that would result in a denial of service condition. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Modify Firmware Environment + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Modify Object Label' is set to 'No One' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ModifyObjectLabel' AND mdm_command_output = ''; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.28 + description: 'This privilege determines which user accounts can modify the integrity label of objects, + + such as files, registry keys, or processes owned by other users. Processes running + + under a user account can modify the label of an object owned by that user to a lower + + level without this privilege. + + The recommended state for this setting is: No One.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to () which equals No One. + + User Rights\Modify Object Label + + + Note: Using () to represent a blank value or No One is recommended + + by Microsoft. However, there is a known issue where an error occurs in Endpoint + + Manger (Intune) but does not affect the policy setting from being applied to the system + + properly.' + +- platform: windows + name: CIS - Ensure 'Profile Single Process' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ProfileSingleProcess' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.29 + description: 'This policy setting determines which users can use tools to monitor the performance of + + non-system processes. Typically, you do not need to configure this user right to use the + + Microsoft Management Console (MMC) Performance snap-in. However, you do need + + this user right if System Monitor is configured to collect data using Windows + + Management Instrumentation (WMI). Restricting the Profile single process user right + + prevents intruders from gaining additional information that could be used to mount an + + attack on the system. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Profile single process + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Profile System Performance' is set to 'Administrators, NT SERVICE\WdiServiceHost' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ProfileSystemPerformance' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.30 + description: 'This policy setting allows users to use tools to view the performance of different system + + processes, which could be abused to allow attackers to determine a system''s active + + processes and provide insight into the potential attack surface of the computer. + + The recommended state for this setting is: *S-1-5-32-544, *S-1-5-80 + + (Administrators, NT SERVICE\WdiServiceHost).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544, *S-1-5-80 (Administrators, NT + + SERVICE\WdiServiceHost). + + User Rights\Profile System Performance' + +- platform: windows + name: CIS - Ensure 'Remote Shutdown' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/RemoteShutdown' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.31 + description: 'This policy setting allows users to shut down Windows Vista-based or newer computers + + from remote locations on the network. Anyone who has been assigned this user right + + can cause a denial of service (DoS) condition, which would make the computer + + unavailable to service user requests. Therefore, it is recommended that only highly + + trusted administrators be assigned this user right. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Remote Shutdown + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Replace Process Level Token' is set to 'LOCAL SERVICE, NETWORK SERVICE' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ReplaceProcessLevelToken' AND (mdm_command_output LIKE '%LOCAL SERVICE%' AND mdm_command_output LIKE '%NETWORK SERVICE%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.32 + description: 'This policy setting allows one process or service to start another service or process with + + a different security access token, which can be used to modify the security access token + + of that sub-process and result in the escalation of privileges. + + The recommended state for this setting is: *S-1-5-19, *S-1-5-20 (LOCAL SERVICE, + + NETWORK SERVICE). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-19, *S-1-5-20 (LOCAL SERVICE, NETWORK + + SERVICE). + + User Rights\Replace Process Level Token' + +- platform: windows + name: CIS - Ensure 'Restore Files And Directories' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/RestoreFilesAndDirectories' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.33 + description: 'This policy setting determines which users can bypass file, directory, registry, and other + + persistent object permissions when restoring backed up files and directories on + + computers that run Windows Vista (or newer) in your environment. This user right also + + determines which users can set valid security principals as object owners; it is similar to + + the Back up files and directories user right. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Restore files and directories + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Shut Down The System' is set to 'Administrators, Users' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/ShutDownTheSystem' AND (mdm_command_output LIKE '%Administrators%' AND mdm_command_output LIKE '%Users%'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.34 + description: 'This policy setting determines which users who are logged on locally to the computers + + in your environment can shut down the operating system with the Shut Down command. + + Misuse of this user right can result in a denial of service condition. + + The recommended state for this setting is: *S-1-5-32-544, *S-1-5-32-545 + + (Administrators, Users).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544, *S-1-5-32-545 (Administrators, Users). + + User Rights\Shut Down The System' + +- platform: windows + name: CIS - Ensure 'Take Ownership' is set to 'Administrators' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/UserRights/TakeOwnership' AND mdm_command_output LIKE '%Administrators%'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS89.35 + description: 'This policy setting allows users to take ownership of files, folders, registry keys, + + processes, or threads. This user right bypasses any permissions that are in place to + + protect objects to give ownership to the specified user. + + The recommended state for this setting is: *S-1-5-32-544 (Administrators). + + Note: This user right is considered a "sensitive privilege" for the purposes of auditing.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to *S-1-5-32-544 (Administrators). + + User Rights\Take Ownership + + + Note: Include only one User or Group per line in the Settings Catalog configuration + + screen.' + +- platform: windows + name: CIS - Ensure 'Hypervisor Enforced Code Integrity' is set to 'Enabled with UEFI lock' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/VirtualizationBasedTechnology/HypervisorEnforcedCodeIntegrity' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:hypervisor-enforced-code-integrity-is-enabled-with-uefi-lock, cis_safeguard_ids:CIS90.1 + description: 'This setting enables virtualization based protection of Kernel Mode Code Integrity. + + When this is enabled, kernel mode memory protections are enforced and the Code + + Integrity validation path is protected by the Virtualization Based Security feature. + + The recommended state for this setting is: Enabled with UEFI lock. + + Note: Virtualization Based Security requires a 64-bit version of Windows with Secure + + Boot enabled, which in turn requires that Windows was installed with a UEFI BIOS + + configuration, not a Legacy BIOS configuration. In addition, if running Windows on a + + virtual machine, the hardware-assisted CPU virtualization feature (Intel VT-x or AMD-V) + + must be exposed by the host to the guest VM. + + More information on system requirements for this feature can be found at Windows + + Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + + Note #2: Credential Guard and Device Guard are not currently supported when using + + Azure IaaS VMs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled with UEFI lock. + + Virtualization Based Technology\Hypervisor Enforced Code Integrity' + +- platform: windows + name: CIS - Ensure 'Require UEFI Memory Attributes Table' is set to 'Require UEFI Memory Attributes Table' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/VirtualizationBasedTechnology/RequireUEFIMemoryAttributesTable' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:require-uefi-memory-attributes-table-is-require-uefi-memory-attributes-table, cis_safeguard_ids:CIS90.2 + description: 'This option will only enable Virtualization Based Protection of Code Integrity on devices + + with UEFI firmware support for the Memory Attributes Table. Devices without the UEFI + + Memory Attributes Table may have firmware that is incompatible with Virtualization + + Based Protection of Code Integrity which in some cases can lead to crashes or data + + loss or incompatibility with certain plug-in cards. If not setting this option the targeted + + devices should be tested to ensure compatibility. + + The recommended state for this setting is: Require UEFI Memory Attributes Table. + + Note: Virtualization Based Security requires a 64-bit version of Windows with Secure + + Boot enabled, which in turn requires that Windows was installed with a UEFI BIOS + + configuration, not a Legacy BIOS configuration. In addition, if running Windows on a + + virtual machine, the hardware-assisted CPU virtualization feature (Intel VT-x or AMD-V) + + must be exposed by the host to the guest VM. + + More information on system requirements for this feature can be found at Windows + + Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + + Note #2: Credential Guard and Device Guard are not currently supported when using + + Azure IaaS VMs.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Require UEFI Memory Attributes Table. + + Virtualization Based Technology\Require UEFI Memory Attributes Table' + +- platform: windows + name: CIS - Ensure 'Allow Auto Connect To Wi Fi Sense Hotspots' is set to 'Block' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Wifi/AllowAutoConnectToWiFiSenseHotspots' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-auto-connect-to-wi-fi-sense-hotspots-is-block, cis_safeguard_ids:CIS93.1 + description: 'This policy setting determines whether users can enable the following WLAN settings: + + "Connect to suggested open hotspots," "Connect to networks shared by my contacts," + + and "Enable paid services". + + • + + + • + + + • + + + "Connect to suggested open hotspots" enables Windows to automatically + + connect users to open hotspots it knows about by crowdsourcing networks that + + other people using Windows have connected to. + + "Connect to networks shared by my contacts" enables Windows to automatically + + connect to networks that the user''s contacts have shared with them, and enables + + users on this device to share networks with their contacts. + + "Enable paid services" enables Windows to temporarily connect to open hotspots + + to determine if paid services are available. + + + The recommended state for this setting is: Block. + + Note: These features are also known by the name "Wi-Fi Sense".' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Block. + + Wi-Fi Settings\Allow Auto Connect To Wi Fi Sense Hotspots' + +- platform: windows + name: CIS - Ensure 'Allow widgets' is set to 'Not allowed' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/NewsAndInterests/AllowNewsAndInterests' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-widgets-is-not-allowed, cis_safeguard_ids:CIS94.1 + description: 'This policy setting specifies whether the Widgets feature is allowed on the device. The + + Widgets feature provides information such as, weather, news, sports, stocks, traffic, and + + entertainment (not an inclusive list). + + The recommended state for this setting is: Not allowed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Not Allowed. + + Widgets\Allow widgets' + +- platform: windows + name: CIS - Ensure 'Disallow Exploit Protection Override' is set to '(Enable)' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WindowsDefenderSecurityCenter/DisallowExploitProtectionOverride' AND mdm_command_output = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:disallow-exploit-protection-override-is-enable, cis_safeguard_ids:CIS96.1 + description: 'This policy setting prevent users from making changes to the Exploit protection settings + + area in the Windows Security settings. + + The recommended state for this setting is: (Enable).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to (Enable). + + Windows Defender Security Center\Disallow Exploit Protection Override' + +- platform: windows + name: CIS - Ensure 'Enable ESS with Supported Peripherals' is set to 'Enhanced sign-in security will be enabled…' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\Biometrics\EnableESSwithSupportedPeripherals' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:enable-ess-with-supported-peripherals-is-enhanced-sign-in-security-will-be-enabled, cis_safeguard_ids:CIS97.1 + description: 'Enhanced Sign-in Security isolates Windows Hello biometric (face and fingerprint) + + template data and matching operations to trusted hardware or specified memory + + regions. + + The recommended state for this setting is: ESS will be enabled on systems with + + capable software and hardware, following the existing default behavior + + in Windows. Authentication operations of any peripheral biometric + + device will be blocked and not available for Windows Hello. (default + + and recommended for highest security)..' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enhanced sign-in security will be enabled…: + + Windows Hello For Business\Enable ESS with Supported Peripherals' + +- platform: windows + name: CIS - Ensure 'Facial Features Use Enhanced Anti Spoofing' is set to 'true' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/PassportForWork/Biometrics/FacialFeaturesUseEnhancedAntiSpoofing' AND mdm_command_output = 'true'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:facial-features-use-enhanced-anti-spoofing-is-true, cis_safeguard_ids:CIS97.2 + description: 'This policy setting determines whether enhanced anti-spoofing is configured for devices + + which support it. + + The recommended state for this setting is: true.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to true. + + Windows Hello For Business\Facial Features Use Enhanced Anti Spoofing' + +- platform: windows + name: CIS - Ensure 'Minimum PIN Length' is set to '6 more character(s)' + query: SELECT 1 FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\%\Device\Policies\PINComplexity\MinimumPINLength' AND CAST(data AS INTEGER) >= 6; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:minimum-pin-length-is-6-more-characters, cis_safeguard_ids:CIS97.3 + description: 'Minimum PIN length configures the minimum number of characters required for the PIN. + + The lowest number you can configure for this policy setting is 4. The largest number you + + can configure must be less than the number configured in the Maximum PIN length + + policy setting or the number 127, whichever is the lowest. + + The recommended state for this setting is: 6 more character(s).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to 6 (or more character(s)): + + Windows Hello For Business\Minimum PIN Length' + +- platform: windows + name: CIS - Ensure 'Require Security Device' is set to 'true' + query: SELECT 1 FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork\%\Device\Policies\RequireSecurityDevice' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:require-security-device-is-true, cis_safeguard_ids:CIS97.4 + description: 'This policy controls whether a Trusted Platform Module (TPM) is required to provision + + Windows Hello for Business. + + • + + • + + + If you enable this policy setting, only devices with a usable TPM provision + + Windows Hello for Business. + + If you disable or don''t configure this policy setting, the TPM is still preferred, but + + all devices provision Windows Hello for Business using software if the TPM is + + non-functional or unavailable. + + + The recommended state for this setting is: true.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to true: + + Windows Hello For Business\Require Security Device' + +- platform: windows + name: 'CIS - Ensure ''Allow Windows Ink Workspace'' is set to ''Enabled: but the user can''t access it above the lock screen'' OR ''Disabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\WindowsInkWorkspace\AllowWindowsInkWorkspace' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS98.2 + description: 'This policy setting determines whether Windows Ink items are allowed above the lock + + screen. + + The recommended state for this setting is: Ink workspace is enabled (feature is + + turned on), but the user can''t access it above the lock screen OR + + Access to ink workspace is disabled. The feature is turned off.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Ink workspace is enabled (feature is turned on), + + but the user can''t access it above the lock screen OR Access to ink + + workspace is disabled. The feature is turned off. + + Windows Ink Workspace\Allow Windows Ink Workspace' + +- platform: windows + name: CIS - Ensure 'Allow Clipboard Redirection' is set to 'Not allowed' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableClip' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-clipboard-redirection-is-not-allowed, cis_safeguard_ids:CIS101.1 + description: 'This policy setting enables or disables clipboard sharing with the Windows Sandbox. + + The recommended state for this setting is: Not allowed. + + Note: The Windows Sandbox feature was first introduced in Windows 10 R1903, and + + allows a temporary "clean install" virtual instance of Windows to be run inside the host, + + for the ostensible purpose of testing applications without making changes to the host.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Not allowed. + + Windows Sandbox\Allow Clipboard Redirection' + +- platform: windows + name: CIS - Ensure 'Allow Networking' is set to 'Not allowed' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\WindowsSandbox\AllowNetworking' AND data = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-networking-is-not-allowed, cis_safeguard_ids:CIS101.2 + description: 'This policy setting enables or disables networking in the Windows Sandbox. Networking + + is achieved by creating a virtual switch on the host, and connecting the Windows + + Sandbox to it via a virtual Network Interface Card (NIC). + + The recommended state for this setting is: Not allowed. + + Note: The Windows Sandbox feature was first introduced in Windows 10 R1903, and + + allows a temporary "clean install" virtual instance of Windows to be run inside the host, + + for the ostensible purpose of testing applications without making changes to the host.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Not allowed. + + Windows Sandbox\Allow Networking' + +- platform: windows + name: CIS - Ensure 'Allow Auto Update' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update\AllowAutoUpdate' AND data IN ('1', '2', '3', '4'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:allow-auto-update-is-enabled, cis_safeguard_ids:CIS103.1 + description: 'This policy setting specifies whether computers in your environment will receive security + + updates from Windows Update or WSUS. If you configure this policy setting to Enabled, + + the operating system will recognize when a network connection is available and then + + use the network connection to search Windows Update or your designated intranet site + + for updates that apply to them. + + After this this policy setting is set to Enabled, select one of the following options in the + + Configure Automatic Updates Properties dialog box to specify how the service will work: + + • + + • + + • + + + 2 - Auto install and restart. + + 3 - Auto install and restart at a specified time. (Default) + + 4 - Auto install and restart without end-user control. + + + The recommended state for this setting is: Enabled and never "Turn off automatic + + updates" + + Note: The sub-setting "Allow Auto Update:" has 6 possible values – not all of them are + + valid depending on specific organizational needs, however if feasible we suggest using + + a value of 2, 3, or 4. The only scored requirement is to not turn off automatic + + updates (5). + + Note #2: Organizations that utilize a third--party solution for patching may choose to + + exempt themselves from this recommendation, and instead configure it to Disabled so + + that the native Windows Update mechanism does not interfere with the third--party + + patching process. + + Warning: If option 3 or 4 is not selected, then the ScheduledInstallDay + + recommendation will not take effect and an exception to that recommendation will be + + needed.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to anything other than "Turn off automatic updates". + + Windows Update For Business\Allow Auto Update' + +- platform: windows + name: 'CIS - Ensure ''Defer Feature Updates Period in Days'' is set to ''Enabled: 180 or more days''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Update/DeferFeatureUpdatesPeriodInDays' AND CAST(mdm_command_output AS INTEGER) >= 180; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:defer-feature-updates-period-in-days-is-enabled-180-or-more-days, cis_safeguard_ids:CIS103.2 + description: 'This policy setting determines when Preview Build or Feature Updates are received. + + Defer Updates This enables devices to defer taking the next Feature Update available + + to your channel for up to 14 days for all the pre-release channels and up to 365 days for + + the Semi-Annual Channel. Or, if the device is updating from the Semi-Annual Channel, + + a version for the device to move to and/or stay on until the policy is updated or the + + device reaches end of service can be specified. Note: If you set both policies, the + + version specified will take precedence and the deferrals will not be in effect. Please see + + the Windows Release Information page for OS version information. + + Pause Updates To prevent Feature Updates from being received on their scheduled + + time, you can temporarily pause Feature Updates. The pause will remain in effect for 35 + + days from the specified start date or until the field is cleared (Quality Updates will still be + + offered). + + Note: If the "Allow Diagnostic Data" (formerly "Allow Telemetry") policy is set to 0, this + + policy will have no effect. + + Note #2: Starting with Windows 10 R1607, Microsoft introduced a new Windows + + Update (WU) client behavior called Dual Scan, with an eye to cloud-based update + + management. In some cases, this Dual Scan feature can interfere with Windows + + Updates from Windows Server Update Services (WSUS) and/or manual WU updates. If + + you are using WSUS in your environment, you may need to set the above setting to Not + + Configured or configure the setting Do not allow update deferral policies to cause + + scans against Windows Update (added in the Windows 10 Release 1709 Administrative + + Templates) in order to prevent the Dual Scan feature from interfering. More information + + on Dual Scan is available at these links: + + • + + • + + + Demystifying “Dual Scan” – WSUS Product Team Blog + + Improving Dual Scan on 1607 – WSUS Product Team Blog + + + Note #3: Prior to Windows 10 R1703, values above 180 days are not recognized by the + + OS. Starting with Windows 10 R1703, the maximum number of days you can defer is + + 365 days.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: 180 or more days. + + Windows Update for Business\Defer Feature Updates Period in Days' + +- platform: windows + name: 'CIS - Ensure ''Defer Quality Updates Period (Days)'' is set to ''Enabled: 0 days''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Update/DeferQualityUpdatesPeriodInDays' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:defer-quality-updates-period-days-is-enabled-0-days, cis_safeguard_ids:CIS103.3 + description: 'This policy settings controls when Quality Updates are received. + + The recommended state for this setting is: Enabled: 0 days. + + Note: If the "Allow Telemetry" policy is set to 0, this policy will have no effect. + + Note #2: Starting with Windows 10 R1607, Microsoft introduced a new Windows + + Update (WU) client behavior called Dual Scan, with an eye to cloud-based update + + management. In some cases, this Dual Scan feature can interfere with Windows + + Updates from Windows Server Update Services (WSUS) and/or manual WU updates. If + + you are using WSUS in your environment, you may need to set the above setting to Not + + Configured or configure the setting Do not allow update deferral policies to cause + + scans against Windows Update (added in the Windows 10 Release 1709 Administrative + + Templates) in order to prevent the Dual Scan feature from interfering. More information + + on Dual Scan is available at these links: + + • + + • + + + Demystifying “Dual Scan” – WSUS Product Team Blog + + Improving Dual Scan on 1607 – WSUS Product Team Blog' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled:0 days. + + Windows Update for Business\Defer Quality Updates Period (Days)' + +- platform: windows + name: CIS - Ensure 'Manage preview builds' is set to 'Disable Preview builds' + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Update/ManagePreviewBuilds' AND mdm_command_output IN ('1', '3')) OR EXISTS (SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\ManagePreviewBuilds' AND data = '1'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:manage-preview-builds-is-disable-preview-builds, cis_safeguard_ids:CIS103.4 + description: 'This policy setting manages which updates that are received prior to the update being + + released. + + Dev Channel: Ideal for highly technical users. Insiders in the Dev Channel will receive + + builds from our active development branch that is earliest in a development cycle. + + These builds are not matched to a specific Windows 10 release. + + Beta Channel: Ideal for feature explorers who want to see upcoming Windows 10 + + features. Your feedback will be especially important here as it will help our engineers + + ensure key issues are fixed before a major release. + + Release Preview Channel (default): Insiders in the Release Preview Channel will + + have access to the upcoming release of Windows 10 prior to it being released to the + + world. These builds are supported by Microsoft. The Release Preview Channel is where + + we recommend companies preview and validate upcoming Windows 10 releases before + + broad deployment within their organization. + + The recommended state for this setting is: Disable Preview builds. + + Note: Preview Build enrollment requires a telemetry level setting of 2 or higher and your + + domain registered on insider.windows.com. For additional information on Preview + + Builds, see: Managing preview builds across your organization - Windows Insider + + Program | Microsoft Learn.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Disable Preview builds. + + Windows Update For Business\Manage preview builds' + +- platform: windows + name: CIS - Ensure 'Scheduled Install Day' is set to 'Every day' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Update/ScheduledInstallDay' AND mdm_command_output = '0'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:scheduled-install-day-is-every-day, cis_safeguard_ids:CIS103.5 + description: 'This policy setting specifies when computers in your environment will receive security + + updates from Windows Update or WSUS. + + The recommended state for this setting is: Every day. + + Note: This setting is only applicable if the option of 3 or 4 is selected in the + + recommendation ''Allow Auto Update''. It will have no impact if any other option is + + selected.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Every day. + + Windows Update For Business\Scheduled Install Day' + +- platform: windows + name: CIS - Ensure 'Block "Pause Updates" ability' is set to 'Block' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update\SetDisablePauseUXAccess' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:block-pause-updates-ability-is-block, cis_safeguard_ids:CIS103.6 + description: 'This policy removes access to "Pause updates" feature. + + The recommended state for this setting is: Block.' + resolution: 'To establish the recommended configuration via GP, set the following UI path to Block: + + Windows Update For Business\Block "Pause Updates" ability' + +- platform: windows + name: 'CIS - Ensure ''Require PIN For Pairing'' is set to ''Enabled: Pairing ceremony for new devices will always require a PIN'' OR ''All pairings will require PIN''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WirelessDisplay/RequirePinForPairing' AND mdm_command_output IN ('1', '2'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS104.1 + description: 'This policy setting controls whether or not a PIN is required for pairing to a wireless + + display device. + + The recommended state for this setting is: Enabled: Pairing ceremony for new + + devices will always require a PIN'' OR All pairings will require PIN.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following + + Settings Catalog path to Enabled: Pairing ceremony for new devices will + + always require a PIN'' OR All pairings will require PIN. + + Administrative Templates\Network\Wireless Display\Require pin pairing' + +- platform: windows + name: CIS - Ensure 'Backup Directory' is set to 'Backup the password to Azure AD only' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\LAPS\Config\BackupDirectory' AND data = '1'; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:configuration, requirement:standard, critical:false, control:backup-directory-is-backup-the-password-to-azure-ad-only, cis_safeguard_ids:CIS105.1 + description: 'This policy setting configures which directory Windows LAPS will use to back up the + + local admin account password. + + The recommended state for this setting is: Backup the password to Azure AD only. + + Note: Organizations that utilize third-party commercial software to manage unique & + + complex local Administrator passwords on domain members may opt to disregard these + + LAPS recommendations. + + • + + • + + • + + + Windows LAPS does not support standalone computers - they must be joined to + + an Active Directory domain or Entra ID (formerly Azure Active Directory). + + Windows LAPS does not support simultaneous storage of the local admin + + password in both directory types. + + If the setting is configured and the managed device is not joined to the configured + + directory type, the local administrator password will not be managed by Windows + + LAPS. + + + Important: An organization wishing to use Active Directory to backup the LAPS + + password may make an exception for this recommendation. To implement Active + + Directory backup see the latest on-premises CIS Benchmark for Windows 10/11. When + + backing up with Active Directory there are 2 additional security controls to be + + considered in the benchmark which are not available when using Azure AD for backup. + + These were excluded from the Intune benchmark as they cannot be selected unless + + Active Directory is selected as the backup location.' + resolution: 'To establish the recommended configuration from Microsoft Intune Admin Center: + + 1. Navigate to Endpoint security > Account protection. + + 2. Create or edit a LAPS policy of the type Local admin password solution + + (Windows LAPS). + + 3. Set Backup Directory to Backup the password to Azure AD only.' + +- platform: windows + name: 'CIS - Ensure ''Password Age Days'' is set to ''Configured: 30 or fewer''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_AdmPwd/POL_AdmPwd' AND mdm_command_output LIKE '% Account protection. + + 2. Create or edit a LAPS policy type Local admin password solution (Windows + + LAPS). + + 3. Set Password Complexity to Large letters + small letters + numbers + + + special characters.' + +- platform: windows + name: 'CIS - Ensure ''Password Length'' is set to ''Configured: 15 or more''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_AdmPwd/POL_AdmPwd' AND mdm_command_output LIKE '% Account protection. + + 2. Create or edit a LAPS policy type Local admin password solution (Windows + + LAPS). + + 3. Set Password Length to Configured: 15 (or more).' + +- platform: windows + name: CIS - Ensure 'Post-authentication actions' is set to 'Reset the password and logoff the managed account' or higher + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\LAPS\Config\PostAuthenticationActions' AND data IN ('3', '5'); + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS105.5 + description: 'This policy settings configures post-authentication actions which will be executed after + + detecting an authentication by the LAPS managed account. The Action refers to + + actions to take upon expiry of the grace period before executing the specified postauthentication actions. + + Post-authentication actions: + + • + + • + + + • + + + Reset password: upon expiry of the grace period, the managed account + + password will be reset. + + Reset the password and logoff the managed account: upon expiry of the + + grace period, the managed account password will be reset and any interactive + + logon sessions using the managed account will terminated. + + Reset the password and reboot the device: upon expiry of the grace + + period, the managed account password will be reset and the managed device will + + be immediately rebooted. + + + Warning: After an interactive logon session is terminated, other authenticated sessions + + using the Windows LAPS managed account may still be active. The only way to ensure + + that the previous password is no longer in use is to reboot the OS. + + The recommended state for this setting is: Reset the password and logoff the + + managed account or higher. + + Note: Organizations that utilize third-party commercial software to manage unique & + + complex local Administrator passwords on domain members may opt to disregard these + + LAPS recommendations. + + Note #2: Windows LAPS does not support standalone computers - they must be joined + + to an Active Directory domain or Entra ID (formerly Azure Active Directory).' + resolution: 'To establish the recommended configuration from Microsoft Intune Admin Center: + + 1. Navigate to Endpoint security > Account protection. + + 2. Create or edit a LAPS policy type Local admin password solution (Windows + + LAPS). + + 3. Set Post Authentication Actions to Reset the password and logoff + + the managed account (or higher). + + Note: Both Reset the password and logoff the managed account and Reset + + the password and reboot are considered passing states.' + +- platform: windows + name: 'CIS - Ensure ''Post Authentication Reset Delay'' is set to ''Configured: 8 or fewer hours, but not 0''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\LAPS\Config\PostAuthenticationResetDelay' AND CAST(data AS INTEGER) BETWEEN 1 AND 8; + # purpose: Informational + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS105.6 + description: 'This policy settings configures post-authentication actions which will be executed after + + detecting an authentication by the Windows LAPS managed account. The Grace + + period refers to the amount of time (hours) to wait after an authentication before + + executing the specified post-authentication actions. + + The recommended state for this setting is: Configured: 8 or fewer hours, but + + not 0. + + Note: Organizations that utilize third-party commercial software to manage unique & + + complex local Administrator passwords on domain members may opt to disregard these + + LAPS recommendations. + + Note #2: Windows LAPS does not support standalone computers - they must be joined + + to an Active Directory domain or Entra ID (formerly Azure Active Directory). + + Note #3: If this policy is set to 0 it prevents all post-authentication actions from + + occurring.' + resolution: 'To establish the recommended configuration from Microsoft Intune Admin Center: + + 1. Navigate to Endpoint security > Account protection. + + 2. Create or edit a LAPS policy type Local admin password solution (Windows + + LAPS). + + 3. Set Post Authentication Reset Delay to Configured: 8 (or fewer + + hours, but not 0).' + +- platform: windows + name: 'CIS - Configure ''Accounts: Rename administrator account''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_RenameAdministratorAccount' AND mdm_command_output NOT LIKE '%Administrator%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:configure-accounts-rename-administrator-account + description: The built-in local administrator account is a well-known account name that attackers will target. It is recommended to choose another name for this account, and to avoid names that denote administrative or elevated access accounts. Be sure to also change the default description for the local administrator (through the Computer Management console). + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path: Local Policies Security Options\Accounts: Rename administrator account' + +- platform: windows + name: 'CIS - Configure ''Accounts: Rename guest account''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_RenameGuestAccount' AND mdm_command_output NOT LIKE '%Guest%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:configure-accounts-rename-guest-account + description: The built-in local guest account is another well-known name to attackers. It is recommended to rename this account to something that does not indicate its purpose. Even if you disable this account, which is recommended, ensure that you rename it for added security. + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path: Local Policies Security Options\Accounts: Rename guest account' + +- platform: windows + name: 'CIS - Configure ''Interactive logon: Message text for users attempting to log on''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/InteractiveLogon_MessageTextForUsersAttemptingToLogOn' AND mdm_command_output != '' AND mdm_command_output NOT LIKE '%404%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:configure-interactive-logon-message-text-for-users-attemptin + description: This policy setting specifies a text message that displays to users when they log on. Set the following group policy to a value that is consistent with the security and operational requirements of your organization. + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to a value that is consistent with the security and operational requirements of your organization: Local Policies Security Options\Interactive logon: Message text for users attempting to log on' + +- platform: windows + name: 'CIS - Configure ''Interactive logon: Message title for users attempting to log on''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/InteractiveLogon_MessageTitleForUsersAttemptingToLogOn' AND mdm_command_output != '' AND mdm_command_output NOT LIKE '%404%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:1, platform:windows, category:security, requirement:standard, critical:false, control:configure-interactive-logon-message-title-for-users-attempti + description: This policy setting specifies the text displayed in the title bar of the window that users see when they log on to the system. Configure this setting in a manner that is consistent with the security and operational requirements of your organization. + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to a value that is consistent with the security and operational requirements of your organization: Local Policies Security Options\Interactive logon: Message title for users attempting to log on' diff --git a/docs/solutions/cis/win-11-intune/policies/l2_win11_intune.yml b/docs/solutions/cis/win-11-intune/policies/l2_win11_intune.yml new file mode 100644 index 0000000000..f56f128b96 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/policies/l2_win11_intune.yml @@ -0,0 +1,692 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- platform: windows + name: 'CIS - Ensure ''MSS: (DisableSavePassword) Prevent the dialup password from being saved (recommended)'' is set to ''Enabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters\DisableSavePassword' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.5.4 + description: 'When you dial a phonebook or VPN entry in Dial-Up Networking, you can use the "Save Password" option so that your Dial-Up Networking password is cached and you will not need to enter it on successive dial attempts. For security, administrators may want to prevent users from caching passwords. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\MSS (Legacy)\MSS:(DisableSavePassword) Prevent the dial-up password from being saved (recommended) + +- platform: windows + name: 'CIS - Ensure ''MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds'' is set to ''Enabled: 300,000 or 5 minutes (recommended)''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime' AND CAST(data AS INTEGER) <= 300000; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.5.6 + description: 'This value controls how often TCP attempts to verify that an idle connection is still intact by sending a keep-alive packet. If the remote computer is still reachable, it acknowledges the keep-alive packet. The recommended state for this setting is: Enabled: 300,000 or 5 minutes (recommended).' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled: 300,000 or 5 minutes (recommended). Administrative Templates\MSS (Legacy)\MSS: (KeepAliveTime) How often keepalive packets are sent in milliseconds' + +- platform: windows + name: 'CIS - Ensure ''MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)'' is set to ''Disabled''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PerformRouterDiscovery' AND data = '0'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.5.8 + description: 'This setting is used to enable or disable the Internet Router Discovery Protocol (IRDP), which allows the system to detect and configure default gateway addresses automatically as described in RFC 1256 on a per-interface basis. The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\MSS (Legacy)\MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)' + +- platform: windows + name: 'CIS - Ensure ''MSS: (TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted'' is set to ''Enabled: 3''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP6\Parameters\TcpMaxDataRetransmissions' AND CAST(data AS INTEGER) <= 3; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.5.11 + description: 'This setting controls the number of times that TCP retransmits an individual data segment (non-connect segment) before the connection is aborted. The retransmission time-out is doubled with each successive retransmission on a connection. It is reset when responses resume. The base time-out value is dynamically determined by the measured round-trip time on the connection. The recommended state for this setting is: Enabled: 3.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled: 3. Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' + +- platform: windows + name: 'CIS - Ensure ''MSS: (TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted'' is set to ''Enabled: 3''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpMaxDataRetransmissions' AND CAST(data AS INTEGER) <= 3; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.5.12 + description: 'This setting controls the number of times that TCP retransmits an individual data segment (non-connect segment) before the connection is aborted. The retransmission time-out is doubled with each successive retransmission on a connection. It is reset when responses resume. The base time-out value is dynamically determined by the measured round-trip time on the connection. The recommended state for this setting is: Enabled: 3.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled: 3. Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' + +- platform: windows + name: CIS - Ensure 'Turn on Mapper I/O (LLTDIO) driver' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'LLTDIO'), 'DISABLED') = 'DISABLED'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.6.8.1 + description: 'This policy setting changes the operational behavior of the Mapper I/O network protocol driver. LLTDIO allows a computer to discover the topology of a network it''s connected to. It also allows a computer to initiate Quality-of-Service requests such as bandwidth estimation and network health analysis. The recommended state for this setting is: Disabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\Network\Link-Layer Topology Discovery\Turn on Mapper I/O (LLTDIO) driver + +- platform: windows + name: CIS - Ensure 'Turn on Responder (RSPNDR) driver' is set to 'Disabled' + query: SELECT 1 WHERE COALESCE((SELECT UPPER(start_type) FROM services WHERE name = 'RSPNDR'), 'DISABLED') = 'DISABLED'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.6.8.2 + description: 'This policy setting changes the operational behavior of the Responder network protocol driver. The Responder allows a computer to participate in Link Layer Topology Discovery requests so that it can be discovered and located on the network. It also allows a computer to participate in Quality-of-Service activities such as bandwidth estimation and network health analysis. The recommended state for this setting is: Disabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\Network\Link-Layer Topology Discovery\Turn on Responder + +- platform: windows + name: CIS - Ensure 'Configuration of wireless settings using Windows Connect Now' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_WindowsConnectNow/WCN_EnableRegistrar' AND mdm_command_output LIKE '%Disabled%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.6.17.1 + description: 'This policy setting allows the configuration of wireless settings using Windows Connect Now (WCN). The WCN Registrar enables the discovery and configuration of devices over Ethernet (UPnP) over in-band 802.11 Wi-Fi through the Windows Portable Device API (WPD) and via USB Flash drives. Additional options are available to allow discovery and configuration over a specific medium. The recommended state for this setting is: Disabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\Network\Windows Connect Now\Configuration of wireless settings using Windows Connect Now + +- platform: windows + name: CIS - Ensure 'Prohibit access of the Windows Connect Now wizards' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_WindowsConnectNow/WCN_DisableWcnUi_2' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.6.17.2 + description: 'This policy setting prohibits access to Windows Connect Now (WCN) wizards. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Network\Windows Connect Now\Prohibit access of the Windows Connect Now wizards + +- platform: windows + name: CIS - Ensure 'Turn off access to the Store' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\ApplicationManagement\DisableStoreOriginatedApps' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.1 + description: 'This policy setting specifies whether to use the Store service for finding an application to open a file with an unhandled file type or protocol association. When a user opens a file type or protocol that is not associated with any applications on the computer, the user is given the choice to select a local application or use the Store service to find an application. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off access to the Store + +- platform: windows + name: CIS - Ensure 'Turn off Help Experience Improvement Program (User)' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Assistance\Client\1.0\NoImplicitFeedback' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.3 + description: 'This policy setting specifies whether users can participate in the Help Experience Improvement program. The Help Experience Improvement program collects information about how customers use Windows Help so that Microsoft can improve it. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication Settings\Turn off Help Experience Improvement Program + +- platform: windows + name: CIS - Ensure 'Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_ICM/NC_ExitOnISP' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.4 + description: 'This policy setting specifies whether the Internet Connection Wizard can connect to Microsoft to download a list of Internet Service Providers (ISPs). The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com + +- platform: windows + name: CIS - Ensure 'Turn off printing over HTTP' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/Connectivity/DiablePrintingOverHTTP' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.7 + description: 'This policy setting specifies whether the Windows Registration Wizard connects to Microsoft.com for online registration. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Registration if URL connection is referring to Microsoft.com + +- platform: windows + name: CIS - Ensure 'Turn off Search Companion content file updates' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_ICM/SearchCompanion_DisableFileUpdates' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.9 + description: 'This policy setting specifies whether the "Order Prints Online" task is available from Picture Tasks in Windows folders. The Order Prints Online Wizard is used to download a list of providers and allow users to order prints online. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Order Prints" picture task + +- platform: windows + name: CIS - Ensure 'Turn off the "Publish to Web" task for files and folders' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_ICM/ShellRemovePublishToWeb_2' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.10 + description: 'This policy setting specifies whether the tasks Publish this file to the Web, Publish this folder to the Web, and Publish the selected items to the Web are available from File and Folder Tasks in Windows folders. The Web Publishing wizard is used to download a list of providers and allow users to publish content to the Web. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Publish to Web" task for files and folders + +- platform: windows + name: CIS - Ensure 'Turn off the Windows Messenger Customer Experience Improvement Program' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_ICM/WinMSG_NoInstrumentation_2' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.20.1.11 + description: 'This policy setting specifies whether the Windows Customer Experience Improvement Program can collect anonymous information about how Windows is used. Microsoft uses information collected through the Windows Customer Experience Improvement Program to improve features that are most used and to detect flaws so that they can be corrected more quickly. Enabling this setting will reduce the amount of data Microsoft is able to gather for this purpose. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the Windows Messenger Customer Experience Improvement Program + +- platform: windows + name: CIS - Ensure 'Turn off Windows Customer Experience Improvement Program' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_ICM/CEIPEnable' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.10.40.5.1 + description: 'This policy setting configures Microsoft Support Diagnostic Tool (MSDT) interactive communication with the support provider. MSDT gathers diagnostic data for analysis by support professionals. The recommended state for this setting is: Disabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\System\Troubleshooting and Diagnostics\Microsoft Support Diagnostic Tool\Microsoft Support Diagnostic Tool: Turn on MSDT interactive communication with support provider' + +- platform: windows + name: CIS - Ensure 'Block launching Universal Windows apps with Windows Runtime API access from hosted content.' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_AppxRuntime/AppxRuntimeBlockHostedAppAccessWinRT' AND mdm_command_output LIKE '%Enabled%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.3.2 + description: 'This policy setting controls whether Microsoft Store apps with Windows Runtime API access directly from web content can be launched. The recommended state for this setting is: Enabled.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\App runtime\Block launching Universal Windows apps with Windows Runtime API access from hosted content. Note: A reboot may be required after the setting is applied.' + +- platform: windows + name: CIS - Ensure 'Join Microsoft MAPS' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_MicrosoftDefenderAntivirus/SpynetReporting' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.28.3.2 + description: 'This policy setting allows you to join Microsoft Active Protection Service (MAPS), which Microsoft renamed to Windows Defender Antivirus Cloud Protection Service and then Microsoft Defender Antivirus Cloud Protection Service. Microsoft MAPS / Microsoft Defender Antivirus Cloud Protection Service is the online community that helps you choose how to respond to potential threats. The community also helps stop the spread of new malicious software infections. You can choose to send basic or additional information about detected software. Additional information helps Microsoft create new definitions and help it to protect your computer. Possible options are: • • • (0x0) Disabled (default) (0x1) Basic membership (0x2) Advanced membership Basic membership will send basic information to Microsoft about software that has been detected including where the software came from the actions that you apply or that are applied automatically and whether the actions were successful. Advanced + membership in addition to basic information will send more information to Microsoft about malicious software spyware and potentially unwanted software including the location of the software file names how the software operates and how it has impacted your computer. The recommended state for this setting is: Disabled. Note: In Windows 10 and above, Basic membership is no longer available, so setting the value to 1 Basic, or 2 Advanced, enrolls the device into Advanced membership. For more information, please visit: Turn on cloud protection in Microsoft Defender Antivirus Microsoft Defender for Endpoint | Microsoft Learn.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\Windows Components\Microsoft Defender Antivirus\MAPS\Join Microsoft MAPS + +- platform: windows + name: CIS - Ensure 'Configure Watson events' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting\Disabled' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.28.10.1 + description: 'This policy setting allows you to configure whether or not Watson events are sent. The recommended state for this setting is: Disabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\Windows Components\Microsoft Defender Antivirus\Reporting\Configure Watson events + +- platform: windows + name: CIS - Ensure 'Turn off Push To Install service' is set to 'Enabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ApplicationManagement/DisableStoreOriginatedApps' AND mdm_command_output = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.35.1 + description: 'This policy setting controls whether users can push Apps to the device from the Microsoft Store App running on other devices or the web. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\Push to Install\Turn off Push To Install service + +- platform: windows + name: CIS - Ensure 'Allow users to connect remotely by using Remote Desktop Services' is set to 'Disabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.36.4.2.1 + description: 'This policy setting allows you to configure remote access to computers by using Remote Desktop Services. The recommended state for this setting is: Disabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Disabled. Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections\Allow users to connect remotely by using Remote Desktop Services + +- platform: windows + name: CIS - Ensure 'Do not allow COM port redirection' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableCcm' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.36.4.3.1 + description: 'This policy setting specifies whether to prevent the redirection of data to client COM ports from the remote computer in a Remote Desktop Services session. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow COM port redirection + +- platform: windows + name: CIS - Ensure 'Do not allow LPT port redirection' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableLPT' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.36.4.3.3 + description: 'This policy setting specifies whether to prevent the redirection of data to client LPT ports during a Remote Desktop Services session. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow LPT port redirection + +- platform: windows + name: CIS - Ensure 'Do not allow supported Plug and Play device redirection' is set to 'Enabled' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisablePNPRedir' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.36.4.3.4 + description: 'This policy setting allows you to control the redirection of supported Plug and Play devices, such as Windows Portable Devices, to the remote computer in a Remote Desktop Services session. The recommended state for this setting is: Enabled.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow supported Plug and Play device redirection + +- platform: windows + name: 'CIS - Ensure ''Restrict clipboard transfer from server to client'' is set to ''Enabled: Disable clipboard transfers from server to client''' + query: SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fDisableClip' AND data = '1'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.36.4.3.5 + description: 'This policy setting controls whether the clipboard can be used to transfer data from the Remote Desktop session to the client. The recommended state for this setting is: Enabled: Disable clipboard transfers from server to client.' + resolution: 'To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled: Disable clipboard transfers from server to client. Administrative Templates\Windows Components\Remote Desktop Session Host\Device and Resource Redirection\Restrict clipboard transfer from server to client' + +- platform: windows + name: 'CIS - Ensure ''Set time limit for active but idle Remote Desktop Services sessions'' is set to ''Enabled: 15 minutes or less, but not Never (0)''' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_TerminalServer/TS_SESSIONS_Idle_Limit_2' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.42.2 + description: 'This setting denies or allows access to the Store application. The recommended state for this setting is: Enabled. Note: Per Microsoft TechNet and MSKB 3135657, this policy setting does not apply to any Windows 10 editions other than Enterprise and Education.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\Store\Turn off the Store application + +- platform: windows + name: CIS - Ensure 'Prevent Internet Explorer security prompt for Windows Installer scripts' is set to 'Disabled' + query: SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/ADMX_MSI/SafeForScripting' AND mdm_command_output LIKE '%%'; + # purpose: Enforcement + # tags: framework:CISv8.1, benchmark:win11, level:2, platform:windows, category:unknown, requirement:standard, critical:false, cis_safeguard_ids:CIS4.11.54.1 + description: 'This policy setting enables logging of all PowerShell script input to the Applications and Services Logs\Microsoft\Windows\PowerShell\Operational Event Log channel. The recommended state for this setting is: Enabled. Note: If logging of Script Block Invocation Start/Stop Events is enabled (option box checked), PowerShell will log additional events when invocation of a command, script block, function, or script starts or stops. Enabling this option generates a high volume of event logs. CIS has intentionally chosen not to make a recommendation for this option, since it generates a large volume of events. If an organization chooses to enable the optional setting (checked), this also conforms to the benchmark.' + resolution: To establish the recommended configuration via configuration profiles, set the following Settings Catalog path to Enabled. Administrative Templates\Windows Components\Windows PowerShell\Turn on PowerShell Script Block Logging + +- platform: windows + name: CIS - Ensure 'Turn on PowerShell Transcription' is set to 'Enabled' + query: SELECT 1 WHERE EXISTS (SELECT 1 FROM mdm_bridge WHERE mdm_command_input = '1./Device/Vendor/MSFT/Policy/Result/WindowsPowerShell/TurnOnPowerShellTranscription' AND mdm_command_output LIKE '% + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS account and password policy remediation" + +# Export current security policy to a temp file +$cfgFile = Join-Path $env:TEMP "secpol_cis.cfg" +$sdbFile = Join-Path $env:TEMP "secedit_cis.sdb" +$logFile = Join-Path $env:TEMP "secedit_cis.log" + +try { + Write-Status "Exporting current security policy..." + $exportResult = secedit /export /cfg $cfgFile /quiet + if ($LASTEXITCODE -ne 0) { + throw "secedit /export failed with exit code $LASTEXITCODE" + } + + # Read the exported policy + $content = Get-Content $cfgFile -Raw + + # --- Password Policy Settings --- + + # CIS 1.1.1: Enforce password history = 24 (or more) + $content = $content -replace 'PasswordHistorySize\s*=\s*\d+', 'PasswordHistorySize = 24' + if ($content -notmatch 'PasswordHistorySize') { + $content = $content -replace '(\[System Access\])', "`$1`r`nPasswordHistorySize = 24" + } + + # CIS 1.1.2: Maximum password age = 365 days (must not be 0; org may use shorter) + $content = $content -replace 'MaximumPasswordAge\s*=\s*\d+', 'MaximumPasswordAge = 365' + if ($content -notmatch 'MaximumPasswordAge') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMaximumPasswordAge = 365" + } + + # CIS 1.1.3: Minimum password age = 1 day + $content = $content -replace 'MinimumPasswordAge\s*=\s*\d+', 'MinimumPasswordAge = 1' + if ($content -notmatch 'MinimumPasswordAge') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMinimumPasswordAge = 1" + } + + # CIS 1.1.4: Minimum password length = 14 characters + $content = $content -replace 'MinimumPasswordLength\s*=\s*\d+', 'MinimumPasswordLength = 14' + if ($content -notmatch 'MinimumPasswordLength') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMinimumPasswordLength = 14" + } + + # CIS 1.1.5: Password complexity = Enabled (1) + $content = $content -replace 'PasswordComplexity\s*=\s*\d+', 'PasswordComplexity = 1' + if ($content -notmatch 'PasswordComplexity') { + $content = $content -replace '(\[System Access\])', "`$1`r`nPasswordComplexity = 1" + } + + # CIS 1.1.6: Store password using reversible encryption = Disabled (0) + $content = $content -replace 'ClearTextPassword\s*=\s*\d+', 'ClearTextPassword = 0' + if ($content -notmatch 'ClearTextPassword') { + $content = $content -replace '(\[System Access\])', "`$1`r`nClearTextPassword = 0" + } + + # --- Account Lockout Settings --- + + # CIS 1.2.1: Account lockout duration = 15 minutes (0 = until admin unlocks; use 15+) + $content = $content -replace 'LockoutDuration\s*=\s*-?\d+', 'LockoutDuration = 15' + if ($content -notmatch 'LockoutDuration') { + $content = $content -replace '(\[System Access\])', "`$1`r`nLockoutDuration = 15" + } + + # CIS 1.2.2: Account lockout threshold = 5 (invalid logon attempts) + $content = $content -replace 'LockoutBadCount\s*=\s*\d+', 'LockoutBadCount = 5' + if ($content -notmatch 'LockoutBadCount') { + $content = $content -replace '(\[System Access\])', "`$1`r`nLockoutBadCount = 5" + } + + # CIS 1.2.3: Reset lockout counter after = 15 minutes + $content = $content -replace 'ResetLockoutCount\s*=\s*\d+', 'ResetLockoutCount = 15' + if ($content -notmatch 'ResetLockoutCount') { + $content = $content -replace '(\[System Access\])', "`$1`r`nResetLockoutCount = 15" + } + + # Write the modified policy back to disk + Write-Status "Writing updated policy configuration..." + Set-Content -Path $cfgFile -Value $content -Encoding Unicode + + # Apply the updated policy using secedit + Write-Status "Applying updated security policy..." + $applyResult = secedit /configure /db $sdbFile /cfg $cfgFile /areas SECURITYPOLICY /log $logFile /quiet + if ($LASTEXITCODE -ne 0) { + Write-Status "secedit /configure completed with exit code $LASTEXITCODE. Check $logFile for details." 'WARN' + } else { + Write-Status "Security policy applied successfully." + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} finally { + # Clean up temp files + @($cfgFile, $sdbFile, $logFile) | ForEach-Object { + if (Test-Path $_) { Remove-Item $_ -Force -ErrorAction SilentlyContinue } + } +} + +Write-Status "Account and password policy remediation complete." diff --git a/docs/solutions/cis/win-11-intune/scripts/registry-settings.ps1 b/docs/solutions/cis/win-11-intune/scripts/registry-settings.ps1 new file mode 100644 index 0000000000..0683c9f2e3 --- /dev/null +++ b/docs/solutions/cis/win-11-intune/scripts/registry-settings.ps1 @@ -0,0 +1,210 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 11 Enterprise Benchmark (Intune) v8.1 - Registry-based Security Settings + +.DESCRIPTION + Configures registry-based security settings checked by registry osquery queries + in the CIS Windows 11 Enterprise (Intune) benchmark. Settings are grouped by + CIS category. + + This script is idempotent - safe to run multiple times. + +.NOTES + Requires: Administrator privileges + Run as: SYSTEM or local Administrator + Settings configured via registry apply immediately unless otherwise noted. +#> + +[CmdletBinding()] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Set-RegValue { + param( + [string]$Path, + [string]$Name, + $Value, + [string]$Type = 'DWord' + ) + if (-not (Test-Path $Path)) { + New-Item -Path $Path -Force | Out-Null + } + Set-ItemProperty -Path $Path -Name $Name -Value $Value -Type $Type -Force + Write-Output "Set [$Path] $Name = $Value" +} + +Write-Output "Starting CIS Windows 11 Intune registry remediation..." + +# ============================================================ +# Section 4 - Control Panel / Account Lockout +# ============================================================ + +# 4.4.1 Apply UAC restrictions to local accounts on network logons +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'LocalAccountTokenFilterPolicy' -Value 0 + +# ============================================================ +# Section 5 - System / Windows Update +# ============================================================ + +# 5.1 Ensure automatic updates are enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' ` + -Name 'NoAutoUpdate' -Value 0 + +# ============================================================ +# Section 9 - Microsoft Edge / Browser settings +# ============================================================ + +# Disable Internet Explorer as standalone browser (IE mode in Edge only) +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Internet Explorer\Main' ` + -Name 'NotifyDisableIEOptions' -Value 0 + +# ============================================================ +# Section 18 - Administrative Templates: Computer +# ============================================================ + +# 18.1.1 Ensure 'Prevent enabling lock screen camera' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization' ` + -Name 'NoLockScreenCamera' -Value 1 + +# 18.1.2 Ensure 'Prevent enabling lock screen slide show' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization' ` + -Name 'NoLockScreenSlideshow' -Value 1 + +# 18.4.1 Ensure 'MSS: Enable Safe DLL search mode' is Enabled +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' ` + -Name 'SafeDllSearchMode' -Value 1 + +# 18.4.2 Ensure 'MSS: Enable Structured Exception Handling Overwrite Protection (SEHOP)' is Enabled +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\kernel' ` + -Name 'DisableExceptionChainValidation' -Value 0 + +# 18.4.3 Ensure 'MSS: IP source routing protection level' is Highest Protection +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' ` + -Name 'DisableIPSourceRouting' -Value 2 + +# 18.4.4 Ensure 'MSS: NetBIOS protection' (NoNameReleaseOnDemand) is Enabled +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters' ` + -Name 'NoNameReleaseOnDemand' -Value 1 + +# 18.5 Connectivity +# 18.5.1 Ensure 'Allow Print Spooler to accept client connections' is Disabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers' ` + -Name 'RegisterSpoolerRemoteRpcEndPoint' -Value 2 + +# 18.5.2 Ensure 'Turn off Microsoft Peer-to-Peer Networking Services' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Peernet' ` + -Name 'Disabled' -Value 1 + +# 18.8.4 Ensure 'Configure Windows SmartScreen' is Enabled (Warn + prevent bypass) +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' ` + -Name 'EnableSmartScreen' -Value 1 +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' ` + -Name 'ShellSmartScreenLevel' -Value 'Block' -Type String + +# 18.9.4 Ensure 'Block user from showing account details on sign-in' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' ` + -Name 'BlockUserFromShowingAccountDetailsOnSignin' -Value 1 + +# 18.9.5 Ensure 'Do not display network selection UI' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' ` + -Name 'DontDisplayNetworkSelectionUI' -Value 1 + +# 18.9.6 Ensure 'Do not enumerate connected users on domain-joined computers' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' ` + -Name 'DontEnumerateConnectedUsers' -Value 1 + +# 18.9.7 Ensure 'Enumerate local users on domain-joined computers' is Disabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System' ` + -Name 'EnumerateLocalUsers' -Value 0 + +# ============================================================ +# Section 18.10 - Autoplay +# ============================================================ + +# 18.10.1 Ensure 'Disallow Autoplay for non-volume devices' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer' ` + -Name 'NoAutoplayfornonVolume' -Value 1 + +# 18.10.2 Ensure 'Set the default behavior for AutoRun' is 'Do not execute any autorun commands' +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' ` + -Name 'NoAutorun' -Value 1 + +# 18.10.3 Ensure 'Turn off Autoplay' is Enabled (All Drives) +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' ` + -Name 'NoDriveTypeAutoRun' -Value 255 + +# ============================================================ +# Section 18.11 - BitLocker +# ============================================================ + +# Configure BitLocker startup PIN (informational - requires manual configuration) +Write-Output "INFO: BitLocker startup PIN and encryption settings require manual configuration via BitLocker Drive Encryption control panel or Intune policy." + +# ============================================================ +# Section 18.17 - SMB Settings +# ============================================================ + +# Ensure SMBv1 is disabled +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' ` + -Name 'SMB1' -Value 0 + +# Ensure SMBv2 is enabled +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' ` + -Name 'SMB2' -Value 1 + +# Require SMB packet signing (server side) +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' ` + -Name 'RequireSecuritySignature' -Value 1 +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' ` + -Name 'EnableSecuritySignature' -Value 1 + +# Require SMB packet signing (client/workstation side) +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters' ` + -Name 'RequireSecuritySignature' -Value 1 +Set-RegValue -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters' ` + -Name 'EnableSecuritySignature' -Value 1 + +# ============================================================ +# Section 18.21 - UAC +# ============================================================ + +# 18.21.1 Ensure 'User Account Control: Admin Approval Mode for the Built-in Administrator account' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'FilterAdministratorToken' -Value 1 + +# 18.21.2 Ensure UAC prompt for administrators: Prompt for consent on the secure desktop +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'ConsentPromptBehaviorAdmin' -Value 2 + +# 18.21.3 Ensure UAC prompt for standard users: Automatically deny elevation requests +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'ConsentPromptBehaviorUser' -Value 0 + +# 18.21.4 Ensure 'User Account Control: Detect application installations and prompt for elevation' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'EnableInstallerDetection' -Value 1 + +# 18.21.5 Ensure UAC is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'EnableLUA' -Value 1 + +# 18.21.6 Ensure 'User Account Control: Virtualize file and registry write failures to per-user locations' is Enabled +Set-RegValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'EnableVirtualization' -Value 1 + +# ============================================================ +# Section 19 - Administrative Templates: User +# ============================================================ + +# 19.1.1 Ensure 'Turn off toast notifications on the lock screen' is Enabled (HKCU) +# Note: Per-user settings (HKCU) cannot be reliably set from a SYSTEM-context script. +# Configure this via Intune device configuration profile: Experience/AllowToastNotifications = 0 +Write-Output "INFO: Toast notification lock screen settings should be configured via Intune device configuration profile (Experience/AllowToastNotifications)" + +Write-Output "" +Write-Output "CIS registry remediation complete." +Write-Output "Restart may be required for some settings to take effect." diff --git a/docs/solutions/cis/win-11/README.md b/docs/solutions/cis/win-11/README.md new file mode 100644 index 0000000000..05abb09367 --- /dev/null +++ b/docs/solutions/cis/win-11/README.md @@ -0,0 +1,23 @@ +# Windows 11 Enterprise benchmarks + +Fleet's policies have been written against v4.0.0 of the benchmark. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. + +For requirements and usage details, see the [CIS Benchmarks](https://fleetdm.com/docs/using-fleet/cis-benchmarks) documentation. + +### Contents + +| Folder | Description | +|--------|-------------| +| `policies/` | GitOps-compatible policy YAML — import via `fleetctl apply` or reference with `- path:` in `fleet.yml` | +| `configuration-profiles/` | SyncML XML profiles — upload via Fleet UI or `fleetctl apply` to enforce the settings checked by the policies | +| `scripts/` | PowerShell scripts — upload via Fleet UI or `fleetctl apply` and link as `run_script` remediation in the corresponding policy | + +### Limitations + +> None. All items in this version of the benchmark are able to be automated. + + +### Checks that require a Group Policy template + +Several items require Group Policy templates in place in order to audit them. +These items are tagged with the label `CIS_group_policy_template_required` in the YAML file, and details about the required Group Policy templates can be found in each item's `resolution`. diff --git a/docs/solutions/cis/win-11/configuration-profiles/audit-policies.xml b/docs/solutions/cis/win-11/configuration-profiles/audit-policies.xml new file mode 100644 index 0000000000..85fa1856b8 --- /dev/null +++ b/docs/solutions/cis/win-11/configuration-profiles/audit-policies.xml @@ -0,0 +1,325 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogon_AuditCredentialValidation + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditApplicationGroupManagement + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditSecurityGroupManagement + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountManagement_AuditUserAccountManagement + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/DetailedTracking_AuditPNPActivity + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/DetailedTracking_AuditProcessCreation + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditAccountLockout + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditGroupMembership + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditLogoff + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditLogon + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditOtherLogonLogoffEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/AccountLogonLogoff_AuditSpecialLogon + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditDetailedFileShare + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditFileShare + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditOtherObjectAccessEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/ObjectAccess_AuditRemovableStorage + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditAuthenticationPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditAuthorizationPolicyChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditMPSSVCRuleLevelPolicyChange + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PolicyChange_AuditOtherPolicyChangeEvents + + 2 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/PrivilegeUse_AuditSensitivePrivilegeUse + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditIPsecDriver + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditOtherSystemEvents + + 3 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSecurityStateChange + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSecuritySystemExtension + + 1 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/Audit/System_AuditSystemIntegrity + + 3 + + diff --git a/docs/solutions/cis/win-11/configuration-profiles/firewall.xml b/docs/solutions/cis/win-11/configuration-profiles/firewall.xml new file mode 100644 index 0000000000..5d3f3df8f0 --- /dev/null +++ b/docs/solutions/cis/win-11/configuration-profiles/firewall.xml @@ -0,0 +1,169 @@ + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/DomainProfile/LogMaxFileSize + + 16384 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/LogMaxFileSize + + 16384 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableFirewall + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/DefaultInboundAction + + 1 + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalPolicyMerge + + false + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/AllowLocalIpsecPolicyMerge + + false + + + + + + + bool + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/EnableLogDroppedPackets + + true + + + + + + + int + + + ./Vendor/MSFT/Firewall/MdmStore/PublicProfile/LogMaxFileSize + + 16384 + + diff --git a/docs/solutions/cis/win-11/configuration-profiles/local-security-options.xml b/docs/solutions/cis/win-11/configuration-profiles/local-security-options.xml new file mode 100644 index 0000000000..a9c6cfd90c --- /dev/null +++ b/docs/solutions/cis/win-11/configuration-profiles/local-security-options.xml @@ -0,0 +1,57 @@ + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_EnableAdministratorAccountStatus + + 0 + + + + + + + int + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_EnableGuestAccountStatus + + 0 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_RenameAdministratorAccount + + AdminAcct + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/LocalPoliciesSecurityOptions/Accounts_RenameGuestAccount + + GuestAcct + + diff --git a/docs/solutions/cis/win-11/configuration-profiles/user-rights-assignment.xml b/docs/solutions/cis/win-11/configuration-profiles/user-rights-assignment.xml new file mode 100644 index 0000000000..89d0699f6f --- /dev/null +++ b/docs/solutions/cis/win-11/configuration-profiles/user-rights-assignment.xml @@ -0,0 +1,328 @@ + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AccessCredentialManagerAsTrustedCaller + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AccessFromNetwork + + *S-1-5-32-544*S-1-5-32-555 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ActAsPartOfTheOperatingSystem + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/AllowLocalLogOn + + *S-1-5-32-544*S-1-5-32-545 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/BackupFilesAndDirectories + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ChangeSystemTime + + *S-1-5-32-544*S-1-5-19 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateToken + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateGlobalObjects + + *S-1-5-32-544*S-1-5-19*S-1-5-20*S-1-5-6 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreatePermanentSharedObjects + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/CreateSymbolicLinks + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DebugPrograms + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyAccessFromNetwork + + *S-1-5-32-546*S-1-5-113 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyLocalLogOn + + *S-1-5-32-546 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/DenyRemoteDesktopServicesLogOn + + *S-1-5-32-546*S-1-5-113 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/EnableDelegation + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/RemoteShutdown + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/GenerateSecurityAudits + + *S-1-5-19*S-1-5-20 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ImpersonateClient + + *S-1-5-32-544*S-1-5-19*S-1-5-20*S-1-5-6 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/IncreaseSchedulingPriority + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/LoadUnloadDeviceDrivers + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/LockMemory + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ManageAuditingAndSecurityLog + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ModifyObjectLabel + + + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ModifyFirmwareEnvironment + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/ProfileSingleProcess + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/RestoreFilesAndDirectories + + *S-1-5-32-544 + + + + + + + chr + + + ./Device/Vendor/MSFT/Policy/Config/UserRights/TakeOwnership + + *S-1-5-32-544 + + diff --git a/docs/solutions/cis/win-11/policies/cis-policy-queries.yml b/docs/solutions/cis/win-11/policies/cis-policy-queries.yml new file mode 100644 index 0000000000..64f682c0db --- /dev/null +++ b/docs/solutions/cis/win-11/policies/cis-policy-queries.yml @@ -0,0 +1,9520 @@ +# The following fields are read-only metadata and are not supported in GitOps. +# They are preserved for reference and for use by other tooling. +# Affected fields: purpose, tags, contributors, platforms + +- name: CIS - Ensure 'Enforce password history' is set to '24' or more passwords + # platforms: win11 + platform: windows + description: | + This policy check determines the number of renewed, unique passwords that have to be associated with a user account before you can reuse an old password. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 24 or more passwords: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Enforce password history' + query: | + SELECT 1 FROM security_profile_info WHERE password_history_size >= 24; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Maximum password age' is set to '365 or fewer days, but not 0' + # platforms: win11 + platform: windows + description: | + This policy setting defines how long a user can use their password before it expires. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 365 or fewer days, but not 0: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Maximum password age' + query: | + SELECT 1 FROM security_profile_info WHERE (maximum_password_age <= 365 AND maximum_password_age != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Minimum password age' is set to '1 or more days' + # platforms: win11 + platform: windows + description: | + This policy setting determines the number of days that you must use a password before you can + change it. The range of values for this policy setting is between 1 and 999 days. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 1 or more days: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Minimum password age' + query: | + SELECT 1 FROM security_profile_info WHERE minimum_password_age >= 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Minimum password length' is set to '14 or more characters' + # platforms: win11 + platform: windows + description: | + This policy setting determines the least number of characters that make up a password for a user account. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 14 or more characters + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Minimum password length' + query: | + SELECT 1 FROM security_profile_info WHERE minimum_password_length >= 14; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Password must meet complexity requirements' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting checks all new passwords to ensure that they meet basic requirements for + strong passwords. Passwords that contain only alphanumeric characters are extremely easy to + discover with several publicly available tools. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Password must meet complexity requirements' + query: | + SELECT 1 FROM security_profile_info WHERE password_complexity = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Relax minimum password length limits' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the minimum password length setting can be increased beyond the legacy limit of 14 characters. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Relax minimum password length limits' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SAM\\RelaxMinimumPasswordLengthLimits' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Store passwords using reversible encryption' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the operating system stores passwords in a way that uses + reversible encryption, which provides support for application protocols that require knowledge + of the user's password for authentication purposes. Passwords that are stored with reversible + encryption are essentially the same as plaintext versions of the passwords. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Password Policy\Store passwords using reversible encryption' + query: | + SELECT 1 FROM security_profile_info WHERE clear_text_password = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Account lockout duration' is set to '15 or more minute(s)' + # platforms: win11 + platform: windows + description: | + This policy setting determines the length of time that must pass before a locked account is unlocked and a user can try to log on again. The setting does this by specifying the number of minutes a locked out account will remain unavailable. If the value for this policy setting is configured to 0, locked out accounts will remain locked out until an administrator manually unlocks them. + Although it might seem like a good idea to configure the value for this policy setting to a high value, such a configuration will likely increase the number of calls that the help desk receives to unlock accounts locked by mistake. Users should be aware of the length of time a lock remains in place, so that they realize they only need to call the help desk if they have an extremely urgent need to regain access to their computer. + The recommended state for this setting is: 15 or more minute(s). + Note: Password Policy settings (section 1.1) and Account Lockout Policy settings (section 1.2) must be applied via the Default Domain Policy GPO in order to be globally in effect on domain user accounts as their default behavior. If these settings are configured in another GPO, they will only affect local user accounts on the computers that receive the GPO. However, custom exceptions to the default password policy and account lockout policy rules for specific domain users and/or groups can be defined using Password Settings Objects (PSOs), which are completely separate from Group Policy and most easily configured using Active Directory Administrative Center. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '15 or more minute(s)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account Lockout Policy\Account lockout duration' + query: | + SELECT 1 FROM cis_audit where item = "1.2.1" and CAST(value as integer) >= 15; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Account lockout threshold' is set to '5 or fewer invalid logon attempt(s), but not 0' + # platforms: win11 + platform: windows + description: | + This policy setting determines the number of failed logon attempts before the account is locked. Setting this policy to 0 does not conform to the benchmark as doing so disables the account lockout threshold. + The recommended state for this setting is: 5 or fewer invalid logon attempt(s), but not 0. + Note: Password Policy settings (section 1.1) and Account Lockout Policy settings (section 1.2) must be applied via the Default Domain Policy GPO in order to be globally in effect on domain user accounts as their default behavior. If these settings are configured in another GPO, they will only affect local user accounts on the computers that receive the GPO. However, custom exceptions to the default password policy and account lockout policy rules for specific domain users and/or groups can be defined using Password Settings Objects (PSOs), which are completely separate from Group Policy and most easily configured using Active Directory Administrative Center. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '5 or fewer invalid login attempt(s), but not 0': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account Lockout Policy\Account lockout threshold' + query: | + SELECT 1 FROM cis_audit where item = "1.2.2" and CAST(value as integer) <= 5 and CAST(value as integer) > 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Reset account lockout counter after' is set to '15 or more minute(s)' + # platforms: win11 + platform: windows + description: | + This policy setting determines the length of time before the Account lockout threshold resets to zero. The default value for this policy setting is Not Defined. If the Account lockout threshold is defined, this reset time must be less than or equal to the value for the Account lockout duration setting. + If you leave this policy setting at its default value or configure the value to an interval that is too long, your environment could be vulnerable to a DoS attack. An attacker could maliciously perform a number of failed logon attempts on all users in the organization, which will lock out their accounts. If no policy were determined to reset the account lockout, it would be a manual task for administrators. Conversely, if a reasonable time value is configured for this policy setting, users would be locked out for a set period until all of the accounts are unlocked automatically. + The recommended state for this setting is: 15 or more minute(s). + Note: Password Policy settings (section 1.1) and Account Lockout Policy settings (section 1.2) must be applied via the Default Domain Policy GPO in order to be globally in effect on domain user accounts as their default behavior. If these settings are configured in another GPO, they will only affect local user accounts on the computers that receive the GPO. However, custom exceptions to the default password policy and account lockout policy rules for specific domain users and/or groups can be defined using Password Settings Objects (PSOs), which are completely separate from Group Policy and most easily configured using Active Directory Administrative Center. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '15 or more minute(s)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Account Policies\Account Lockout Policy\Reset account lockout counter after' + query: | + SELECT 1 FROM cis_audit where item = "1.2.3" and CAST(value as integer) >= 15; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Access Credential Manager as a trusted caller' is set to 'No One' + # platforms: win11 + platform: windows + description: | + This security setting is used by Credential Manager during Backup and Restore. No accounts should have this user right, as it is only assigned to Winlogon. Users' saved credentials might be compromised if this user right is assigned to other entities. + The recommended state for this setting is: No One. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list of users: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Access Credential Manager as a trusted caller' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/AccessCredentialManagerAsTrustedCaller" + AND mdm_command_output = ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Access this computer from the network' is set to 'Administrators, Remote Desktop Users' + # platforms: win11 + platform: windows + description: | + This policy setting allows other users on the network to connect to the computer and is required by various network protocols that include Server Message Block (SMB)-based protocols, NetBIOS, Common Internet File System (CIFS), and Component Object Model Plus (COM+). + The recommended state for this setting is: Administrators, Remote Desktop Users. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list containing only 'Administrators' and 'Remote Desktop Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Access this computer from the network' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/AccessFromNetwork" + AND mdm_command_output LIKE "Administrators_REMOTE INTERACTIVE LOGON"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: sharon-fdm + +- name: CIS - Ensure 'Act as part of the operating system' is set to 'No One' + # platforms: win11 + platform: windows + description: | + This policy setting allows a process to assume the identity of any user and thus gain access to the resources that the user is authorized to access. + The recommended state for this setting is: No One. + Note: This user right is considered a "sensitive privilege" for the purposes of auditing. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list of users: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Act as part of the operating system' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Config/UserRights/ActAsPartOfTheOperatingSystem" AND mdm_command_output = ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Adjust memory quotas for a process' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE' + # platforms: win11 + platform: windows + description: | + This policy setting allows a user to adjust the maximum amount of memory that is available to a process. The ability to adjust memory quotas is useful for system tuning, but it can be abused. In the wrong hands, it could be used to launch a denial of service (DoS) attack. + The recommended state for this setting is: Administrators, LOCAL SERVICE, NETWORK SERVICE. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list of only 'Administrators', 'LOCAL SERVICE' and 'NETWORK SERVICE': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Adjust memory quotas for a process' + query: | + SELECT 1 FROM cis_audit where item = "2.2.4" AND (regex_match(value,".*(?=.*Administrators)(?=.*LOCAL SERVICE)(?=.*NETWORK SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Allow log on locally' is set to 'Administrators, Users' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users can interactively log on to computers in your environment. Logons that are initiated by pressing the CTRL+ALT+DEL key sequence on the client computer keyboard require this user right. Users who attempt to log on through Terminal Services / Remote Desktop Services or IIS also require this user right. + The recommended state for this setting is: Administrators, Users. + Note: The Guest account is also assigned this user right by default. Although this account is disabled by default, it's recommended that you configure this setting through Group Policy. However, this user right should generally be restricted to the Administrators and Users groups. Assign this user right to the Backup Operators group if your organization requires that they have this capability. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list containing only 'Administrators' and 'Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Allow log on locally' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/AllowLocalLogOn" + AND + ( + mdm_command_output LIKE "Administrators_Users" + OR + mdm_command_output LIKE "Users_Administrators" + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: sharon-fdm + +- name: CIS - Ensure 'Allow log on through Remote Desktop Services' is set to 'Administrators, Remote Desktop Users' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users or groups have the right to log on as a Remote Desktop Services client. If your organization uses Remote Assistance as part of its help desk strategy, create a group and assign it this user right through Group Policy. If the help desk in your organization does not use Remote Assistance, assign this user right only to the Administrators group or use the Restricted Groups feature to ensure that no user accounts are part of the Remote Desktop Users group. + Restrict this user right to the Administrators group, and possibly the Remote Desktop Users group, to prevent unwanted users from gaining access to computers on your network by means of the Remote Assistance feature. + The recommended state for this setting is: Administrators, Remote Desktop Users. Note: The above list is to be treated as a whitelist, which implies that the above + principals need not be present for assessment of this recommendation to pass. + Note #2: In all versions of Windows prior to Windows 7, Remote Desktop Services was known as Terminal Services, so you should substitute the older term if comparing against an older OS. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, Remote Desktop Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Allow log on through Remote Desktop Services' + query: | + SELECT 1 FROM cis_audit where item = "2.2.6" AND (regex_match(value,".*(?=.*Administrators)(?=.*Remote Desktop Users).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Back up files and directories' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to circumvent file and directory permissions to back up the system. This user right is enabled only when an application (such as NTBACKUP) attempts to access a file or directory through the NTFS file system backup application programming interface (API). Otherwise, the assigned file and directory permissions apply. + The recommended state for this setting is: Administrators. + Note: This user right is considered a "sensitive privilege" for the purposes of auditing. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a list containing only 'Administrators': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Back up files and directories' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/BackupFilesAndDirectories" AND mdm_command_output = "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: sharon-fdm + +- name: CIS - Ensure 'Change the system time' is set to 'Administrators, LOCAL SERVICE' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users and groups can change the time and date on the + internal clock of the computers in your environment. Users who are assigned this user right can + affect the appearance of event logs. When a computer's time setting is changed, logged events + reflect the new time, not the actual time that the events occurred. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, LOCAL SERVICE': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Change the system time' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ChangeSystemTime" AND mdm_command_output LIKE "Administrators%" AND mdm_command_output LIKE "%LOCAL SERVICE"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Change the time zone' is set to 'Administrators, LOCAL SERVICE, Users' + # platforms: win11 + platform: windows + description: | + This setting determines which users can change the time zone of the computer. This ability holds no great danger for the computer and may be useful for mobile workers. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, LOCAL SERVICE, Users': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Change the time zone' + query: | + SELECT 1 FROM cis_audit where item = "2.2.9" AND (regex_match(value,".*(?=.*Administrators)(?=.*Users)(?=.*LOCAL SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Create a pagefile' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to change the size of the pagefile. By making the pagefile extremely large or extremely small, an attacker could easily affect the performance of a compromised computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create a pagefile' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ChangeSystemTime" AND mdm_command_output LIKE "%Administrators%"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Create a token object' is set to an empty list + # platforms: win11 + platform: windows + description: | + This policy setting allows a process to create an access token, which may provide elevated rights to access sensitive data. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create a token object' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateToken" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Create global objects' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to change the size of the pagefile. By making the pagefile extremely large or extremely small, an attacker could easily affect the performance of a compromised computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create global objects' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateGlobalObjects" AND (regex_match(mdm_command_output,".*(Administrators|LOCAL SERVICE|NETWORK SERVICE|([^\w\s]SERVICE)).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Create permanent shared objects' is set to an empty list + # platforms: win11 + platform: windows + description: | + This user right is useful to kernel-mode components that extend the object namespace. However, + components that run in kernel mode have this user right inherently. Therefore, it is typically + not necessary to specifically assign this user right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to an empty list: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create permanent shared objects' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreatePermanentSharedObjects" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Create symbolic links' is set to 'Administrators or NT VIRTUAL MACHINE\Virtual Machines' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users can create symbolic links. In Windows Vista, existing + NTFS file system objects, such as files and folders, can be accessed by referring to a new kind + of file system object called a symbolic link. A symbolic link is a pointer (much like a shortcut + or .lnk file) to another file system object, which can be a file, folder, shortcut or another + symbolic link. The difference between a shortcut and a symbolic link is that a shortcut only + works from within the Windows shell. To other programs and applications, shortcuts are just + another file, whereas with symbolic links, the concept of a shortcut is implemented as a feature + of the NTFS file system. Symbolic links can potentially expose security vulnerabilities in + applications that are not designed to use them. For this reason, the privilege for creating + symbolic links should only be assigned to trusted users. By default, only Administrators can + create symbolic links. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators or NT VIRTUAL MACHINE\Virtual Machines' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Create symbolic links' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/CreateSymbolicLinks" AND (regex_match(mdm_command_output,".*(Administrators|Virtual Machines).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Debug programs' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting determines which user accounts will have the right to attach a debugger to + any process or to the kernel, which provides complete access to sensitive and critical operating + system components. Developers who are debugging their own applications do not need to be + assigned this user right; however, developers who are debugging new system components will need it. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Administrators' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Debug programs' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DebugPrograms" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny access to this computer from the network' includes 'Guest' + # platforms: win11 + platform: windows + description: | + This policy setting prohibits users from connecting to a computer from across the network, which + would allow users to access and potentially modify data remotely. In high security environments, + there should be no need for remote users to access data on a computer. Instead, file sharing + should be accomplished through the use of network servers. This user right supersedes the Access + this computer from the network user right if an account is subject to both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guest' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny access to this computer from the network' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyAccessFromNetwork" AND (regex_match(mdm_command_output,".*(Guest).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on as a batch job' includes 'Guests' + # platforms: win11 + platform: windows + description: | + This policy setting determines which accounts will not be able to log on to the computer as a + batch job. A batch job is not a batch (.bat) file, but rather a batch-queue facility. Accounts that use the Task Scheduler to schedule jobs need this user right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on as a batch job' + query: | + SELECT 1 FROM cis_audit where item = "2.2.17" AND (regex_match(value,".*(?=.*Guests).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on as a service' includes 'Guests' + # platforms: win11 + platform: windows + description: | + This security setting determines which service accounts are prevented from registering a process + as a service. This user right supersedes the Log on as a service user right if an account is subject to both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on as a service' + query: | + SELECT 1 FROM cis_audit where item = "2.2.18" AND (regex_match(value,".*(?=.*Guests).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on locally' includes 'Guest' + # platforms: win11 + platform: windows + description: | + This security setting determines which users are prevented from logging on at the computer. This + policy setting supersedes the Allow log on locally policy setting if an account is subject to + both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on locally' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyLocalLogOn" AND (regex_match(mdm_command_output,".*(Guest).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Deny log on through Remote Desktop Services' includes 'Guest' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether users can log on as Remote Desktop clients. This user right supersedes the Allow log on through Remote Desktop Services user right if an account is subject to both policies. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path includes 'Guests' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on through Remote Desktop Services' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/DenyRemoteDesktopServicesLogOn" AND (regex_match(mdm_command_output,".*(Guest).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Enable computer and user accounts to be trusted for delegation' is set to an empty list + # platforms: win11 + platform: windows + description: | + This policy setting allows users to change the Trusted for Delegation setting on a computer object in Active Directory. Abuse of this privilege could allow unauthorized users to impersonate other users on the network. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Enable computer and user accounts to be trusted for delegation' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/EnableDelegation" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Force shutdown from a remote system' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to shut down Windows Vista-based and newer computers from + remote locations on the network. Anyone who has been assigned this user right can cause a denial + of service (DoS) condition, which would make the computer unavailable to service user requests. + Therefore, it is recommended that only highly trusted administrators be assigned this user. + right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Force shutdown from a remote system' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/RemoteShutdown" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Generate security audits' is set to 'LOCAL SERVICE, NETWORK SERVICE' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users or processes can generate audit records in the Security log. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Generate security audits' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/GenerateSecurityAudits" AND (regex_match(mdm_command_output,".*(LOCAL SERVICE|NETWORK SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Impersonate a client after authentication' is set to 'Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE' + # platforms: win11 + platform: windows + description: | + The policy setting allows programs that run on behalf of a user to impersonate that user (or + another specified account) so that they can act on behalf of the user. If this user right is + required for this kind of impersonation, an unauthorized user will not be able to convince a + client to connect—for example, by remote procedure call (RPC) or named pipes—to a service that + they have created to impersonate that client, which could elevate the unauthorized user's permissions to administrative or system levels. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Impersonate a client after authentication' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ImpersonateClient" AND (regex_match(mdm_command_output,".*(Administrators|LOCAL SERVICE|NETWORK SERVICE|([^\w\s]SERVICE)).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Increase scheduling priority' is set to 'Administrators, Window Manager\Window Manager Group' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether users can increase the base priority class of a process. + (It is not a privileged operation to increase relative priority within a priority class.) This + user right is not required by administrative tools that are supplied with the operating system but might be required by software development tools. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Increase scheduling priority' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/IncreaseSchedulingPriority" AND (regex_match(mdm_command_output,".*(Administrators|Window Manager Group).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Load and unload device drivers' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to dynamically load a new device driver on a system. An + attacker could potentially use this capability to install malicious code that appears to be a + device driver. This user right is required for users to add local printers or printer drivers in + Windows. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Increase scheduling priority' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/LoadUnloadDeviceDrivers" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Lock pages in memory' is set to an empty list + # platforms: win11 + platform: windows + description: | + This policy setting allows a process to keep data in physical memory, which prevents the system from paging the data to virtual memory on disk. If this user right is assigned, significant degradation of system performance can occur. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Lock pages in memory' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/LockMemory" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Log on as a batch job' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows accounts to log on using the task scheduler service. Because the task + scheduler is often used for administrative purposes, it may be needed in enterprise + environments. However, its use should be restricted in high security environments to prevent + misuse of system resources or to prevent attackers from using the right to launch malicious code + after gaining user level access to a computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Log on as a batch job' + query: | + SELECT 1 FROM cis_audit where item = "2.2.28" AND (regex_match(value,".*(?=.*Administrators).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Log on as a service' is configured + # platforms: win11 + platform: windows + description: | + This policy setting allows accounts to launch network services or to register a process as a + service running on the system. This user right should be restricted on any computer in a high + security environment, but because many applications may require this privilege, it should be + carefully evaluated and tested before configuring it in an enterprise environment. On Windows + Vista-based (and newer) computers, no users or groups have this privilege by default. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Log on as a service' + query: | + SELECT 1 FROM cis_audit where item = "2.2.29" AND value = ","; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Manage auditing and security log' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users can change the auditing options for files and directories and clear the Security log. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Manage auditing and security log' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ManageAuditingAndSecurityLog" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Modify an object label' is set to an empty list + # platforms: win11 + platform: windows + description: | + This privilege determines which user accounts can modify the integrity label of objects, such as + files, registry keys, or processes owned by other users. Processes running under a user account + can modify the label of an object owned by that user to a lower level without this privilege. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Modify an object label' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ModifyObjectLabel" AND mdm_command_output == ""; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Modify firmware environment values' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to configure the system-wide environment variables that affect + hardware configuration. This information is typically stored in the Last Known Good + Configuration. Modification of these values and could lead to a hardware failure that would result in a denial of service condition. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Modify firmware environment values' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ModifyFirmwareEnvironment" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Perform volume maintenance tasks' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to manage the system's volume or disk configuration, which could allow a user to delete a volume and cause data loss as well as a denial-ofservice condition. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Perform volume maintenance tasks' + query: | + SELECT 1 FROM cis_audit where item = "2.2.33" AND (regex_match(value,".*(?=.*Administrators).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Profile single process' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users can use tools to monitor the performance of + non-system processes. Typically, you do not need to configure this user right to use the + Microsoft Management Console (MMC) Performance snap-in. However, you do need this user right if + System Monitor is configured to collect data using Windows Management Instrumentation (WMI). + Restricting the Profile single process user right prevents intruders from gaining additional + information that could be used to mount an attack on the system. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Profile single process' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/ProfileSingleProcess" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Profile system performance' is set to 'Administrators, NT SERVICE\WdiServiceHost' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to use tools to view the performance of different system + processes, which could be abused to allow attackers to determine a system's active processes and + provide insight into the potential attack surface of the computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to 'Administrators, NT SERVICE\WdiServiceHost' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Profile system performance' + query: | + SELECT 1 FROM cis_audit where item = "2.2.35" AND (regex_match(value,".*(?=.*Administrators)(?=.*WdiServiceHost).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Replace a process level token' is set to 'LOCAL SERVICE, NETWORK SERVICE' + # platforms: win11 + platform: windows + description: | + This policy setting allows one process or service to start another service or process with a + different security access token, which can be used to modify the security access token of that sub-process and result in the escalation of privileges. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to 'LOCAL SERVICE, NETWORK SERVICE' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Replace a process level token' + query: | + SELECT 1 FROM cis_audit where item = "2.2.36" AND (regex_match(value,".*(?=.*LOCAL SERVICE)(?=.*NETWORK SERVICE).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Restore files and directories' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users can bypass file, directory, registry, and other + persistent object permissions when restoring backed up files and directories on computers that + run Windows Vista (or newer) in your environment. This user right also determines which users + can set valid security principals as object owners; it is similar to the Back up files and + directories user right. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Restore files and directories' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/RestoreFilesAndDirectories" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Shut down the system' is set to 'Administrators, Users' + # platforms: win11 + platform: windows + description: | + This policy setting determines which users who are logged on locally to the computers in your + environment can shut down the operating system with the Shut Down command. Misuse of this user right can result in a denial of service condition. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to 'Administrators, Users' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Shut down the system' + query: | + SELECT 1 FROM cis_audit where item = "2.2.38" AND (regex_match(value,".*(?=.*Administrators)(?=.*Users).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Take ownership of files or other objects' is set to 'Administrators' + # platforms: win11 + platform: windows + description: | + This policy setting allows users to take ownership of files, folders, registry keys, processes, + or threads. This user right bypasses any permissions that are in place to protect objects to give ownership to the specified user. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, ensure that the following UI path is set to an empty list + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Take ownership of files or other objects' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/UserRights/TakeOwnership" AND mdm_command_output == "Administrators"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, english-support-only + # contributors: marcosd4h + +- name: CIS - Ensure 'Accounts Guest account status' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Guest account is enabled or disabled. The Guest account allows unauthenticated network users to gain access to the system. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Guest account status' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_EnableGuestAccountStatus" and mdm_command_output == 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Accounts Limit local account use of blank passwords to console logon only' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether local accounts that are not password protected can be used to log on from locations other than the physical computer console. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Limit local account use of blank passwords to console logon only' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\LimitBlankPasswordUse' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Accounts Rename administrator account' + # platforms: win11 + platform: windows + description: | + The built-in local administrator account is a well-known account name that attackers will + target. It is recommended to choose another name for this account, and to avoid names that + denote administrative or elevated access accounts. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to value different than 'Administrator': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Rename administrator account' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_RenameAdministratorAccount" and mdm_command_output != "Administrator"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Accounts Rename guest account' + # platforms: win11 + platform: windows + description: | + The built-in local guest account is another well-known name to attackers. It is recommended to + rename this account to something that does not indicate its purpose. Even if you disable this + account, which is recommended, ensure that you rename it for added security. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to value different than 'Guest': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Accounts: Rename guest account' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/LocalPoliciesSecurityOptions/Accounts_RenameGuestAccount" and mdm_command_output != "Guest"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Audit Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows administrators to enable the more precise auditing capabilities. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\SCENoApplyLegacyAuditPolicy' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Audit Shut down system immediately if unable to log security audits' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the system shuts down if it is unable to log Security + events. It is a requirement for Trusted Computer System Evaluation Criteria (TCSEC)-C2 and + Common Criteria certification to prevent auditable events from occurring if the audit system is + unable to log them. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Audit: Shut down system immediately if unable to log security audits' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\crashonauditfail' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Devices Prevent users from installing printer drivers' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + For a computer to print to a shared printer, the driver for that shared printer must be + installed on the local computer. This security setting determines who is allowed to install a + printer driver as part of connecting to a shared printer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Devices: Prevent users from installing printer drivers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Print\\Providers\\LanManPrint Services\\Servers\\AddPrinterDrivers' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Digitally encrypt or sign secure channel data (always)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether all secure channel traffic that is initiated by the + domain member must be signed or encrypted. + When a computer joins a domain, a computer account is created. After it joins the domain, the + computer uses the password for that account to create a secure channel with the Domain + Controller for its domain every time that it restarts. Requests that are sent on the secure + channel are authenticated—and sensitive information such as passwords are encrypted—but the + channel is not integrity-checked, and not all information is encrypted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Digitally encrypt or sign secure channel data (always)' + query: | + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireSignOrSeal' AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Digitally encrypt secure channel data (when possible)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether a domain member should attempt to negotiate encryption + for all secure channel traffic that it initiates. + When a computer joins a domain, a computer account is created. After it joins the domain, the + computer uses the password for that account to create a secure channel with the Domain + Controller for its domain every time that it restarts. Requests that are sent on the secure + channel are authenticated—and sensitive information such as passwords are encrypted—but the + channel is not integrity-checked, and not all information is encrypted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Digitally encrypt secure channel data (when possible)' + query: | + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SealSecureChannel' AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Digitally sign secure channel data (when possible)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether a domain member should attempt to negotiate whether all + secure channel traffic that it initiates must be digitally signed. Digital signatures protect + the traffic from being modified by anyone who captures the data as it traverses the network. + When a computer joins a domain, a computer account is created. After it joins the domain, the + computer uses the password for that account to create a secure channel with the Domain + Controller for its domain every time that it restarts. Requests that are sent on the secure + channel are authenticated—and sensitive information such as passwords are encrypted—but the + channel is not integrity-checked, and not all information is encrypted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Digitally sign secure channel data (when possible)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SignSecureChannel' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Disable machine account password changes' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether a domain member can periodically change its computer + account password. Computers that cannot automatically change their account passwords are + potentially vulnerable, because an attacker might be able to determine the password for the + system's domain account. + The default configuration for Windows Server 2003-based computers that belong to a domain is + that they are automatically required to change the passwords for their accounts every 30 days. + If you disable this policy setting, computers that run Windows Server 2003 will retain the same + passwords as their computer accounts. Computers that are no longer able to automatically change + their account password are at risk from an attacker who could determine the password for the + computer's domain account. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Disable machine account password changes' + query: | + SELECT 1 FROM registry WHERE + path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange' AND data = 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Maximum machine account password age' is set to '30 or fewer days, but not 0' + # platforms: win11 + platform: windows + description: | + This policy setting determines the maximum allowable age for a computer account password. By + default, domain members automatically change their domain passwords every 30 days. If you + increase this interval significantly so that the computers no longer change their passwords, an + attacker would have more time to undertake a brute force attack against one of the computer + accounts. + In Active Directory-based domains, each computer has an account and password just like every + user. By default, the domain members automatically change their domain password every 30 days. + If you increase this interval significantly, or set it to 0 so that the computers no longer + change their passwords, an attacker will have more time to undertake a brute force attack to + guess the password of one or more computer accounts. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 30 or fewer days, but not 0: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Maximum machine account password age' + query: | + SELECT 1 FROM registry WHERE + path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\MaximumPasswordAge' + AND data <= 30 AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Require strong (Windows 2000 or later) session key' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + When this policy setting is enabled, a secure channel can only be established with Domain + Controllers that are capable of encrypting secure channel data with a strong (128-bit) session + key. To enable this policy setting, all Domain Controllers in the domain must be able to encrypt + secure channel data with a strong key, which means all Domain Controllers must be running + Microsoft Windows 2000 or newer. + + Session keys that are used to establish secure channel communications between Domain Controllers + and member computers are much stronger in Windows 2000 than they were in previous Microsoft + operating systems. Whenever possible, you should take advantage of these stronger session keys + to help protect secure channel communications from attacks that attempt to hijack network + sessions and eavesdropping. (Eavesdropping is a form of hacking in which network data is read or + altered in transit. The data can be modified to hide or change the sender, or be redirected.) + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Enabled' + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Require strong (Windows 2000 or later) session key' + query: | + SELECT 1 FROM registry WHERE + path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireStrongKey' AND data != 0; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Interactive logon Do not require CTRL+ALT+DEL' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether users must press CTRL+ALT+DEL before they log on. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Do not require CTRL+ALT+DEL' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableCAD' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Don't display last signed-in' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the account name of the last user to log on to the client + computers in your organization will be displayed in each computer's respective Windows logon + screen. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Don't display last signed-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\dontdisplaylastusername' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Machine account lockout threshold' is set to '10 or fewer invalid logon attempts, but not 0' + # platforms: win11 + platform: windows + description: | + This security setting determines the number of failed logon attempts that causes the machine to be locked out. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '10 or fewer invalid logon attempts, but not 0': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Machine account lockout threshold' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\MaxDevicePasswordFailedAttempts' AND data <= 10 AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Machine inactivity limit' is set to '900 or fewer second(s), but not 0' + # platforms: win11 + platform: windows + description: | + Windows notices inactivity of a logon session, and if the amount of inactive time exceeds the inactivity limit, then the screen saver will run, locking the session. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to '900 or fewer seconds, but not 0': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Machine inactivity limit' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\InactivityTimeoutSecs' AND data <= 900 AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Interactive logon Message text for users attempting to log on' + # platforms: win11 + platform: windows + description: | + This policy setting specifies a text message that displays to users when they log on. Set the + following group policy to a value that is consistent with the security and operational + requirements of your organization. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a value that is consistent with the security and operational requirements + of your organization: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Message text for users attempting to log on' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\legalnoticetext' AND data != ""); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Configure 'Interactive logon Message title for users attempting to log on' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the text displayed in the title bar of the window that users see + when they log on to the system. Configure this setting in a manner that is consistent with the + security and operational requirements of your organization. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a value that is consistent with the security and operational requirements + of your organization: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Message title for users attempting to log on' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\legalnoticecaption' AND data != ""); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Prompt user to change password before expiration' is set to 'between 5 and 14 days' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the text displayed in the title bar of the window that users see + when they log on to the system. Configure this setting in a manner that is consistent with the + security and operational requirements of your organization. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to a value 'between 5 and 14 days': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Prompt user to change password before expiration' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\PasswordExpiryWarning' AND CAST(data AS INTEGER) >= 5 AND CAST(data AS INTEGER) <= 14); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Interactive logon Smart card removal behavior' is set to 'Lock Workstation' or higher + # platforms: win11 + platform: windows + description: | + This policy setting determines what happens when the smart card for a logged-on user is removed from the smart card reader. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Lock Workstation (or, if applicable for your environment, Force Logoff or Disconnect if a Remote Desktop Services session)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Interactive logon: Smart card removal behavior' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\scremoveoption' AND CAST(data AS INTEGER) >= 1 AND CAST(data AS INTEGER) <= 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network client Digitally sign communications (always)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether packet signing is required by the SMB client component. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Digitally sign communications (always)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\RequireSecuritySignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network client Digitally sign communications (if server agrees)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the SMB client will attempt to negotiate SMB packet signing. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Digitally sign communications (if server agrees)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\EnableSecuritySignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network client Send unencrypted password to third-party SMB servers' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the SMB redirector will send plaintext passwords during authentication to third-party SMB servers that do not support password encryption. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Send unencrypted password to third-party SMB servers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\EnablePlainTextPassword' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Amount of idle time required before suspending session' is set to '15 or fewer minute(s)' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify the amount of continuous idle time that must pass in + an SMB session before the session is suspended because of inactivity. Administrators can use + this policy setting to control when a computer suspends an inactive SMB session. If client + activity resumes, the session is automatically reestablished. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Amount of idle time required before suspending session' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\autodisconnect' AND CAST(data AS INTEGER) <= 15 AND CAST(data AS INTEGER) >= 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Digitally sign communications (always)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether packet signing is required by the SMB server component. + Enable this policy setting in a mixed environment to prevent downstream clients from using the + workstation as a network server. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Digitally sign communications (always)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\requiresecuritysignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Digitally sign communications (if client agrees)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the SMB server will negotiate SMB packet signing with + clients that request it. If no signing request comes from the client, a connection will be + allowed without a signature if the Microsoft network server: Digitally sign communications (always) setting is not enabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Digitally sign communications (if client agrees)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\enablesecuritysignature' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Disconnect clients when logon hours expire' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This security setting determines whether to disconnect users who are connected to the local + computer outside their user account's valid logon hours. This setting affects the Server Message + Block (SMB) component. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Disconnect clients when logon hours expire' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\enableforcedlogoff' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure that 'Microsoft network server Server SPN target name validation level' is set to 'Accept if provided by client' + # platforms: win11 + platform: windows + description: | + This policy setting controls the level of validation a computer with shared folders or printers + (the server) performs on the service principal name (SPN) that is provided by the client + computer when it establishes a session using the server message block (SMB) protocol. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Accept if provided by client': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network server: Server SPN target name validation level' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\\Services\\LanManServer\\Parameters\\SmbServerNameHardeningLevel' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Network access : Allow anonymous SID/Name translation' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether an anonymous user can request security identifier + (SID) attributes for another user, or use a SID to obtain its corresponding user name. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Allow anonymous SID/Name translation' + query: | + SELECT 1 FROM cis_audit where item = "2.3.10.1" AND value = "0"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Network access: Do not allow anonymous enumeration of SAM accounts' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the ability of anonymous users to enumerate the accounts in + the Security Accounts Manager (SAM). If you enable this policy setting, users with + anonymous connections will not be able to enumerate domain account user names on the + systems in your environment. This policy setting also allows additional restrictions on + anonymous connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Do not allow anonymous enumeration of SAM accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\restrictanonymoussam' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Do not allow anonymous enumeration of SAM accounts and shares' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the ability of anonymous users to enumerate SAM accounts as + well as shares. If you enable this policy setting, anonymous users will not be able to + enumerate domain account user names and network share names on the systems in your + environment. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Do not allow anonymous enumeration of SAM accounts and shares' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\restrictanonymous' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Do not allow storage of passwords and credentials for network authentication' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Credential Manager (formerly called Stored User + Names and Passwords) saves passwords or credentials for later use when it gains domain + authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Do not allow storage of passwords and credentials for network authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\disabledomaincreds' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Let Everyone permissions apply to anonymous users' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines what additional permissions are assigned for anonymous + connections to the computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Let Everyone permissions apply to anonymous users' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\everyoneincludesanonymous' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Named Pipes that can be accessed anonymously' is set to 'None' + # platforms: win11 + platform: windows + description: | + This policy setting determines which communication sessions, or pipes, will have attributes + and permissions that allow anonymous access. + resolution: | + To establish the recommended configuration via GP, set the following UI path to + (i.e. None): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Named Pipes that can be accessed anonymously' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters\NullSessionPipes' and data == ''); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Remotely accessible registry paths' is configured + # platforms: win11 + platform: windows + description: | + This policy setting determines which registry paths will be accessible over the network, + regardless of the users or groups listed in the access control list (ACL) of the winreg + registry key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to: + System\CurrentControlSet\Control\ProductOptions + System\CurrentControlSet\Control\Server Applications + SOFTWARE\Microsoft\Windows NT\CurrentVersion + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Remotely accessible registry paths' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers\\Winreg\\AllowedExactPaths\Machine' and data == 'System\CurrentControlSet\Control\ProductOptions,System\CurrentControlSet\Control\Server Applications,Software\Microsoft\Windows NT\CurrentVersion'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Remotely accessible registry paths and sub-paths' is configured + # platforms: win11 + platform: windows + description: | + This policy setting determines which registry paths and sub-paths will be accessible over + the network, regardless of the users or groups listed in the access control list (ACL) of the + winreg registry key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to: + System\CurrentControlSet\Control\Print\Printers + System\CurrentControlSet\Services\Eventlog + SOFTWARE\Microsoft\OLAP Server + SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print + SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows + System\CurrentControlSet\Control\ContentIndex + System\CurrentControlSet\Control\Terminal Server + System\CurrentControlSet\Control\Terminal Server\UserConfig + System\CurrentControlSet\Control\Terminal Server\DefaultUserConfiguration + SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib + System\CurrentControlSet\Services\SysmonLog + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Remotely accessible registry paths and sub-paths' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers\\Winreg\\AllowedPaths\Machine' and data == 'System\CurrentControlSet\Control\Print\Printers,System\CurrentControlSet\Services\Eventlog,Software\Microsoft\OLAP Server,Software\Microsoft\Windows NT\CurrentVersion\Print,Software\Microsoft\Windows NT\CurrentVersion\Windows,System\CurrentControlSet\Control\ContentIndex,System\CurrentControlSet\Control\Terminal Server,System\CurrentControlSet\Control\Terminal Server\UserConfig,System\CurrentControlSet\Control\Terminal Server\DefaultUserConfiguration,Software\Microsoft\Windows NT\CurrentVersion\Perflib,System\CurrentControlSet\Services\SysmonLog'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Restrict anonymous access to Named Pipes and Shares' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + When enabled, this policy setting restricts anonymous access to only those shares and + pipes that are named in the Network access: Named pipes that can be accessed + anonymously and Network access: Shares that can be accessed anonymously settings. + This policy setting controls null session access to shares on your computers by adding + RestrictNullSessAccess with the value 1 in the + HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters + registry key. This registry value toggles null session shares on or off to control whether the + server service restricts unauthenticated clients' access to named resources. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Restrict anonymous access to Named Pipes and Shares' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters\restrictnullsessaccess' and data == '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Restrict clients allowed to make remote calls to SAM' is set to 'Administrators: Remote Access: Allow' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to restrict remote RPC connections to SAM. + resolution: | + To establish the recommended configuration via GP, set the following UI path to + Administrators: Remote Access: Allow: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Restrict clients allowed to make remote calls to SAM' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\RestrictRemoteSAM' and (data == '' or data == 'O:BAG:BAD:')); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Shares that can be accessed anonymously' is set to 'None' + # platforms: win11 + platform: windows + description: | + This policy setting determines which network shares can be accessed by anonymous users. + The default configuration for this policy setting has little effect because all users have to be + authenticated before they can access shared resources on the server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to + (i.e. None): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Shares that can be accessed anonymously' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters\NullSessionShares' and data == ''); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Network access: Sharing and security model for local accounts' is set to 'Classic - local users authenticate as themselves' + # platforms: win11 + platform: windows + description: | + This policy setting determines how network logons that use local accounts are + authenticated. The Classic option allows precise control over access to resources, including + the ability to assign different types of access to different users for the same resource. The + Guest only option allows you to treat all users equally. In this context, all users authenticate + as Guest only to receive the same access level to a given resource. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Classic - + local users authenticate as themselves: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Sharing and security model for local accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\forceguest' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: CIS - Ensure 'Network security Allow Local System to use computer identity for NTLM' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Local System services that use Negotiate when reverting to NTLM authentication can use the computer identity. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Allow Local System to use computer identity for NTLM' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\UseMachineId' COLLATE NOCASE AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Allow LocalSystem NULL session fallback' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether NTLM is allowed to fall back to a NULL session when used with LocalSystem. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Allow LocalSystem NULL session fallback' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0\\allownullsessionfallback' COLLATE NOCASE AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network Security Allow PKU2U authentication requests to this computer to use online identities' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting determines if online identities are able to authenticate to this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network Security: Allow PKU2U authentication requests to this computer to use online identities' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\pku2u\\AllowOnlineID' COLLATE NOCASE AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Configure encryption types allowed for Kerberos' is set to 'AES128_HMAC_SHA1, AES256_HMAC_SHA1, Future encryption types' + # platforms: win11 + platform: windows + description: | + This setting determines if online identities are able to authenticate to this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'AES128_HMAC_SHA1, AES256_HMAC_SHA1, Future encryption types': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Configure encryption types allowed for Kerberos' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\Kerberos\\Parameters\\SupportedEncryptionTypes' COLLATE NOCASE AND ((CAST(data AS INTEGER) & 0x8) AND (CAST(data AS INTEGER) & 0x10) AND (CAST(data AS INTEGER) & 0xe0) AND ((CAST(data AS INTEGER) & 0x1) = 0) AND ((CAST(data AS INTEGER) & 0x2) = 0) AND ((CAST(data AS INTEGER) & 0x4) = 0))); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security Do not store LAN Manager hash value on next password change' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the LAN Manager (LM) hash value for the new password is + stored when the password is changed. The LM hash is relatively weak and prone to attack compared + to the cryptographically stronger Microsoft Windows NT hash. Since LM hashes are stored on the + local computer in the security database, passwords can then be easily compromised if the + database is attacked. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Do not store LAN Manager hash value on next password change' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\NoLmHash' COLLATE NOCASE AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Network security: LDAP client encryption requirements' is set to 'Negotiate sealing' or higher + # platforms: win11 + platform: windows + description: | + This policy setting determines the level of data encryption that is requested on behalf of clients that issue LDAP BIND requests. + The recommended state for this setting is: 'Negotiate sealing'. + Configuring this setting to 'Require sealing' also conforms to the Benchmark. + Note: This policy setting does not have any impact on LDAP simple bind + (ldap_simple_bind) or LDAP simple bind through SSL (ldap_simple_bind_s). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Negotiate sealing' or higher: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: LDAP client encryption requirements' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LDAP\ldapclientconfidentiality' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: CIS - Ensure 'Network security Force logoff when logon hours expire' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether to disconnect users who are connected to the local + computer outside their user account's valid logon hours. This setting affects the Server Message + Block (SMB) component. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Force logoff when logon hours expire' + query: | + SELECT 1 FROM cis_audit where item = "2.3.11.6" AND value = "1"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security LAN Manager authentication level' is set to 'Send NTLMv2 response only. Refuse LM & NTLM' + # platforms: win11 + platform: windows + description: | + LAN Manager (LM) was a family of early Microsoft client/server software (predating Windows NT) + that allowed users to link personal computers together on a single network. LM network + capabilities included transparent file and print sharing, user security features, and network + administration tools. In Active Directory domains, the Kerberos protocol is the default + authentication protocol. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Send NTLMv2 response only. Refuse LM & NTLM': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: LAN Manager authentication level' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\LmCompatibilityLevel' COLLATE NOCASE AND data == 5); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Network security LDAP client signing requirements' is set to 'Negotiate signing or higher' + # platforms: win11 + platform: windows + description: | + This policy setting determines the level of data signing that is requested on behalf of clients that issue LDAP BIND requests. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Negotiate signing or higher': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: LDAP client signing requirements' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\ldap\\ldapclientintegrity' AND data >= 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'System cryptography Force strong key protection for user keys stored on the computer' is set to 'User is prompted when the key is first used or higher' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether users' private keys (such as their S-MIME keys) require a password to be used. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'User is prompted when the key is first used or higher': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\System cryptography: Force strong key protection for user keys stored on the computer' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Cryptography\\ForceKeyProtection' AND CAST(data AS INTEGER) >= 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'System objects Require case insensitivity for non Windows subsystems' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether case insensitivity is enforced for all subsystems. The + Microsoft Win32 subsystem is case insensitive. However, the kernel supports case sensitivity for + other subsystems, such as the Portable Operating System Interface for UNIX (POSIX). Because + Windows is case insensitive (but the POSIX subsystem will support case sensitivity), failure to + enforce this policy setting makes it possible for a user of the POSIX subsystem to create a file + with the same name as another file by using mixed case to label it. Such a situation can block + access to these files by another user who uses typical Win32 tools, because only one of the + files will be available. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\System objects: Require case insensitivity for non Windows subsystems' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\\obcaseinsensitive' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'System objects Strengthen default permissions of internal system objects (e.g. Symbolic Links)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines the strength of the default discretionary access control list + (DACL) for objects. Active Directory maintains a global list of shared system resources, such as + DOS device names, mutexes, and semaphores. In this way, objects can be located and shared among + processes. Each type of object is created with a default DACL that specifies who can access the + objects and what permissions are granted. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\System objects: Strengthen default permissions of internal system objects (e.g. Symbolic Links) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\ProtectionMode' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'User Account Control: Admin Approval Mode for the Built-in Administrator account' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the behavior of Admin Approval Mode for the built-in Administrator account. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Admin Approval Mode for the Built-in Administrator account' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\FilterAdministratorToken' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode' is set to 'Prompt for consent on the secure desktop' + # platforms: win11 + platform: windows + description: | + This policy setting controls the behavior of the elevation prompt for administrators. + The recommended state for this setting is: Prompt for consent on the secure desktop. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Prompt for consent on the secure desktop': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\ConsentPromptBehaviorAdmin' AND data == 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Behavior of the elevation prompt for standard users' is set to 'Automatically deny elevation requests' + # platforms: win11 + platform: windows + description: | + This policy setting controls the behavior of the elevation prompt for standard users. + The recommended state for this setting is: Automatically deny elevation requests. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Automatically deny elevation requests: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Behavior of the elevation prompt for standard users' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\ConsentPromptBehaviorUser' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Detect application installations and prompt for elevation' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the behavior of application installation detection for the computer. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Detect application installations and prompt for elevation' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableInstallerDetection' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Only elevate UIAccess applications that are installed in secure locations' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether applications that request to run with a User Interface Accessibility (UIAccess) integrity level must reside in a secure location in the file system. Secure locations are limited to the following: + ...\Program Files\, including subfolders + ...\Windows\System32\ + ...\Program Files (x86)\, including subfolders (for 64-bit versions of Windows) + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Only elevate UIAccess applications that are installed in secure locations' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableSecureUIAPaths' and data == '1'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Run all administrators in Admin Approval Mode' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the behavior of all User Account Control (UAC) policy settings for the computer. If you change this policy setting, you must restart your computer. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Run all administrators in Admin Approval Mode' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableLUA' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Switch to the secure desktop when prompting for elevation' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the elevation request prompt is displayed on the interactive user's desktop or the secure desktop. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Switch to the secure desktop when prompting for elevation' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\PromptOnSecureDesktop' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'User Account Control: Virtualize file and registry write failures to per-user locations' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether application write failures are redirected to defined registry and file system locations. This policy setting mitigates applications that run as administrator and write run-time application data to: + %ProgramFiles% + %windir% + %windir%\System32 + HKEY_LOCAL_MACHINE\SOFTWARE + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\User Account Control: Virtualize file and registry write failures to per-user locations' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\EnableVirtualization' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: CIS - Ensure 'Bluetooth Audio Gateway Service (BTAGService)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Service supporting the audio gateway role of the Bluetooth Handsfree Profile. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Bluetooth Audio Gateway Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\BTAGService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Bluetooth Support Service (bthserv)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + The Bluetooth service supports discovery and association of remote Bluetooth devices. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Bluetooth Support Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\bthserv\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Computer Browser (Browser)' is set to 'Disabled' or 'Not Installed' + # platforms: win11 + platform: windows + description: | + Maintains an updated list of computers on the network and supplies this list to computers designated as browsers. + The recommended state for this setting is: Disabled or Not Installed. + Note: In Windows 8.1 and Windows 10, this service is bundled with the SMB 1.0/CIFS File Sharing Support optional feature. As a result, removing that feature (highly recommended unless backward compatibility is needed to XP/2003 and older Windows OSes - see Stop using SMB1 | Storage at Microsoft) will also remediate this recommendation. The feature is not installed by default starting with Windows 10 R1709. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or 'not installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Computer Browser' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Browser\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Browser\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Downloaded Maps Manager (MapsBroker)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Windows service for application access to downloaded maps. This service is started on- demand by application accessing downloaded maps. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Downloaded Maps Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MapsBroker\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'GameInput Service (GameInputSvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service enables the use of keyboards, mice, gamepads, and other input devices to be used with the GameInput API. + The recommended state for this setting is: Disabled. + Note: GameInput service runs as LocalSystem in its own process of GameInputSvc.exe and doesn't share its process with other services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to: Disabled. + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\GameInput Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\GameInputSvc\Start' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: CIS - Ensure 'Geolocation Service (lfsvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service monitors the current location of the system and manages geofences (a geographical location with associated events). + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Geolocation Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'IIS Admin Service (IISADMIN)' is set to 'Disabled' or 'Not Installed' + # platforms: win11 + platform: windows + description: | + Enables the server to administer the IIS metabase. The IIS metabase stores configuration for the SMTP and FTP services. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but is installed + by enabling an optional Windows feature (Internet Information Services). + Note #2: An organization may choose to selectively grant exceptions to web developers to allow IIS (or another web server) on their workstation, in order for them to locally test & develop web pages. However, the organization should track those machines and ensure the security controls and mitigations are kept up to date, to reduce risk of compromise. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\IIS Admin Service' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\IISADMIN\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\IISADMIN\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Infrared monitor service (irmon)' is set to 'Disabled' or 'Not Installed' + # platforms: win11 + platform: windows + description: | + Detects other Infrared devices that are in range and launches the file transfer application. + The recommended state for this setting is: Disabled or Not Installed. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Infrared monitor service' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\irmon\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\irmon\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Link-Layer Topology Discovery Mapper (lltdsvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Creates a Network Map, consisting of PC and device topology (connectivity) information, and metadata describing each PC and device. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Link-Layer Topology Discovery Mapper' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lltdsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'LxssManager (LxssManager)' is set to 'Disabled' or 'Not Installed' + # platforms: win11 + platform: windows + description: | + The LXSS Manager service supports running native ELF binaries. The service provides the infrastructure necessary for ELF binaries to run on Windows. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but is installed by enabling an optional Windows feature (Windows Subsystem for Linux). + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\LxssManager' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\LxssManager\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LxssManager\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Microsoft FTP Service (FTPSVC)' is set to 'Disabled' or 'Not Installed' + # platforms: win11 + platform: windows + description: | + Enables the server to be a File Transfer Protocol (FTP) server. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but is installed by enabling an optional Windows feature (Internet Information Services - FTP Server). + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Microsoft FTP Service' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\FTPSVC\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\FTPSVC\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Microsoft iSCSI Initiator Service (MSiSCSI)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Manages Internet SCSI (iSCSI) sessions from this computer to remote target devices. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Microsoft iSCSI Initiator Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MSiSCSI\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'OpenSSH SSH Server (sshd)' is set to 'Disabled' or 'Not Installed' + # platforms: win11 + platform: windows + description: | + SSH protocol based service to provide secure encrypted communications between two untrusted hosts over an insecure network. + The recommended state for this setting is: Disabled or Not Installed. + Note: This service is not installed by default. It is supplied with Windows, but it is installed by enabling an optional Windows feature (OpenSSH Server). + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to Disabled or Not Installed.: + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\OpenSSH SSH Server' + query: | + SELECT 1 WHERE + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sshd\\Start' ) + OR + EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sshd\\Start' AND data == 4 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Print Spooler (Spooler)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service spools print jobs and handles interaction with printers. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Print Spooler' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Spooler\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Problem Reports and Solutions Control Panel Support (wercplsupport)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service provides support for viewing, sending and deletion of system-level problem reports for the Problem Reports and Solutions control panel. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Problem Reports and Solutions Control Panel Support' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\wercplsupport\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Access Auto Connection Manager (RasAuto)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Creates a connection to a remote network whenever a program references a remote DNS or NetBIOS name or address. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Access Auto Connection Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RasAuto\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Desktop Configuration (SessionEnv)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Remote Desktop Configuration service (RDCS) is responsible for all Remote Desktop related configuration and session maintenance activities that require SYSTEM context. These include per-session temporary folders, RD themes, and RD certificates. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Desktop Configuration' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SessionEnv\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Desktop Services (TermService)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Allows users to connect interactively to a remote computer. Remote Desktop and Remote Desktop Session Host Server depend on this service. + The recommended state for this setting is: Disabled. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Desktop Services' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Remote Desktop Services UserMode Port Redirector (UmRdpService)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines the redirection of Printers/Drives/Ports for RDP connections. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Desktop Services UserMode Port Redirector' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\UmRdpService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Remote Procedure Call (RPC) Locator (RpcLocator)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + In Windows 2003 and older versions of Windows, the Remote Procedure Call (RPC) Locator service + manages the RPC name service database. In Windows Vista and newer versions of Windows, this + service does not provide any functionality and is present for application compatibility. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Procedure Call (RPC) Locator' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RpcLocator\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Remote Registry (RemoteRegistry)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + The service enables remote users to view and modify registry settings on this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Remote Registry' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RemoteRegistry\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Routing and Remote Access (RemoteAccess)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + The service offers routing services to businesses in local area and wide area network environments. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Routing and Remote Access' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RemoteAccess\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Server (LanmanServer)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + The service supports file, print, and named-pipe sharing over the network for this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Server' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Simple TCP/IP Services (simptcp)' is set to 'Disabled' or to 'Not Installed' + # platforms: win11 + platform: windows + description: | + The service supports the following TCP/IP services: Character Generator, Daytime, Discard, Echo, and Quote of the Day. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Simple TCP/IP Services' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\simptcp\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\simptcp\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'SNMP Service (SNMP)' is set to 'Disabled' or to 'Not Installed' + # platforms: win11 + platform: windows + description: | + The service enables Simple Network Management Protocol (SNMP) requests to be processed by this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\SNMP Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SNMP\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SNMP\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Special Administration Console Helper (sacsvr)' is set to 'Disabled' or to 'Not Installed' + # platforms: win11 + platform: windows + description: | + The service allows administrators to remotely access a command prompt using Emergency Management Services. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Special Administration Console Helper' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sacsvr\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\sacsvr\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'SSDP Discovery (SSDPSRV)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service discovers networked devices and services that use the SSDP discovery protocol, such + as UPnP devices. Also announces SSDP devices and services running on the local computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\SSDP Discovery' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SSDPSRV\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'UPnP Device Host (upnphost)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service allows UPnP devices to be hosted on this computer. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\UPnP Device Host' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\upnphost\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Web Management Service (WMSvc)' is set to 'Disabled' or to 'Not Installed' + # platforms: win11 + platform: windows + description: | + This web management Service enables remote and delegated management capabilities for administrators to manage for the Web server, sites and applications present on the machine. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Web Management Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMSvc\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMSvc\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Error Reporting Service (WerSvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service allows errors to be reported when programs stop working or responding and allows + existing solutions to be delivered. Also allows logs to be generated for diagnostic and repair + services. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Error Reporting Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WerSvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Event Collector (Wecsvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service manages persistent subscriptions to events from remote sources that support + WS-Management protocol. This includes Windows Vista event logs, hardware and IPMI-enabled event + sources. The service stores forwarded events in a local Event Log. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Event Collector' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Wecsvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Media Player Network Sharing Service (WMPNetworkSvc)' is set to 'Disabled' or to 'Not Installed' + # platforms: win11 + platform: windows + description: | + This service shares Windows Media Player libraries to other networked players and media devices using Universal Plug and Play. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Media Player Network Sharing Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMPNetworkSvc\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WMPNetworkSvc\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Mobile Hotspot Service (icssvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service provides the ability to share a cellular data connection with another device. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Mobile Hotspot Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\icssvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Push Notifications System Service (WpnService)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service runs in session 0 and hosts the notification platform and connection provider which handles the connection between the device and WNS server. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Push Notifications System Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WpnService\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows PushToInstall Service (PushToInstall)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service manages Apps that are pushed to the device from the Microsoft Store App running on other devices or the web. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows PushToInstall Service (PushToInstall)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\PushToInstall\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Windows Remote Management (WSManagement) (WinRM)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + The Windows Remote Management (WinRM) service implements the WS-Management protocol for remote + management. WS-Management is a standard web services protocol used for remote software and + hardware management. The WinRM service listens on the network for WS-Management requests and processes them. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Windows Remote Management (WS-Management)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WinRM\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'WinHTTP Web Proxy Auto-Discovery Service (WinHttpAutoProxySvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + WinHTTP implements the client HTTP stack and provides developers with a Win32 API and COM Automation component for sending HTTP requests and receiving responses. + In addition, WinHTTP provides support for auto-discovering a proxy configuration via its implementation of the Web Proxy Auto-Discovery (WPAD) protocol. + The recommended state for this setting is: Disabled. + Note: Although CIS categorizes this as a L2 recommendation, if none of the cases listed in the Impact Section apply, we highly recommend disabling this service. + resolution: | + To establish the recommended configuration via GP, set the following UI path to: Disabled. + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\WinHTTP Web Proxy Auto-Discovery Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinHttpAutoProxySvc\Start' AND data = 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: CIS - Ensure 'World Wide Web Publishing Service (W3SVC)' is set to 'Disabled' or to 'Not Installed' + # platforms: win11 + platform: windows + description: | + This service provides Web connectivity and administration through the Internet Information Services Manager. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled' or to 'Not Installed': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\World Wide Web Publishing Service' + query: | + SELECT CASE + WHEN NOT EXISTS (SELECT * FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Start') THEN 1 + WHEN (SELECT data FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Start') == '4' THEN 1 + ELSE 0 + END AS result; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Accessory Management Service (XboxGipSvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service manages connected Xbox accessories. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Accessory Management Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XboxGipSvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Live Auth Manager (XblAuthManager)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service provides authentication and authorization services for interacting with Xbox Live. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Live Auth Manager' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XblAuthManager\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Live Game Save (XblGameSave)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service syncs save data for Xbox Live save enabled game. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Live Game Save' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XblGameSave\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Xbox Live Networking Service (XboxNetApiSvc)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This service supports the Windows.Networking.XboxLive application programming interface. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via domain GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Windows Settings\Security Settings\System Services\Xbox Live Networking Service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\XboxNetApiSvc\\Start' AND data == 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Firewall state' is set to 'On (recommended)' + # platforms: win11 + platform: windows + description: | + Select On (recommended) to have Windows Firewall with Advanced Security use the settings for this profile to filter network traffic. If you select Off, Windows Firewall with Advanced Security will not use any of the firewall rules or connection security rules for this profile. + The recommended state for this setting is: On (recommended). + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Firewall state' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\EnableFirewall' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure security policy processing: Do not apply during periodic background processing' is set to 'Enabled: FALSE' + # platforms: win11 + platform: windows + description: | + The "Do not apply during periodic background processing" option prevents the system from updating affected security policies in the background while the computer is in use. When background updates are disabled, updates to security policies will not take effect until the next user logon or system restart. + This setting affects all policy settings that use the built-in security template of Group Policy (e.g. Windows Settings\Security Settings). + The recommended state for this setting is: Enabled: FALSE (unchecked). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, then set the Do not apply during periodic background processing option to FALSE (unchecked), then set the Process even if the group policies have not changed option to TRUE (checked): + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure security policy processing' + query: | + SELECT 1 FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{%}\NoGPOListChanges' AND data = '0'; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure security policy processing: Process even if the Group Policy objects have not changed' is set to 'Enabled: TRUE' + # platforms: win11 + platform: windows + description: | + The "Process even if the Group Policy objects have not changed" option updates and reapplies security policies even if the security policies have not changed. + This setting affects all policy settings within the built-in security template of Group Policy (e.g. Windows Settings\Security Settings). + The recommended state for this setting is: Enabled: TRUE (checked). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, then set the Process even if the Group Policy objects have not changed option to TRUE (checked): + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure security policy processing' + query: | + SELECT 1 FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{%}\NoBackgroundPolicy' AND data = '0'; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable Certificate Padding' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures whether the WinVerifyTrust function performs strict Windows Authenticode signature verification for Portable Executable files (PE files). If enabled, PE files will be considered "unsigned" if Windows identifies content in them that does not conform to the Authenticode specification. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Enable Certificate Padding' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Wintrust\Config\EnableCertPaddingCheck' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Automatic Data Collection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Enhanced Phishing Protection can collect additional information such as content displayed, sounds played, and application memory when users enter their work or school password into a suspicious website or app. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Enhanced Phishing Protection\Automatic Data Collection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WTDS\Components\CaptureThreatWindow' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable optional updates' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether devices are able to receive optional updates (including Controlled Feature Rollout (CFRs)). These optional updates can include non- security updates, feature enhancements, and other improvements. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage updates offered from Windows Update\Enable optional updates' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\SetAllowOptionalContent' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Network security: Restrict NTLM: Audit Incoming NTLM Traffic' is set to 'Enable auditing for all accounts' + # platforms: win11 + platform: windows + description: | + This policy setting allows the auditing of incoming NTLM traffic. Events for this setting are recorded in the operational event log (e.g. Applications and Services Log\Microsoft\Windows\NTLM). + The recommended state for this setting is: Enable auditing for all accounts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enable auditing for all accounts: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network security: Restrict NTLM: Audit Incoming NTLM Traffic' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\AuditReceivingNTLMTraffic' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers' is set to 'Audit all' or higher + # platforms: win11 + platform: windows + description: | + This policy setting allows the auditing of outgoing NTLM traffic. Events for this setting are recorded in the operational event log (e.g. Applications and Services Log\Microsoft\Windows\NTLM). + The recommended state for this setting is: Audit all. Configuring this setting to Deny All also conforms to the benchmark. + Note: Configuring this setting to Deny All is more secure, however it could have a negative impact on applications that still require NTLM. Test carefully before implementing the Deny All value + resolution: | + To establish the recommended configuration via GP, set the following UI path to Audit all or higher: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Restrict NTLM: Outgoing NTLM traffic to remote servers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\RestrictSendingNTLMTraffic' AND data in (1,2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Remove Personalized Website Recommendations from the Recommended section in the Start Menu' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures whether personalized website recommendations are shown in the in the Start Menu. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Start Menu and Taskbar\Remove Personalized Website Recommendations from the Recommended section in the Start Menu' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer\HideRecommendedPersonalizedSites' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure password backup directory' is set to 'Enabled: Active Directory' or 'Enabled: Azure Active Directory' + # platforms: win11 + platform: windows + description: | + This policy setting configures which directory Windows LAPS will use to back up the local admin account password. + The recommended state for this setting is: Enabled: Active Directory or Enabled: Azure Active Directory. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note #2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + Note #3: Windows LAPS does not support simultaneous storage of the local admin password in both directory types. + Note #4: If the setting is configured and the managed device is not joined to the configured directory type, the local administrator password will not be managed by Windows LAPS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Active Directory or Enabled: Azure Active Directory: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Configure password backup directory' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\BackupDirectory' AND data in (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable password encryption' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the Windows LAPS managed password is encrypted before being sent to Active Directory. + The recommended state for this setting is: Enabled. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note #2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + Note #3: This setting has no effect unless the password has been configured to be backed up to Active Directory, and the Active Directory domain functional level is at Windows Server 2016 or above. + Note #4: This setting has no relevance (but is harmless) when storing Windows LAPS passwords to Entra ID (formerly Azure Active Directory) as it automatically encrypts all Windows LAPS passwords. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Enable password encryption' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\ADPasswordEncryptionEnabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Post-authentication actions: Grace period (hours)' is set to 'Enabled: 8 or fewer hours, but not 0' + # platforms: win11 + platform: windows + description: | + This policy settings configures post-authentication actions which will be executed after detecting an authentication by the Windows LAPS managed account. The Grace period refers to the amount of time (hours) to wait after an authentication before executing the specified post-authentication actions. + The recommended state for this setting is: Enabled: 8 or fewer hours, but not 0. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note #2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + Note #3: If this policy is set to 0 it prevents all post-authentication actions from occurring. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 8 or fewer hours, but not 0: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Post- authentication actions: Grace period (hours)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PostAuthenticationResetDelay' AND cast(data as integer) BETWEEN 1 AND 8); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Post-authentication actions: Actions' is set to 'Enabled: Reset the password and logoff the managed account' or higher + # platforms: win11 + platform: windows + description: | + This policy settings configures post-authentication actions which will be executed after detecting an authentication by the LAPS managed account. The Action refers to actions to take upon expiry of the grace period before executing the specified post- authentication actions. + Post-authentication actions: + • Reset password: upon expiry of the grace period, the managed account password will be reset. + • Reset the password and logoff the managed account: upon expiry of the grace period, the managed account password will be reset and any interactive logon sessions using the managed account will terminated. + • Reset the password and reboot the device: upon expiry of the grace period, the managed account password will be reset and the managed device will be immediately rebooted. + Warning: After an interactive logon session is terminated, other authenticated sessions using the Windows LAPS managed account may still be active. The only way to ensure that the previous password is no longer in use is to reboot the OS. + The recommended state for this setting is: Enabled: Reset the password and logoff the managed account or higher. + Note: Organizations that utilize third-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note #2: Windows LAPS does not support standalone computers - they must be joined to an Active Directory domain or Entra ID (formerly Azure Active Directory). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Reset the password and logoff the managed account or higher: + 'Computer Configuration\Policies\Administrative Templates\System\LAPS\Post- authentication actions: Actions' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS\PostAuthenticationActions' AND data in (3,5)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure Scan packed executables' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting manages whether or not Microsoft Defender Antivirus scans packed executables. Packed executables are executable files that contain compressed code. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Scan packed executables' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Scan\DisablePackedExeScanning' AND data =0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable features introduced via servicing that are off by default' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy settings configures whether or not features and enhancements that are introduced through monthly cumulative updates (servicing), are enabled on the system. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Enable features introduced via servicing that are off by default' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AllowTemporaryEnterpriseFeatureControl' AND data =0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Inbound connections' is set to 'Block (default)' + # platforms: win11 + platform: windows + description: | + This setting determines the behavior for inbound connections that do not match an inbound firewall rule. + The recommended state for this setting is: Block (default). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Block (default): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Inbound connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\\Policies\\Microsoft\WindowsFirewall\DomainProfile\DefaultInboundAction' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Settings: Display a notification' is set to 'No' + # platforms: win11 + platform: windows + description: | + Select this option to have Windows Firewall with Advanced Security display notifications to the user when a program is blocked from receiving inbound connections. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'No': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Settings Customize\Display a notification' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\DisableNotifications' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Name' is set to '%SystemRoot%\System32\logfiles\firewall\domainfw.log' + # platforms: win11 + platform: windows + description: | + Use this option to specify the path and name of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: %SystemRoot%\System32\logfiles\firewall\domainfw.log. + resolution: | + To establish the recommended configuration via GP, set the following UI path to %SystemRoot%\System32\logfiles\firewall\domainfw.log: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Logging Customize\Name' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\Logging\LogFilePath' and data = '%SystemRoot%\System32\logfiles\firewall\domainfw.log'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Size limit (KB)' is set to '16,384 KB or greater' + # platforms: win11 + platform: windows + description: | + Use this option to specify the size limit of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: 16,384 KB or greater. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 16,384 KB or greater: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Logging Customize\Size limit (KB)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\\Microsoft\WindowsFirewall\DomainProfile\Logging\LogFileSize' and CAST(data as integer) >= 16384 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Log dropped packets' is set to 'Yes' + # platforms: win11 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security discards an inbound packet for any reason. The log records why and when the packet was dropped. Look for entries with the word DROP in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security\Windows Firewall Properties\Domain Profile\Logging Customize\Log dropped packets' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\Logging\LogDroppedPackets' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Domain: Logging: Log successful connections' is set to 'Yes' + # platforms: win11 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security allows an inbound connection. The log records why and when the connection was formed. Look for entries with the word ALLOW in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes. + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Domain Profile\Logging Customize\Log successful connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile\Logging\LogSuccessfulConnections' and data = 1 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Windows Firewall: Private: Firewall state' is set to 'On (recommended)' + # platforms: win11 + platform: windows + description: | + Select On (recommended) to have Windows Firewall with Advanced Security use the settings for this profile to filter network traffic. If you select Off, Windows Firewall with Advanced Security will not use any of the firewall rules or connection security rules for this profile. + The recommended state for this setting is: On (recommended). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'On (recommended)': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Firewall state' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\EnableFirewall' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Inbound connections' is set to 'Block (default)' + # platforms: win11 + platform: windows + description: | + This setting determines the behavior for inbound connections that do not match an inbound firewall rule. + The recommended state for this setting is: Block (default). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Block (default)'': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Inbound connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\DefaultInboundAction' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Settings: Display a notification' is set to 'No' + # platforms: win11 + platform: windows + description: | + Select this option to have Windows Firewall with Advanced Security display notifications to the user when a program is blocked from receiving inbound connections. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to No: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Settings Customize\Display a notification' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\DisableNotifications' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Name' is set to '%SystemRoot%\System32\logfiles\firewall\privatefw.log' + # platforms: win11 + platform: windows + description: | + Use this option to specify the path and name of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: %SystemRoot%\System32\logfiles\firewall\privatefw.log. + resolution: | + To establish the recommended configuration via GP, set the following UI path to '%SystemRoot%\System32\logfiles\firewall\privatefw.log': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Private Profile\Logging Customize\Name' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogFilePath' AND data ='%systemroot%\system32\logfiles\firewall\pfirewall.log'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Size limit (KB)' is set to '16,384 KB or greater' + # platforms: win11 + platform: windows + description: | + Use this option to specify the size limit of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: 16,384 KB or greater. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 16,384 KB or greater: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security\Windows Firewall Properties\Private Profile\Logging Customize\Size limit (KB)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogFileSize' and CAST(data AS INTEGER) >= 16384 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Log dropped packets' is set to 'Yes' + # platforms: win11 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security discards an inbound packet for any reason. The log records why and when the packet was dropped. Look for entries with the word DROP in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security\Windows Firewall Properties\Private Profile\Logging Customize\Log dropped packets' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogDroppedPackets' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Private: Logging: Log successful connections' is set to 'Yes' + # platforms: win11 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security allows an inbound connection. The log records why and when the connection was formed. Look for entries with the word ALLOW in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security\Windows Firewall Properties\Private Profile\Logging Customize\Log successful connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PrivateProfile\\Logging\LogSuccessfulConnections' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Firewall state' is set to 'On (recommended)' + # platforms: win11 + platform: windows + description: | + Select On (recommended) to have Windows Firewall with Advanced Security use the settings for this profile to filter network traffic. If you select Off, Windows Firewall with Advanced Security will not use any of the firewall rules or connection security rules for this profile. + The recommended state for this setting is: On (recommended). + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Firewall state' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\EnableFirewall' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Inbound connections' is set to 'Block (default)' + # platforms: win11 + platform: windows + description: | + This setting determines the behavior for inbound connections that do not match an inbound firewall rule. + The recommended state for this setting is: Block (default). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Block (default): + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Inbound connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\DefaultInboundAction' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Settings: Display a notification' is set to 'No' + # platforms: win11 + platform: windows + description: | + Select this option to have Windows Firewall with Advanced Security display notifications to the user when a program is blocked from receiving inbound connections. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'No': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Settings Customize\Display a notification' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\DisableNotifications' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Settings: Apply local firewall rules' is set to 'No' + # platforms: win11 + platform: windows + description: | + This setting controls whether local administrators are allowed to create local firewall rules that apply together with firewall rules configured by Group Policy. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to No: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Settings Customize\Apply local firewall rules' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\AllowLocalPolicyMerge' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Settings: Apply local connection security rules' is set to 'No' + # platforms: win11 + platform: windows + description: | + This setting controls whether local administrators are allowed to create connection security rules that apply together with connection security rules configured by Group Policy. + The recommended state for this setting is: No. + resolution: | + To establish the recommended configuration via GP, set the following UI path to No: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Settings Customize\Apply local connection security rules' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\AllowLocalIPsecPolicyMerge' and data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Name' is set to '%SystemRoot%\System32\logfiles\firewall\publicfw.log' + # platforms: win11 + platform: windows + description: | + Use this option to specify the path and name of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: %SystemRoot%\System32\logfiles\firewall\publicfw.log. + resolution: | + To establish the recommended configuration via GP, set the following UI path to %SystemRoot%\System32\logfiles\firewall\publicfw.log: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Logging Customize\Name' + query: | + SELECT * FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogFilePath' and data == '%SystemRoot%\System32\logfiles\firewall\publicfw.log'); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Size limit (KB)' is set to '16,384 KB or greater' + # platforms: win11 + platform: windows + description: | + Use this option to specify the size limit of the file in which Windows Firewall will write its log information. + The recommended state for this setting is: 16,384 KB or greater. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 16,384 KB or greater: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Logging Customize\Size limit (KB)' + query: | + SELECT * FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogFileSize' and data >= 16384 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Log dropped packets' is set to 'Yes' + # platforms: win11 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security discards an inbound packet + for any reason. The log records why and when the packet was dropped. Look for entries with the + word DROP in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security\Windows Firewall Properties\Public Profile\Logging Customize\Log dropped packets' + query: | + SELECT * FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogDroppedPackets' and data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: > + CIS - Ensure 'Windows Firewall: Public: Logging: Log successful connections' is set to 'Yes' + # platforms: win11 + platform: windows + description: | + Use this option to log when Windows Firewall with Advanced Security allows an inbound connection. The log records why and when the connection was formed. Look for entries with the word ALLOW in the action column of the log. + The recommended state for this setting is: Yes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Yes. + 'Computer Configuration\Policies\Windows Settings\Security Settings\Windows Defender Firewall with Advanced Security\Windows Defender Firewall with Advanced Security - Local Group Policy Object\Windows Defender Firewall Properties\Public Profile\Logging Customize\Log successful connections' + query: | + SELECT 1 FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsFirewall\\PublicProfile\\Logging\LogSuccessfulConnections' and data == 1 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: RachelElysia + +- name: CIS - Ensure 'Audit Credential Validation' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + Creates audit events whenever an attempt is made to authenticate, whether it is successful or not. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Logon\Audit Credential Validation' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountLogon_AuditCredentialValidation" + AND mdm_command_output = "3"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit Application Group Management' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + Creates audit events whenever an application group is changed, e.g. by adding members. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Management\Audit Application Group Management' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditApplicationGroupManagement" + AND mdm_command_output = "3"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit Security Group Management' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + Creates audit events whenever a security group is changed, e.g. by adding members. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Success and Failure' or 'Success': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Management\Audit Security Group Management' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditSecurityGroupManagement" + AND (mdm_command_output = "1" OR mdm_command_output = "3"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit PNP Activity' is set to 'Success' + # platforms: win11 + platform: windows + description: | + Creates audit events whenever there is a change in user status, e.g. if an account is created or an account's password changed. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Success and Failure': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Account Management\Audit User Account Management' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/AccountManagement_AuditUserAccountManagement" + AND mdm_command_output = "3"; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit PNP Activity' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + Creates audit events whenever a plug and play external device is detected. + Attaching unapproved devices could cause Windows to install unapproved software. + This also makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the + following UI path to 'Success': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Detailed Tracking\Audit PNP Activity' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/DetailedTracking_AuditPNPActivity" + AND (mdm_command_output = "1" OR mdm_command_output = "3"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: CIS - Ensure 'Audit Process Creation' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + Creates audit events whenever a process is executed. + This makes it easier to investigate a future security incident if required. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Success': + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Detailed Tracking\Audit Process Creation' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = + "1./Device/Vendor/MSFT/Policy/Result/Audit/DetailedTracking_AuditProcessCreation" + AND (mdm_command_output = "1" OR mdm_command_output = "3"); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Audit Account Lockout' is set to include 'Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports when a user's account is locked out as a result of too many failed logon attempts. Events for this subcategory include: + - 4625: An account failed to log on. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Account Lockout' + query: | + SELECT 1 FROM cis_audit where item = "17.5.1" AND (regex_match(value,".*(?=.*Failure).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Group Membership' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This policy allows you to audit the group membership information in the user's logon token. Events in this subcategory are generated on the computer on which a logon session is created. For an interactive logon, the security audit event is generated on the computer that the user logged on to. For a network logon, such as accessing a shared folder on the network, the security audit event is generated on the computer hosting the resource. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Group Membership' + query: | + SELECT 1 FROM cis_audit where item = "17.5.2" AND (regex_match(value,".*(?=.*Success).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Logoff' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports when a user logs off from the system. These events occur on the accessed computer. For interactive logons, the generation of these events occurs on the computer that is logged on to. If a network logon takes place to access a share, these events generate on the computer that hosts the accessed resource. If you configure this setting to No auditing, it is difficult or impossible to determine which user has accessed or attempted to access organization computers. Events for this subcategory include: + - 4634: An account was logged off. + - 4647: User initiated logoff. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Logoff' + query: | + SELECT 1 FROM cis_audit where item = "17.5.3" AND (regex_match(value,".*(?=.*Success).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Logon' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports when a user attempts to log on to the system. These events occur on the accessed computer. For interactive logons, the generation of these events occurs on the computer that is logged on to. If a network logon takes place to access a share, these events generate on the computer that hosts the accessed resource. If you configure this setting to No auditing, it is difficult or impossible to determine which user has accessed or attempted to access organization computers. Events for this subcategory include: + - 4624: An account was successfully logged on. + - 4625: An account failed to log on. + - 4648: A logon was attempted using explicit credentials. + - 4675: SIDs were filtered. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Logon' + query: | + SELECT 1 FROM cis_audit where item = "17.5.4" AND (regex_match(value,".*(?=.*Success)(?=.*Failure).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Other Logon/Logoff Events' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports other logon/logoff-related events, such as Remote Desktop Services session disconnects and reconnects, using RunAs to run processes under a different account, and locking and unlocking a workstation. Events for this subcategory include: + - 4649: A replay attack was detected. + - 4778: A session was reconnected to a Window Station. + - 4779: A session was disconnected from a Window Station. + - 4800: The workstation was locked. + - 4801: The workstation was unlocked. + - 4802: The screen saver was invoked. + - 4803: The screen saver was dismissed. + - 5378: The requested credentials delegation was disallowed by policy. + - 5632: A request was made to authenticate to a wireless network. + - 5633: A request was made to authenticate to a wired network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Other Logon/Logoff Events' + query: | + SELECT 1 FROM cis_audit where item = "17.5.5" AND (regex_match(value,".*(?=.*Success)(?=.*Failure).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Audit Special Logon' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports when a special logon is used. A special logon is a logon that has administrator-equivalent privileges and can be used to elevate a process to a higher level. Events for this subcategory include: + - 4964 : Special groups have been assigned to a new logon. + resolution: | + To establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Logon/Logoff\Audit Special Logon' + query: | + SELECT 1 FROM cis_audit where item = "17.5.6" AND (regex_match(value,".*(?=.*Success).*",0) is not null); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Audit Detailed File Share' is set to include 'Failure' + # platforms: win11 + platform: windows + description: | + This subcategory allows you to audit attempts to access files and folders on a shared folder. Events for this subcategory include: + - 5145: network share object was checked to see whether client can be granted desired access. + The recommended state for this setting is to include: Failure + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit Detailed File Share' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditDetailedFileShare" + AND (mdm_command_output = 2 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit File Share' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to audit attempts to access a shared folder. The recommended state for this setting is: Success and Failure. + Note: There are no system access control lists (SACLs) for shared folders. If this policy setting is enabled, access to all shared folders on the system is audited. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit File Share' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditFileShare" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Other Object Access Events' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to audit events generated by the management of task scheduler jobs or COM+ objects. + For scheduler jobs, the following are audited: + - Job created. + - Job deleted. + - Job enabled. + - Job disabled. + - Job updated. + For COM+ objects, the following are audited: + - Catalog object added. + - Catalog object updated. + - Catalog object deleted. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit Other Object Access Events' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditOtherObjectAccessEvents" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Removable Storage' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to audit user attempts to access file system objects on a removable storage device. A security audit event is generated only for all objects for all types of access requested. If you configure this policy setting, an audit event is generated each time an account accesses a file system object on a removable storage. Success audits record successful attempts and Failure audits record unsuccessful attempts. If you do not configure this policy setting, no audit event is generated when an account accesses a file system object on a removable storage. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\Audit Removable Storage' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/ObjectAccess_AuditRemovableStorage" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Audit Policy Change' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports changes in audit policy including SACL changes. Events for this subcategory include: + - 4715: The audit policy (SACL) on an object was changed. + - 4719: System audit policy was changed. + - 4902: The Per-user audit policy table was created. + - 4904: An attempt was made to register a security event source. + - 4905: An attempt was made to unregister a security event source. + - 4906: The CrashOnAuditFail value has changed. + - 4907: Auditing settings on object were changed. + - 4908: Special Groups Logon table modified. + - 4912: Per User Audit Policy was changed. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Audit Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditPolicyChange" + AND (mdm_command_output = 1 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Authentication Policy Change' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports changes in authentication policy. Events for this subcategory include: + - 4706: A new trust was created to a domain. + - 4707: A trust to a domain was removed. + - 4713: Kerberos policy was changed. + - 4716: Trusted domain information was modified. + - 4717: System security access was granted to an account. + - 4718: System security access was removed from an account. + - 4739: Domain Policy was changed. + - 4864: A namespace collision was detected. + - 4865: A trusted forest information entry was added. + - 4866: A trusted forest information entry was removed. + - 4867: A trusted forest information entry was modified. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Authentication Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditAuthenticationPolicyChange" + AND (mdm_command_output = 1 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Authorization Policy Change' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports changes in authorization policy. Events for this subcategory include: + - 4704: A user right was assigned. + - 4705: A user right was removed. + - 4706: A new trust was created to a domain. + - 4707: A trust to a domain was removed. + - 4714: Encrypted data recovery policy was changed. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Authorization Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditAuthorizationPolicyChange" + AND (mdm_command_output = 1 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit MPSSVC Rule-Level Policy Change' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory determines whether the operating system generates audit events when changes are made to policy rules for the Microsoft Protection Service (MPSSVC.exe). Events for this subcategory include: + - 4944: The following policy was active when the Windows Firewall started. + - 4945: A rule was listed when the Windows Firewall started. + - 4946: A change has been made to Windows Firewall exception list. A rule was added. + - 4947: A change has been made to Windows Firewall exception list. A rule was modified. + - 4948: A change has been made to Windows Firewall exception list. A rule was deleted. + - 4949: Windows Firewall settings were restored to the default values. + - 4950: A Windows Firewall setting has changed. + - 4951: A rule has been ignored because its major version number was not recognized by Windows Firewall. + - 4952: Parts of a rule have been ignored because its minor version number was not recognized by Windows Firewall. The other parts of the rule will be enforced. + - 4953: A rule has been ignored by Windows Firewall because it could not parse the rule. + - 4954: Windows Firewall Group Policy settings have changed. The new settings have been applied. + - 4956: Windows Firewall has changed the active profile. + - 4957: Windows Firewall did not apply the following rule. + - 4958: Windows Firewall did not apply the following rule because the rule referred to items not configured on this computer. + The recommended state for this setting is : Success and Failure + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit MPSSVC Rule- Level Policy Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditMPSSVCRuleLevelPolicyChange" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Sensitive Privilege Use' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports when a user account or service uses a sensitive privilege. A sensitive privilege includes the following user rights: + - Act as part of the operating system + - Back up files and directories + - Create a token object + - Debug programs + - Enable computer and user accounts to be trusted for delegation + - Generate security audits + - Impersonate a client after authentication + - Load and unload device drivers + - Manage auditing and security log + - Modify firmware environment values + - Replace a process-level token + - Restore files and directories + - Take ownership of files or other objects + Auditing this subcategory will create a high volume of events. Events for this subcategory include: + - 4672: Special privileges assigned to new logon. + - 4673: A privileged service was called. + - 4674: An operation was attempted on a privileged object. + The recommended state for this setting is: 'Success and Failure'. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Privilege Use\Audit Sensitive Privilege Use' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PrivilegeUse_AuditSensitivePrivilegeUse" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit IPsec Driver' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports on the activities of the Internet Protocol security (IPsec) driver. Events for this subcategory include: + - 4960: IPsec dropped an inbound packet that failed an integrity check. If this problem persists, it could indicate a network issue or that packets are being modified in transit to this computer. Verify that the packets sent from the remote computer are the same as those received by this computer. This error might also indicate interoperability problems with other IPsec implementations. + - 4961: IPsec dropped an inbound packet that failed a replay check. If this problem persists, it could indicate a replay attack against this computer. + - 4962: IPsec dropped an inbound packet that failed a replay check. The inbound packet had too low a sequence number to ensure it was not a replay. + - 4963: IPsec dropped an inbound clear text packet that should have been secured. This is usually due to the remote computer changing its IPsec policy without informing this computer. This could also be a spoofing attack attempt. + - 4965: IPsec received a packet from a remote computer with an incorrect Security Parameter Index (SPI). This is usually caused by malfunctioning hardware that is corrupting packets. If these errors persist, verify that the packets sent from the remote computer are the same as those received by this computer. This error may also indicate interoperability problems with other IPsec implementations. In that case, if connectivity is not impeded, then these events can be ignored. + - 5478: IPsec Services has started successfully. + - 5479: IPsec Services has been shut down successfully. The shutdown of IPsec Services can put the computer at greater risk of network attack or expose the computer to potential security risks. + - 5480: IPsec Services failed to get the complete list of network interfaces on the computer. This poses a potential security risk because some of the network interfaces may not get the protection provided by the applied IPsec filters. Use the IP Security Monitor snap-in to diagnose the problem. + - 5483: IPsec Services failed to initialize RPC server. IPsec Services could not be started. + - 5484: IPsec Services has experienced a critical failure and has been shut down. The shutdown of IPsec Services can put the computer at greater risk of network attack or expose the computer to potential security risks. + - 5485: IPsec Services failed to process some IPsec filters on a plug-and-play event for network interfaces. This poses a potential security risk because some of the network interfaces may not get the protection provided by the applied IPsec filters. Use the IP Security Monitor snap-in to diagnose the problem. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit IPsec Driver' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditIPsecDriver" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Other System Events' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports on other system events. Events for this subcategory include: + - 5024 : The Windows Firewall Service has started successfully. + - 5025 : The Windows Firewall Service has been stopped. + - 5027 : The Windows Firewall Service was unable to retrieve the security policy from the local storage. The service will continue enforcing the current policy. + - 5028 : The Windows Firewall Service was unable to parse the new security policy. The service will continue with currently enforced policy. + - 5029: The Windows Firewall Service failed to initialize the driver. The service will continue to enforce the current policy. + - 5030: The Windows Firewall Service failed to start. + - 5032: Windows Firewall was unable to notify the user that it blocked an application from accepting incoming connections on the network. + - 5033 : The Windows Firewall Driver has started successfully. + - 5034 : The Windows Firewall Driver has been stopped. + - 5035 : The Windows Firewall Driver failed to start. + - 5037 : The Windows Firewall Driver detected critical runtime error. Terminating. + - 5058: Key file operation. + - 5059: Key migration operation. + The recommended state for this setting is: 'Success and Failure'. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit Other System Events' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditOtherSystemEvents" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Security State Change' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports changes in security state of the system, such as when the security subsystem starts and stops. Events for this subcategory include: + - 4608: Windows is starting up. + - 4609: Windows is shutting down. + - 4616: The system time was changed. + - 4621: Administrator recovered system from CrashOnAuditFail. Users who are not + administrators will now be allowed to log on. Some audit-able activity might not have been recorded. + The recommended state for this setting is to include: 'Success'. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit Security State Change' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSecurityStateChange" + AND (mdm_command_output = 3 OR mdm_command_output = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Security System Extension' is set to include 'Success' + # platforms: win11 + platform: windows + description: | + This subcategory reports the loading of extension code such as authentication packages by the security subsystem. Events for this subcategory include: + - 4610: An authentication package has been loaded by the Local Security Authority. + - 4611: A trusted logon process has been registered with the Local Security Authority. + - 4614: A notification package has been loaded by the Security Account Manager. + - 4622: A security package has been loaded by the Local Security Authority. + - 4697: A service was installed in the system. + The recommended state for this setting is to include: Success. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit Security System Extension' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSecuritySystemExtension" + AND (mdm_command_output = 3 OR mdm_command_output = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit System Integrity' is set to 'Success and Failure' + # platforms: win11 + platform: windows + description: | + This subcategory reports on violations of integrity of the security subsystem. Events for this subcategory include: + - 4612 : Internal resources allocated for the queuing of audit messages have been exhausted, leading to the loss of some audits. + - 4615 : Invalid use of LPC port. + - 4618 : A monitored security event pattern has occurred. + - 4816 : RPC detected an integrity violation while decrypting an incoming message. + - 5038 : Code integrity determined that the image hash of a file is not valid. The file could be corrupt due to unauthorized modification or the invalid hash could indicate a potential disk device error. + - 5056: A cryptographic self test was performed. + - 5057: A cryptographic primitive operation failed. + - 5060: Verification operation failed. + - 5061: Cryptographic operation. + - 5062: A kernel-mode cryptographic self test was performed. + The recommended state for this setting is: Success and Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Success and Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\System\Audit System Integrity' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/System_AuditSystemIntegrity" + AND mdm_command_output = 3; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: CIS - Ensure 'Audit Other Policy Change Events' is set to include 'Failure' + # platforms: win11 + platform: windows + description: | + This subcategory contains events about EFS Data Recovery Agent policy changes, changes in Windows Filtering Platform filter, status on Security policy settings updates for local Group Policy settings, Central Access Policy changes, and detailed troubleshooting events for Cryptographic Next Generation (CNG) operations. + - 5063: A cryptographic provider operation was attempted. + - 5064: A cryptographic context operation was attempted. + - 5065: A cryptographic context modification was attempted. + - 5066: A cryptographic function operation was attempted. + - 5067: A cryptographic function modification was attempted. + - 5068: A cryptographic function provider operation was attempted. + - 5069: A cryptographic function property operation was attempted. + - 5070: A cryptographic function property modification was attempted. + - 6145: One or more errors occurred while processing security policy in the group + policy objects. + The recommended state for this setting is to include: Failure. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to include Failure: + 'Computer Configuration\Policies\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\Policy Change\Audit Other Policy Change Events' + query: | + SELECT 1 FROM mdm_bridge where mdm_command_input = "1./Device/Vendor/MSFT/Policy/Result/Audit/PolicyChange_AuditOtherPolicyChangeEvents" + AND (mdm_command_output = 2 OR mdm_command_output = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Prevent enabling lock screen camera' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Disables the lock screen camera toggle switch in PC Settings and prevents a camera from being invoked on the lock screen. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Personalization\Prevent enabling lock screen camera' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Personalization\NoLockScreenCamera' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent enabling lock screen slide show' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Disables the lock screen slide show settings in PC Settings and prevents a slide show from playing on the lock screen. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Personalization\Prevent enabling lock screen slide show' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Personalization\NoLockScreenSlideshow' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow users to enable online speech recognition services' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy enables the automatic learning component of input personalization that includes speech, inking, and typing. Automatic learning enables the collection of speech and handwriting patterns, typing history, contacts, and recent calendar information. It is required for the use of Cortana. Some of this collected information may be stored on the user's OneDrive, in the case of inking and typing; some of the information will be uploaded to Microsoft to personalize speech. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Regional and Language Options\Allow users to enable online speech recognition services' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\InputPersonalization\AllowInputPersonalization' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Online Tips' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures the retrieval of online tips and help for the Settings app. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Control Panel\Allow Online Tips' + query: | + SELECT 1 FROM registry where (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\AllowOnlineTips' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure LAPS AdmPwd GPO Extension / CSE is installed + # platforms: win11 + platform: windows + description: | + In May 2015, Microsoft released the Local Administrator Password Solution (LAPS) tool, which is free and supported software that allows an organization to automatically set randomized and unique local Administrator account passwords on domain-attached workstations and Member Servers. The passwords are stored in a confidential attribute of the domain computer account and can be retrieved from Active Directory by approved Sysadmins when needed. + The LAPS tool requires a small Active Directory Schema update in order to implement, as well as installation of a Group Policy Client Side Extension (CSE) on targeted computers. Please see the LAPS documentation for details. + LAPS supports Windows Vista or newer workstation OSes, and Server 2003 or newer server OSes. LAPS does not support standalone computers - they must be joined to a domain. + Note #1: Organizations that utilize 3rd-party commercial software to manage unique & complex local Administrator passwords on domain members may opt to disregard these LAPS recommendations. + Note #2: LAPS is only designed to manage local Administrator passwords, and is therefore not recommended (or supported) for use directly on Domain Controllers, which do not have a traditional local Administrator account. We strongly encourage you to only deploy the LAPS CSE and LAPS GPO settings to member servers and workstations. + resolution: | + In order to utilize LAPS, a minor Active Directory Schema update is required, and a Group Policy Client Side Extension (CSE) must be installed on each managed computer. When LAPS is installed, the file AdmPwd.dll must be present in the following location and registered in Windows (the LAPS AdmPwd GPO Extension / CSE installation does this for you): + C:\Program Files\LAPS\CSE\AdmPwd.dll + query: | + SELECT 1 FROM registry where path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\{D76B9641-3288-4f75-942D-087DE603E3EA}\DllName'; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Do not allow password expiration time longer than required by policy' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + In May 2015, Microsoft released the Local Administrator Password Solution (LAPS) tool, which is free and supported software that allows an organization to automatically set randomized and unique local Administrator account passwords on domain-attached workstations and Member Servers. The passwords are stored in a confidential attribute of the domain computer account and can be retrieved from Active Directory by approved Sysadmins when needed. + The LAPS tool requires a small Active Directory Schema update in order to implement, as well as installation of a Group Policy Client Side Extension (CSE) on targeted computers. Please see the LAPS documentation for details. + LAPS supports Windows Vista or newer workstation OSes, and Server 2003 or newer server OSes. LAPS does not support standalone computers - they must be joined to a domain. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\LAPS\Do not allow password expiration time longer than required by policy' + Note: This Group Policy path does not exist by default. An additional Group Policy template (AdmPwd.admx/adml) is required - it is included with Microsoft Local Administrator Password Solution (LAPS). + query: | + SELECT 1 FROM registry where path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft Services\AdmPwd\PwdExpirationProtectionEnabled' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Password Settings: Password Complexity' is set to 'Enabled: Large letters + small letters + numbers + special characters' + # platforms: win11 + platform: windows + description: | + In May 2015, Microsoft released the Local Administrator Password Solution (LAPS) tool, which is free and supported software that allows an organization to automatically set randomized and unique local Administrator account passwords on domain-attached workstations and Member Servers. The passwords are stored in a confidential attribute of the domain computer account and can be retrieved from Active Directory by approved Sysadmins when needed. + The LAPS tool requires a small Active Directory Schema update in order to implement, as well as installation of a Group Policy Client Side Extension (CSE) on targeted computers. Please see the LAPS documentation for details. + LAPS supports Windows Vista or newer workstation OSes, and Server 2003 or newer server OSes. LAPS does not support standalone computers - they must be joined to a domain. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and configure the Password Complexity option to Large letters + small letters + numbers + special characters: + 'Computer Configuration\Policies\Administrative Templates\LAPS\Password Settings' + Note: This Group Policy path does not exist by default. An additional Group Policy template (AdmPwd.admx/adml) is required - it is included with Microsoft Local Administrator Password Solution (LAPS). + query: | + SELECT 1 FROM registry where path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft Services\\AdmPwd\\PasswordComplexity' AND data = 4; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Password Settings: Password Length' is set to 'Enabled: 15 or more' + # platforms: win11 + platform: windows + description: | + In May 2015, Microsoft released the Local Administrator Password Solution (LAPS) tool, which is free and supported software that allows an organization to automatically set randomized and unique local Administrator account passwords on domain-attached workstations and Member Servers. The passwords are stored in a confidential attribute of the domain computer account and can be retrieved from Active Directory by approved Sysadmins when needed. + The LAPS tool requires a small Active Directory Schema update in order to implement, as well as installation of a Group Policy Client Side Extension (CSE) on targeted computers. Please see the LAPS documentation for details. + LAPS supports Windows Vista or newer workstation OSes, and Server 2003 or newer server OSes. LAPS does not support standalone computers - they must be joined to a domain. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and configure the Password Length option to 15 or more: + 'Computer Configuration\Policies\Administrative Templates\LAPS\Password Settings' + Note: This Group Policy path does not exist by default. An additional Group Policy template (AdmPwd.admx/adml) is required - it is included with Microsoft Local Administrator Password Solution (LAPS). + query: | + SELECT 1 FROM registry where path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft Services\\AdmPwd\\PasswordLength' AND data >= 15; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Password Settings: Password Age (Days)' is set to 'Enabled: 30 or fewer' + # platforms: win11 + platform: windows + description: | + In May 2015, Microsoft released the Local Administrator Password Solution (LAPS) tool, which is free and supported software that allows an organization to automatically set randomized and unique local Administrator account passwords on domain-attached workstations and Member Servers. The passwords are stored in a confidential attribute of the domain computer account and can be retrieved from Active Directory by approved Sysadmins when needed. + The LAPS tool requires a small Active Directory Schema update in order to implement, as well as installation of a Group Policy Client Side Extension (CSE) on targeted computers. Please see the LAPS documentation for details. + LAPS supports Windows Vista or newer workstation OSes, and Server 2003 or newer server OSes. LAPS does not support standalone computers - they must be joined to a domain. + The recommended state for this setting is: Enabled: 30 or fewer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and configure the Password Age (Days) option to 30 or fewer: + 'Computer Configuration\Policies\Administrative Templates\LAPS\Password Settings' + Note: This Group Policy path does not exist by default. An additional Group Policy template (AdmPwd.admx/adml) is required - it is included with Microsoft Local Administrator Password Solution (LAPS). + query: | + SELECT 1 FROM registry where path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft Services\\AdmPwd\\PasswordAgeDays' AND data <= 30; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Apply UAC restrictions to local accounts on network logons' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting controls whether local accounts can be used for remote administration via network logon (e.g., NET USE, connecting to C$, etc.). Local accounts are at high risk for credential theft when the same account and password is configured on multiple systems. Enabling this policy significantly reduces that risk. + Enabled: Applies UAC token-filtering to local accounts on network logons. Membership in powerful group such as Administrators is disabled and powerful privileges are removed from the resulting access token. This configures the LocalAccountTokenFilterPolicy registry value to 0. This is the default behavior for Windows. + Disabled: Allows local accounts to have full administrative rights when authenticating via network logon, by configuring the LocalAccountTokenFilterPolicy registry value to 1. + For more information about local accounts and credential theft, review the "Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques" documents. + For more information about LocalAccountTokenFilterPolicy, see Microsoft Knowledge Base article 951016: Description of User Account Control and remote restrictions in Windows Vista. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Apply UAC restrictions to local accounts on network logons' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\LocalAccountTokenFilterPolicy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure SMB v1 client driver' is set to 'Enabled: Disable driver (recommended)' + # platforms: win11 + platform: windows + description: | + This setting configures the start type for the Server Message Block version 1 (SMBv1) client driver service (MRxSmb10), which is recommended to be disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable driver (recommended)': + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure SMB v1 client driver' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MrxSmb10\Start' AND data = 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure SMB v1 server' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting configures the server-side processing of the Server Message Block version 1 (SMBv1) protocol. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure SMB v1 server' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters\SMB1' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable Structured Exception Handling Overwrite Protection (SEHOP)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Windows includes support for Structured Exception Handling Overwrite Protection (SEHOP). We recommend enabling this feature to improve the security profile of the computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Enable Structured Exception Handling Overwrite Protection (SEHOP)' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\DisableExceptionChainValidation' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'NetBT NodeType configuration' is set to 'Enabled: P-node (recommended)' + # platforms: win11 + platform: windows + description: | + This setting determines which method NetBIOS over TCP/IP (NetBT) uses to register and resolve names. The available methods are: + The B-node (broadcast) method only uses broadcasts. + The P-node (point-to-point) method only uses name queries to a name server (WINS). + The M-node (mixed) method broadcasts first, then queries a name server (WINS) if broadcast failed. + The H-node (hybrid) method queries a name server (WINS) first, then broadcasts if the query failed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: P-node (recommended): + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\NetBT NodeType configuration' + Note: This change does not take effect until the computer has been restarted. + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NetBT\\Parameters\NodeType' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'WDigest Authentication' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + When WDigest authentication is enabled, Lsass.exe retains a copy of the user's plaintext password in memory, where it can be at risk of theft. If this setting is not configured, WDigest authentication is disabled in Windows 8.1 and in Windows Server 2012 R2; it is enabled by default in earlier versions of Windows and Windows Server. + For more information about local accounts and credential theft, review the "Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques" documents. + For more information about UseLogonCredential, see Microsoft Knowledge Base article 2871997: Microsoft Security Advisory Update to improve credentials protection and management May 13, 2014. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\WDigest Authentication (disabling may require KB2871997)' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest\UseLogonCredential' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (AutoAdminLogon) Enable Automatic Logon' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting is separate from the Welcome screen feature in Windows XP and Windows Vista; if that feature is disabled, this setting is not disabled. If you configure a computer for automatic logon, anyone who can physically gain access to the computer can also gain access to everything that is on the computer, including any network or networks to which the computer is connected. Also, if you enable automatic logon, the password is stored in the registry in plaintext, and the specific registry key that stores this value is remotely readable by the Authenticated Users group. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (AutoAdminLogon) Enable Automatic Logon' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\AutoAdminLogon' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure RPC packet level privacy setting for incoming connections' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls packet level privacy for Remote Procedure Call (RPC) incoming connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure RPC packet level privacy setting for incoming connections' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Print\\RpcAuthnLevelPrivacyEnabled' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: defensivedepth + +- name: > + CIS - Ensure 'MSS: (DisableIPSourceRouting) IP source routing protection level' is set to 'Enabled: Highest protection, source routing is completely disabled' (Automated)' + # platforms: win11 + platform: windows + description: | + IP source routing is a mechanism that allows the sender to determine the IP route that a datagram should follow through the network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Highest protection, source routing is completely disabled': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting) IP source routing protection level' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters\DisableIPSourceRouting' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (DisableIPSourceRouting) IP source routing protection level' is set to 'Enabled: Highest protection, source routing is completely disabled'' + # platforms: win11 + platform: windows + description: | + IP source routing is a mechanism that allows the sender to determine the IP route that a datagram should take through the network. It is recommended to configure this setting to Not Defined for enterprise environments and to Highest Protection for high security environments to completely disable source routing. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Highest protection, source routing is completely disabled': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting) IP source routing protection level' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\DisableIPSourceRouting' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (DisableSavePassword) Prevent the dial-up password from being saved' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + When you dial a phonebook or VPN entry in Dial-Up Networking, you can use the "Save Password" option so that your Dial-Up Networking password is cached and you will not need to enter it on successive dial attempts. For security, administrators may want to prevent users from caching passwords. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(DisableSavePassword) Prevent the dial-up password from being saved' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\RasMan\\Parameters\DisableSavePassword' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Internet Control Message Protocol (ICMP) redirects cause the IPv4 stack to plumb host routes. These routes override the Open Shortest Path First (OSPF) generated routes. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\EnableICMPRedirect' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + NetBIOS over TCP/IP is a network protocol that among other things provides a way to easily resolve NetBIOS names that are registered on Windows-based systems to the IP addresses that are configured on those systems. This setting determines whether the computer releases its NetBIOS name when it receives a name-release request. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NetBT\\Parameters\NoNameReleaseOnDemand' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting is used to enable or disable the Internet Router Discovery Protocol (IRDP), which allows the system to detect and configure default gateway addresses automatically as described in RFC 1256 on a per-interface basis. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\PerformRouterDiscovery' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (SafeDllSearchMode) Enable Safe DLL search mode' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + The DLL search order can be configured to search for DLLs that are requested by running processes in one of two ways: + - Search folders specified in the system path first, and then search the current working folder. + - Search current working folder first, and then search the folders specified in the system path. + When enabled, the registry value is set to 1. With a setting of 1, the system first searches the folders that are specified in the system path and then searches the current working folder. + When disabled the registry value is set to 0 and the system first searches the current working folder and then searches the folders that are specified in the system path. + Applications will be forced to search for DLLs in the system path first. For applications that require unique versions of these DLLs that are included with the application, this entry could cause performance or stability problems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (SafeDllSearchMode) Enable Safe DLL search mode' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\SafeDllSearchMode' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires' is set to 'Enabled: 5 or fewer seconds' + # platforms: win11 + platform: windows + description: | + Windows includes a grace period between when the screen saver is launched and when the console is actually locked automatically when screen saver locking is enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 5 or fewer seconds: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\ScreenSaverGracePeriod' AND data <= 5); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' is set to 'Enabled: 3' + # platforms: win11 + platform: windows + description: | + This setting controls the number of times that TCP retransmits an individual data segment (non-connect segment) before the connection is aborted. The retransmission time-out is doubled with each successive retransmission on a connection. It is reset when responses resume. The base time-out value is dynamically determined by the measured round-trip time on the connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\TCPIP6\\Parameters\TcpMaxDataRetransmissions' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' is set to 'Enabled: 3' + # platforms: win11 + platform: windows + description: | + This setting controls the number of times that TCP retransmits an individual data segment (non-connect segment) before the connection is aborted. The retransmission time-out is doubled with each successive retransmission on a connection. It is reset when responses resume. The base time-out value is dynamically determined by the measured round-trip time on the connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\TcpMaxDataRetransmissions' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning' is set to 'Enabled: 90% or less' + # platforms: win11 + platform: windows + description: | + This setting can generate a security audit in the Security event log when the log reaches a user-defined threshold. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 90% or less: + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Eventlog\\Security\WarningLevel' AND data <= 90); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off default IPv6 DNS Servers' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the DNS client will use the default IPv6 DNS server addresses provided by Windows. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\DNS Client\Turn off default IPv6 DNS Servers' + Note: This Group Policy path is provided by the Group Policy template + 'DnsClient.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\DisableIPv6DefaultDnsServers' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Turn off multicast name resolution' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + LLMNR is a secondary name resolution protocol. With LLMNR, queries are sent using multicast over a local network link on a single subnet from a client computer to another client computer on the same subnet that also has LLMNR enabled. LLMNR does not require a DNS server or DNS client configuration, and provides name resolution in scenarios in which conventional DNS name resolution is not possible. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\DNS Client\Turn off multicast name resolution' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\EnableMulticast' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable Font Providers' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Windows is allowed to download fonts and font catalog data from an online font provider. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Fonts\Enable Font Providers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\EnableFontProviders' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Audit client does not support encryption' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Server Message Block (SMB) server will log events when the SMB client doesn't support encryption. + Enabling this will create event log entries in + 'Applications and Services Logs\Microsoft\Windows\SMBClient\Audit', with Event ID 31998. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Server\Audit client does not support encryption' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LanmanServer.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanServer\AuditClientDoesNotSupportEncryption' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Audit client does not support signing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Server Message Block (SMB) server will log events when the SMB client doesn't support signing. + Enabling this will create event log entries in 'Applications and Services Logs\Microsoft\Windows\SMBClient\Audit', with Event ID 31999. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Server\Audit client does not support signing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LanmanServer.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanServer\AuditClientDoesNotSupportSigning' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Enable authentication rate limiter' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy settings configures the Server Message Block (SMB) server authentication rate limiter. + The authentication rate limiter is a feature of SMB that is designed to address brute force attacks. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Server\Enable authentication rate limiter' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LanmanServer.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanServer\EnableAuthRateLimiter' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Enable remote mailslots' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy settings controls whether the SMB server will use remote mailslots over the + computer browser service. The remote mailslots protocol is an old, simple, unreliable, + and insecure inter-process communication method. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Server\Enable remote mailslots' + Note: A reboot is required after the setting is applied. + Note 2: This Group Policy path may not exist by default. It is provided by the Group + Policy template 'LanmanServer.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Bowser\EnableMailslots' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Mandate the minimum version of SMB' is set to 'Enabled: 3.1.1' + # platforms: win11 + platform: windows + description: | + This policy settings controls the minimum version of Server Message Block (SMB) protocol that can be used on the system. + The recommended state for this setting is: Enabled: 3.1.1. + Note: This group policy setting does not prevent the use of SMBv1 if it is installed and + enabled on the system. If the following recommendations are configured as prescribed + in this benchmark, SMBv1 will be disabled on the system: 'Configure SMB v1 client driver' and 'Configure SMB v1 server.' + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3.1.1': + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Server\Mandate the minimum version of SMB' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template LanmanServer.admx/adml that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanServer\MinSmb2Dialect' AND data = 785); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Require Encryption' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the SMB client will require encryption. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Workstation\Require Encryption' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LanmanWorkstation.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation\RequireEncryption' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Set authentication rate limiter delay (milliseconds)' is set to 'Enabled: 2000' or more + # platforms: win11 + platform: windows + description: | + This policy settings configures the SMB server invalid authentication delay value in milliseconds. + The recommended state for this setting is: 'Enabled: 2000' or more. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 2000' or more: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Server\Set authentication rate limiter delay (milliseconds)' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LanmanServer.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanServer\InvalidAuthenticationDelayTimeInMs' AND data >= 2000); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Audit insecure guest logon' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy determines whether the Server Message Block (SMB) client will log events when the client is logged on as guest account. + Enabling this will create event log entries in 'Applications and Service Logs\Microsoft\Windows\SMBClient\Security', with Event IDs 3023, 31017, 31018, and 31022. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Workstation\Audit insecure guest logon' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template LanmanWorkstation.admx/adml that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation\AuditInsecureGuestLogon' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Audit server does not support encryption' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Server Message Block (SMB) client will log events when the SMB server doesn't support encryption. + Enabling this will create event log entries in 'Applications and Services Logs\Microsoft\Windows\SMBServer\Audit', with Event ID 3021. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Workstation\Audit server does not support encryption' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template LanmanWorkstation.admx/adml that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation\AuditServerDoesNotSupportEncryption' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Audit server does not support signing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Server Message Block (SMB) client will log events when the SMB server doesn't support signing. + Enabling this will create event log entries in 'Applications and Services Logs\Microsoft\Windows\SMBServer\Audit', with Event ID 3022. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Workstation\Audit server does not support signing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'LanmanWorkstation.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation\AuditServerDoesNotSupportSigning' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds' is set to 'Enabled: 300,000 or 5 minutes' + # platforms: win11 + platform: windows + description: | + This value controls how often TCP attempts to verify that an idle connection is still intact by sending a keep-alive packet. If the remote computer is still reachable, it acknowledges the keep-alive packet. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 300,000 or 5 minutes': + 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds' + Note: This Group Policy path does not exist by default. An additional Group Policy template (MSS-legacy.admx/adml) is required - it is available from the Security Compliance Toolkit 1.0 (https://www.microsoft.com/en-us/download/details.aspx?id=55319) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime' AND data = 300000); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable insecure guest logons' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines if the SMB client will allow insecure guest logons to an SMB server. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Lanman Workstation\Enable insecure guest logons' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation\AllowInsecureGuestAuth' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn on Mapper I/O (LLTDIO) driver' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting changes the operational behavior of the Mapper I/O network protocol driver. LLTDIO allows a computer to discover the topology of a network it's connected to. It also allows a computer to initiate Quality-of-Service requests such as bandwidth estimation and network health analysis. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Link-Layer Topology Discovery\Turn on Mapper I/O (LLTDIO) driver' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LLTD\EnableLLTDIO' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn on Responder (RSPNDR) driver' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting changes the operational behavior of the Responder network protocol driver. The Responder allows a computer to participate in Link Layer Topology Discovery requests so that it can be discovered and located on the network. It also allows a computer to participate in Quality-of-Service activities such as bandwidth estimation and network health analysis. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled (recommended): + 'Computer Configuration\Policies\Administrative Templates\Network\Link-Layer Topology Discovery\Turn on Responder (RSPNDR) driver' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LLTD\EnableRspndr' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn off Microsoft Peer-to-Peer Networking Services' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + The Peer Name Resolution Protocol (PNRP) allows for distributed resolution of a name to an IPv6 address and port number. The protocol operates in the context of clouds. A cloud is a set of peer computers that can communicate with each other by using the same IPv6 scope.Peer-to-Peer protocols allow for applications in the areas of RTC, collaboration, content distribution and distributed processing. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Microsoft Peer-to-Peer Networking Services\Turn off Microsoft Peer-to-Peer Networking Services' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Peernet\Disabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Prohibit installation and configuration of Network Bridge on your DNS domain network' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + You can use this procedure to control a user's ability to install and configure a Network Bridge.. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Network\Network Connections\Prohibit installation and configuration of Network Bridge on your DNS domain network' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections\NC_AllowNetBridge_NLA' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Prohibit use of Internet Connection Sharing on your DNS domain network' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Although this "legacy" setting traditionally applied to the use of Internet Connection Sharing (ICS) in Windows 2000, Windows XP & Server 2003, this setting now freshly applies to the Mobile Hotspot feature in Windows 10 & Server 2016. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Administrative Templates\Network\Network Connections\Prohibit use of Internet Connection Sharing on your DNS domain network' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections\NC_ShowSharedAccessUI' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Windows Defender SmartScreen' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting lets you decide whether to turn on SmartScreen Filter. SmartScreen Filter provides warning messages to help protect your employees from potential phishing scams and malicious software. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Microsoft Edge\Configure Windows Defender SmartScreen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template MicrosoftEdge.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MicrosoftEdge\PhishingFilter\EnabledV9' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require domain users to elevate when setting a network's location' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether to require domain users to elevate when setting a network's location. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to On (recommended): + 'Computer Configuration\Policies\Administrative Templates\Network\Network Connections\Require domain users to elevate when setting a network's location' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections\NC_StdDomainUserSetLocation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Print Spooler to accept client connections' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the Print Spooler service will accept client connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Printers\Allow Print Spooler to accept client connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\RegisterSpoolerRemoteRpcEndPoint' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Point and Print Restrictions: When installing drivers for a new connection' is set to 'Enabled: Show warning and elevation prompt' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether computers will show a warning and a security elevation prompt when users create a new printer connection using Point and Print. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Show warning and elevation prompt': + 'Computer Configuration\Policies\Administrative Templates\Printers\Point and Print Restrictions: When installing drivers for a new connection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint\NoWarningNoElevationOnInstall' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Point and Print Restrictions: When updating drivers for an existing connection' is set to 'Enabled: Show warning and elevation prompt' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether computers will show a warning and a security elevation prompt when users are updating drivers for an existing connection using Point and Print. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Show warning and elevation prompt': + 'Computer Configuration\Policies\Administrative Templates\Printers\Point and Print Restrictions: When updating drivers for an existing connection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint\UpdatePromptSettings' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure multicast DNS (mDNS) protocol' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines if the DNS client will perform name resolution over Multicast DNS (mDNS). + mDNS performs local network name and service discoveries without the need for central DNS. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Network\DNS Client\Configure multicast DNS (mDNS) protocol' + Note: This Group Policy path is provided by the Group Policy template + 'DnsClient.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\EnableMDNS' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Configure NetBIOS settings' is set to 'Enabled: Disable NetBIOS name resolution on public networks' + # platforms: win11 + platform: windows + description: | + This policy setting specifies if the Domain Name System (DNS) client will perform name resolution over Network Basic Input/Output System (NetBIOS). NetBIOS is a legacy name resolution method for internal Microsoft networking that predates the use of DNS for that purpose (pre–Active Directory). Some legacy applications still require the use of NetBIOS for full functionality. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable NetBIOS name resolution on public networks': + 'Computer Configuration\Policies\Administrative Templates\Network\DNS Client\Configure NetBIOS settings' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\EnableNetbios' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn off notifications network usage' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting blocks applications from using the network to send notifications to update tiles, tile badges, toast, or raw notifications. This policy setting turns off the connection between Windows and the Windows Push Notification Service (WNS). This policy setting also stops applications from being able to poll application services to update tiles. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Start Menu and Taskbar\Turn off notifications network usage' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows\\CurrentVersion\\PushNotifications\NoCloudApplicationNotification' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Redirection Guard' is set to 'Enabled: Redirection Guard Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Redirection Guard is enabled for the print spooler. Redirection Guard can prevent file redirections from being used within the print spooler. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Redirection Guard Enabled': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure Redirection Guard' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RedirectionGuardPolicy' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC connection settings: Protocol to use for outgoing RPC connections' is set to 'Enabled: RPC over TCP' + # platforms: win11 + platform: windows + description: | + This policy setting controls which protocol and protocol settings to use for outgoing Remote Procedure Call (RPC) connections to a remote print spooler. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: RPC over TCP': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC connection settings: Protocol to use for outgoing RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\RpcUseNamedPipeProtocol' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC connection settings: Use authentication for outgoing RPC connections' is set to 'Enabled: Default' + # platforms: win11 + platform: windows + description: | + This policy setting controls which protocol and protocol settings to use for outgoing Remote Procedure Call (RPC) connections to a remote print spooler. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: RPC over TCP': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC connection settings: Use authentication for outgoing RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\RpcAuthentication' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC listener settings: Protocols to allow for incoming RPC connections' is set to 'Enabled: RPC over TCP' + # platforms: win11 + platform: windows + description: | + This policy setting controls which protocols incoming Remote Procedure Call (RPC) connections to the print spooler are allowed to use. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: RPC over TCP': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC listener settings: Configure protocol options for incoming RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\RpcProtocols' AND (data = 5)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure RPC listener settings: Authentication protocol to use for incoming RPC connections:' is set to 'Enabled: Negotiate' or higher + # platforms: win11 + platform: windows + description: | + This policy setting controls which protocols incoming Remote Procedure Call (RPC) connections to the print spooler are allowed to use. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Negotiate': + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure RPC listener settings: Configure protocol options for incoming RPC connections' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\RPC\ForceKerberosForRpc' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Manage processing of Queue-specific files' is set to 'Enabled: Limit Queue-specific files to Color profiles' + # platforms: win11 + platform: windows + description: | + This policy setting manages how queue-specific files are processed during printer installation. At printer installation time, a vendor-supplied installation application can specify a set of files, of any type, to be associated with a particular print queue. The files are downloaded to each client that connects to the print server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Limit Queue-specific files to Color profiles': + 'Computer Configuration\Policies\Administrative Templates\Printers\Manage processing of Queue-specific files' + Note: This Group Policy path is provided by the Group Policy template Printing.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (and newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\CopyFilesPolicy' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure Windows protected print' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Windows protected print is enabled on the system. + Windows protected print uses the modern print platform and Windows protected print + mode. Modern print is designed to work only with Mopria-certified printers. Mopria is a + collection of printer manufacturers and software vendors that define standards for IPP + printing and eSCL scanning. + + The recommended state for this setting is: Enabled. + + Note: Windows protected print will not prohibit administrators or users from installing + third-party print drivers through an installation package provided by the print device + manufacturer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled. + 'Computer Configuration\Policies\Administrative Templates\Printers\Configure Windows protected print' + Note: This Group Policy path is provided by the Group Policy template + Printing.admx/adml that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\WPP\WindowsProtectedPrintGroupPolicyState' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Limits print driver installation to Administrators' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether users that aren't Administrators can install print drivers on the system. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled. + 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Limits print driver installation to Administrators' + Note: This Group Policy path does not exist by default. An additional Group Policy template (SecGuide.admx/adml) is required - it is available from Microsoft at this link (https://techcommunity.microsoft.com/t5/microsoft-security-baselines/security-baseline-final-for-windows-10-v1903-and-windows-server/ba-p/701084). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\\PointAndPrint\RestrictDriverInstallationToAdministrators' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Include command line in process creation events' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the process creation command line text is logged in security audit events when a new process has been created. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Audit Process Creation\Include command line in process creation events' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\Audit\ProcessCreationIncludeCmdLine_Enabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Encryption Oracle Remediation' is set to 'Enabled: Force Updated Clients' + # platforms: win11 + platform: windows + description: | + Some versions of the CredSSP protocol that is used by some applications (such as Remote Desktop Connection) are vulnerable to an encryption oracle attack against the client. This policy controls compatibility with vulnerable clients and servers and allows you to set the level of protection desired for the encryption oracle vulnerability. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Force Updated Clients': + 'Computer Configuration\Policies\Administrative Templates\System\Credentials Delegation\Encryption Oracle Remediation' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\CredSSP\\Parameters\AllowEncryptionOracle' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Remote host allows delegation of non-exportable credentials' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Remote host allows delegation of non-exportable credentials. When using credential delegation, devices provide an exportable version of credentials to the remote host. This exposes users to the risk of credential theft from attackers on the remote host. The Restricted Admin Mode and Windows Defender Remote Credential Guard features are two options to help protect against this risk. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Credentials Delegation\Remote host allows delegation of non-exportable credentials' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CredentialsDelegation\AllowProtectedCreds' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Virtualization Based Security is enabled. Virtualization Based Security uses the Windows Hypervisor to provide support for security services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\EnableVirtualizationBasedSecurity' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Select Platform Security Level' is set to 'Secure Boot' or higher + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Virtualization Based Security (VBS) is enabled. VBS uses the Windows Hypervisor to provide support for security services. The recommended state for this setting is: Secure Boot or Secure Boot and DMA Protection. + + Note: VBS requires a 64-bit version of Windows with Secure Boot enabled, which in turn requires that Windows was installed with a UEFI BIOS configuration, not a Legacy BIOS configuration. In addition, if running Windows on a virtual machine, the hardware-assisted CPU virtualization feature (Intel VT-x or AMD-V) must be exposed by the host to the guest VM. More information on system requirements for this feature can be found at Windows Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + + Note #2: Credential Guard and Device Guard are not currently supported when using Azure IaaS VMs. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Secure Boot or Secure Boot and DMA Protection: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Select Platform Security Level' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\DeviceGuard\RequirePlatformSecurityFeatures' AND data in (1,3)); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Select Platform Security Level' is set to 'Secure Boot and DMA Protection' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Virtualization Based Security is enabled. Virtualization Based Security uses the Windows Hypervisor to provide support for security services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Secure Boot and DMA Protection': + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Select Platform Security Level' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\RequirePlatformSecurityFeatures' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_NG + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Virtualization Based Protection of Code Integrity' is set to 'Enabled with UEFI lock' + # platforms: win11 + platform: windows + description: | + This setting enables virtualization based protection of Kernel Mode Code Integrity. When this is enabled, kernel mode memory protections are enforced and the Code Integrity validation path is protected by the Virtualization Based Security feature. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled with UEFI lock': + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Virtualization Based Protection of Code Integrity' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\HypervisorEnforcedCodeIntegrity' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Require UEFI Memory Attributes Table' is set to 'True (checked)' + # platforms: win11 + platform: windows + description: | + This option will only enable Virtualization Based Protection of Code Integrity on devices with UEFI firmware support for the Memory Attributes Table. Devices without the UEFI Memory Attributes Table may have firmware that is incompatible with Virtualization Based Protection of Code Integrity which in some cases can lead to crashes or data loss or incompatibility with certain plug-in cards. If not setting this option the targeted devices should be tested to ensure compatibility. + resolution: | + To establish the recommended configuration via GP, set the following UI path to TRUE: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Require UEFI Memory Attributes Table' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\HVCIMATRequired' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Credential Guard Configuration' is set to 'Enabled with UEFI lock' + # platforms: win11 + platform: windows + description: | + This setting lets users turn on Credential Guard with virtualization-based security to help protect credentials. The "Enabled with UEFI lock" option ensures that Credential Guard cannot be disabled remotely. In order to disable the feature, you must set the Group Policy to "Disabled" as well as remove the security functionality from each computer, with a physically present user, in order to clear configuration persisted in UEFI. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled with UEFI lock': + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Credential Guard Configuration' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\LsaCfgFlags' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Secure Launch Configuration' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Secure Launch protects the Virtualization Based Security environment from exploited vulnerabilities in device firmware. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Secure Launch Configuration' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\ConfigureSystemGuardLaunch' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn On Virtualization Based Security: Kernel-mode Hardware-enforced Stack Protection' is set to 'Enabled: Enabled in enforcement mode' + # platforms: win11 + platform: windows + description: | + This policy setting enables Hardware-enforced Stack Protection for kernel-mode code. Kernel-mode data stacks are hardened with hardware-based shadow stacks, which store intended return address targets to ensure that program control flow is not tampered. The recommended state for this setting is: Enabled: Enabled in enforcement mode. + + Note: Virtualization Based Security (VBS) requires a 64-bit version of Windows with Secure Boot enabled, which in turn requires that Windows was installed with a UEFI BIOS configuration, not a Legacy BIOS configuration. In addition, if running Windows on a virtual machine, the hardware-assisted CPU virtualization feature (Intel VT-x or AMD- V) must be exposed by the host to the guest VM. More information on system requirements for this feature can be found at Windows Defender Credential Guard Requirements (Windows 10) | Microsoft Docs + Note #2: This specific security feature of VBS is only compatible with Windows 11 Release 22H2 (and newer). + Note #3: Only Intel CPUs from Tiger Lake and beyond or AMD CPUs Zen3 and beyond (both were release in fall 2020) are compatible with this security feature. + Note #4: Credential Guard and Device Guard are not currently supported when using Azure IaaS VMs. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Enabled in enforcement mode: + 'Computer Configuration\Policies\Administrative Templates\System\Device Guard\Turn On Virtualization Based Security: Kernel-mode Hardware-enforced Stack Protection' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceGuard\ConfigureKernelShadowStacksLaunch' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\DenyDeviceClasses' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes: Prevent installation of devices using drivers for these device setup' is set to 'IEEE 1394 device setup classes' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, and add {d48179be-ec20-11d1-b6b8-00c04fa372a7}, {7ebefbc0-3200-11d2-b4c2-00a0C9697d07}, {c06ff265-ae09-48f0-812c-16753d7cba83}, and {6bdd1fc1-810f-11d0-bec7-08002be2092f} to the device setup classes list: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes' + query: | + SELECT data FROM registry WHERE ((key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\\DenyDeviceClasses\' AND data IN ('{d48179be-ec20-11d1-b6b8-00c04fa372a7}', '{7ebefbc0-3200-11d2-b4c2-00a0C9697d07}', '{c06ff265-ae09-48f0-812c-16753d7cba83}', '{6bdd1fc1-810f-11d0-bec7-08002be2092f}')) AND ((SELECT COUNT(*) FROM registry WHERE (key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\\DenyDeviceClasses\' AND data IN ('{d48179be-ec20-11d1-b6b8-00c04fa372a7}', '{7ebefbc0-3200-11d2-b4c2-00a0C9697d07}', '{c06ff265-ae09-48f0-812c-16753d7cba83}', '{6bdd1fc1-810f-11d0-bec7-08002be2092f}'))))=4); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent installation of devices using drivers that match these device setup classes: Also apply to matching devices that are already installed.' is set to 'True' (checked) + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify a list of device setup class globally unique identifiers (GUIDs) for device drivers that Windows is prevented from installing. This policy setting takes precedence over any other policy setting that allows Windows to install a device. + If you enable this policy setting, Windows is prevented from installing or updating device drivers whose device setup class GUIDs appear in the list you create. If you enable this policy setting on a remote desktop server, the policy setting affects redirection of the specified devices from a remote desktop client to the remote desktop server. + If you disable or do not configure this policy setting, Windows can install and update devices as allowed or prevented by other policy settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', and check the 'Also apply to matching devices that are already installed.' checkbox: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Device Installation Restrictions\Prevent installation of devices using drivers that match these device setup classes' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions\DenyDeviceClassesRetroactive' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent device metadata retrieval from the Internet' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to prevent Windows from retrieving device metadata from the Internet. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Device Installation\Prevent device metadata retrieval from the Internet' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Device Metadata\PreventDeviceMetadataFromNetwork' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Boot-Start Driver Initialization Policy' is set to 'Enabled: Good, unknown and bad but critical' (Automated) + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify which boot-start drivers are initialized based on a classification determined by an Early Launch Antimalware boot-start driver. The Early Launch Antimalware boot-start driver can return the following classifications for each boot-start driver: + Good: The driver has been signed and has not been tampered with. + Bad: The driver has been identified as malware. It is recommended that you do not allow known bad drivers to be initialized. + Bad, but required for boot: The driver has been identified as malware, but the computer cannot successfully boot without loading this driver. + Unknown: This driver has not been attested to by your malware detection application and has not been classified by the Early Launch Antimalware boot-start driver. + If you enable this policy setting you will be able to choose which boot-start drivers to initialize the next time the computer is started. + If your malware detection application does not include an Early Launch Antimalware boot- start driver or if your Early Launch Antimalware boot-start driver has been disabled, this setting has no effect and all boot-start drivers are initialized. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 'Good, unknown and bad but critical': + 'Computer Configuration\Policies\Administrative Templates\System\Early Launch Antimalware\Boot-Start Driver Initialization Policy' + query: | + SELECT 1 FROM REGISTRY WHERE (PATH = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Policies\\EarlyLaunch\DriverLoadPolicy' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure registry policy processing: Do not apply during periodic background processing' is set to 'Enabled: FALSE' + # platforms: win11 + platform: windows + description: | + The "Do not apply during periodic background processing" option prevents the system from updating affected policies in the background while the computer is in use. When background updates are disabled, policy changes will not take effect until the next user logon or system restart. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, then set the Do not apply during periodic background processing option to FALSE (unchecked): + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure registry policy processing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Group Policy\\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\NoBackgroundPolicy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure registry policy processing: Process even if the Group Policy objects have not changed' is set to 'Enabled: TRUE' + # platforms: win11 + platform: windows + description: | + The "Process even if the Group Policy objects have not changed" option updates and reapplies policies even if the policies have not changed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled, then set the Process even if the Group Policy objects have not changed option to TRUE (checked): + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure registry policy processing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Group Policy\\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\NoGPOListChanges' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_domain_joined_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Continue experiences on this device' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Windows device is allowed to participate in cross-device experiences (continue experiences). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Continue experiences on this device' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\EnableCdp' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_domain_joined_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off background refresh of Group Policy' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting prevents Group Policy from being updated while the computer is in use. + This policy setting applies to Group Policy for computers, users and Domain Controllers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Turn off background refresh of Group Policy' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GroupPolicy.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + -- The registry key is not present when policy is disabled, so query below is returning 1 when policy is disabled and registry value does not exist. It also return 1 in case policy is enabled and its registry value is 1 + SELECT 1 WHERE ( + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System' AND name = 'DisableBkGndGroupPolicy' ) + ) OR ( + NOT EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableBkGndGroupPolicy' AND data = 1 ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_domain_joined_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off access to the Store' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether to use the Store service for finding an application to open a file with an unhandled file type or protocol association. When a user opens a file type or protocol that is not associated with any applications on the computer, the user is given the choice to select a local application or use the Store service to find an application. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off access to the Store' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template ICM.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\NoUseStoreOpenWith' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off downloading of print drivers over HTTP' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the computer can download print driver packages over HTTP. To set up HTTP printing, printer drivers that are not available in the standard operating system installation might need to be downloaded over HTTP. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off downloading of print drivers over HTTP' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template ICM.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\DisableWebPnPDownload' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off handwriting personalization data sharing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting turns off data sharing from the handwriting recognition personalization tool. + The handwriting recognition personalization tool enables Tablet PC users to adapt handwriting recognition to their own writing style by providing writing samples. The tool can optionally share user writing samples with Microsoft to improve handwriting recognition in future versions of Windows. The tool generates reports and transmits them to Microsoft over a secure connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off handwriting personalization data sharing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template ShapeCollector.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\TabletPC\PreventHandwritingDataSharing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off handwriting recognition error reporting' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Turns off the handwriting recognition error reporting tool. + The handwriting recognition error reporting tool enables users to report errors encountered in Tablet PC Input Panel. The tool generates error reports and transmits them to Microsoft over a secure connection. Microsoft uses these error reports to improve handwriting recognition in future versions of Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off handwriting recognition error reporting' + Note: This Group Policy path is provided by the Group Policy template InkWatson.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\HandwritingErrorReports\PreventHandwritingErrorReports' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the Internet Connection Wizard can connect to Microsoft to download a list of Internet Service Providers (ISPs). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Internet Connection Wizard\ExitOnMSICW' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Internet download for Web publishing and online ordering wizards' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Windows will download a list of providers for the Web publishing and online ordering wizards. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet download for Web publishing and online ordering wizards' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\NoWebServices' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off printing over HTTP' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to disable the client computer's ability to print over HTTP, which allows the computer to print to printers on the intranet as well as the Internet. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off printing over HTTP' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Printers\DisableHTTPPrinting' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Registration if URL connection is referring to Microsoft.com' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the Windows Registration Wizard connects to Microsoft.com for online registration. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Registration if URL connection is referring to Microsoft.com' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Registration Wizard Control\NoRegistration' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Search Companion content file updates' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Search Companion should automatically download content updates during local and Internet searches. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Search Companion content file updates' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\SearchCompanion\DisableContentFileUpdates' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the "Order Prints" picture task' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the "Order Prints Online" task is available from Picture Tasks in Windows folders. + The Order Prints Online Wizard is used to download a list of providers and allow users to order prints online. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Order Prints" picture task' + Note: This Group Policy path is provided by the Group Policy template ICM.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\NoOnlinePrintsWizard' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the "Publish to Web" task for files and folders' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the tasks Publish this file to the Web, Publish this folder to the Web, and Publish the selected items to the Web are available from File and Folder Tasks in Windows folders. The Web Publishing wizard is used to download a list of providers and allow users to publish content to the Web. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Publish to Web" task for files and folders' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\NoPublishingWizard' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the Windows Messenger Customer Experience Improvement Program' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the Windows Customer Experience Improvement Program can collect anonymous information about how Windows is used. Microsoft uses information collected through the Windows Customer Experience Improvement Program to improve features that are most used and to detect flaws so that they can be corrected more quickly. Enabling this setting will reduce the amount of data Microsoft is able to gather for this purpose. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the Windows Messenger Customer Experience Improvement Program' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Messenger\\Client\CEIP' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Windows Customer Experience Improvement Program' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Windows Messenger can collect anonymous information about how the Windows Messenger software and service is used. + Microsoft uses information collected through the Windows Customer Experience Improvement Program to detect software flaws so that they can be corrected more quickly, enabling this setting will reduce the amount of data Microsoft is able to gather for this purpose. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Windows Customer Experience Improvement Program' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\SQMClient\\Windows\CEIPEnable' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Windows Error Reporting' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether or not errors are reported to Microsoft. Error Reporting is used to report information about a system or application that has failed or has stopped responding and is used to improve the quality of the product. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Windows Error Reporting' + query: | + SELECT COUNT(*) FROM registry WHERE ((path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Error Reporting\Disabled' AND data = 1) OR (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\PCHealth\\ErrorReporting\DoReport' AND data = 0))=2; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Support device authentication using certificate' is set to 'Enabled: Automatic' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to set support for Kerberos to attempt authentication using the certificate for the device to the domain. + Support for device authentication using certificate will require connectivity to a DC in the device account domain which supports certificate authentication for computer accounts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Automatic: + 'Computer Configuration\Policies\Administrative Templates\System\Kerberos\Support device authentication using certificate' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Kerberos.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\kerberos\\parameters\DevicePKInitBehavior' AND data = 0) AND (SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\kerberos\\parameters\DevicePKInitEnabled' AND data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enumeration policy for external devices incompatible with Kernel DMA Protection' is set to 'Enabled: Block All' + # platforms: win11 + platform: windows + description: | + This policy is intended to provide additional security against external DMA-capable devices. It allows for more control over the enumeration of external DMA-capable devices that are not compatible with DMA Remapping/device memory isolation and sandboxing. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Block All: + 'Computer Configuration\Policies\Administrative Templates\System\Kernel DMA Protection\Enumeration policy for external devices incompatible with Kernel DMA Protection' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DmaGuard.admx/adml that is included with the Microsoft Windows 10 Release 1809 & Server 2019 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Kernel DMA Protection\DeviceEnumerationPolicy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disallow copying of user input methods to the system account for sign-in' is set to 'Enabled' (Automated) + # platforms: win11 + platform: windows + description: | + This policy prevents automatic copying of user input methods to the system account for use on the sign-in screen. The user is restricted to the set of input methods that are enabled in the system account. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Locale Services\Disallow copying of user input methods to the system account for sign-in' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Globalization.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Control Panel\\International\BlockUserInputMethodsForSignIn' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Block user from showing account details on sign-in' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy prevents the user from showing account details (email address or user name) on the sign-in screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Block user from showing account details on sign-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\BlockUserFromShowingAccountDetailsOnSignin' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not display network selection UI' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control whether anyone can interact with available networks UI on the logon screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Do not display network selection UI' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\DontDisplayNetworkSelectionUI' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not enumerate connected users on domain-joined computers' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting prevents connected users from being enumerated on domain-joined computers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Do not enumerate connected users on domain-joined computers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\DontEnumerateConnectedUsers' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enumerate local users on domain-joined computers' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows local users to be enumerated on domain-joined computers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Enumerate local users on domain-joined computers' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\EnumerateLocalUsers' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off app notifications on the lock screen' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to prevent app notifications from appearing on the lock screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Turn off app notifications on the lock screen' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\DisableLockScreenAppNotifications' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off picture password sign-in' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control whether a domain user can sign in using a picture password. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Turn off picture password sign-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\BlockDomainPicturePassword' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on convenience PIN sign-in' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control whether a domain user can sign in using a convenience PIN. In Windows 10, convenience PIN was replaced with Passport, which has stronger security properties. To configure Passport for domain users, use the policies under Computer Configuration\Administrative Templates\Windows Components\Microsoft Passport for Work. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Logon\Turn on convenience PIN sign-in' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\AllowDomainPINLogon' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Block NetBIOS-based discovery for domain controller location' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the Domain Controller (DC) location algorithm uses NetBIOS-based discovery for the Domain Controller's location. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Net Logon\DC Locator DNS Records\Block NetBIOS-based discovery for domain controller location' + Note: This Group Policy path is provided by the Group Policy template + 'Netlogon.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Netlogon\Parameters\BlockNetbiosDiscovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Allow Clipboard synchronization across devices' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting determines whether Clipboard contents can be synchronized across devices. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\OS Policies\Allow Clipboard synchronization across devices' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\AllowCrossDeviceClipboard' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow upload of User Activities' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether published User Activities can be uploaded to the cloud. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\OS Policies\Allow upload of User Activities' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\UploadUserActivities' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow network connectivity during connected-standby (on battery)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control the network connectivity state in standby on modern standby-capable systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow network connectivity during connected-standby (on battery)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\f15576e8-98b7-4186-b944-eafa664402d9\DCSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow network connectivity during connected-standby (plugged in)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control the network connectivity state in standby on modern standby-capable systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow network connectivity during connected-standby (plugged in)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\f15576e8-98b7-4186-b944-eafa664402d9\ACSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow standby states (S1-S3) when sleeping (on battery)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting manages whether or not Windows is allowed to use standby states when putting the computer in a sleep state. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow standby states (S1-S3) when sleeping (on battery)'' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\DCSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow standby states (S1-S3) when sleeping (plugged in)' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting manages whether or not Windows is allowed to use standby states when putting the computer in a sleep state. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Allow standby states (S1-S3) when sleeping (plugged in)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\ACSettingIndex' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require a password when a computer wakes (on battery)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Specifies whether or not the user is prompted for a password when the system resumes from sleep. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Require a password when a computer wakes (on battery)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\0e796bdb-100d-47d6-a2d5-f7d2daa51f51\DCSettingIndex' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require a password when a computer wakes (plugged in)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Specifies whether or not the user is prompted for a password when the system resumes from sleep. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Power Management\Sleep Settings\Require a password when a computer wakes (plugged in)' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Power\\PowerSettings\\0e796bdb-100d-47d6-a2d5-f7d2daa51f51\ACSettingIndex' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Offer Remote Assistance' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to turn on or turn off Offer (Unsolicited) Remote Assistance on this computer. Help desk and support personnel will not be able to proactively offer assistance, although they can still respond to user assistance requests. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Remote Assistance\Configure Offer Remote Assistance' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\fAllowUnsolicited' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Solicited Remote Assistance' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to turn on or turn off Solicited (Ask for) Remote Assistance on this computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Remote Assistance\Configure Solicited Remote Assistance' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\fAllowToGetHelp' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable RPC Endpoint Mapper Client Authentication' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether RPC clients authenticate with the Endpoint Mapper Service when the call they are making contains authentication information. The Endpoint Mapper Service on computers running Windows NT4 (all service packs) cannot process authentication information supplied in this manner. This policy setting can cause a specific issue with 1-way forest trusts if it is applied to the trusting domain DCs (see Microsoft KB3073942), so we do not recommend applying it to Domain Controllers. + Note: This policy will not in effect until the system is rebooted. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Remote Procedure Call\Enable RPC Endpoint Mapper Client Authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Rpc\EnableAuthEpResolution' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure SAM change password RPC methods policy' is set to 'Enabled: Block all change password RPC methods' + # platforms: win11 + platform: windows + description: | + This policy setting determines which RPC methods can be used to change passwords stored in the Security Account Manager (SAM). + The recommended state for this setting is: 'Enabled: Block all change password RPC methods'. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Block all change password RPC methods': + 'Computer Configuration\Policies\Administrative Templates\System\Security Account Manager\Configure SAM change password RPC methods policy' + Note: This Group Policy path is provided by the Group Policy template 'SAM.admx/adml' + that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\SAM\SamrChangeUserPasswordApiPolicy' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Restrict Unauthenticated RPC clients' is set to 'Enabled: Authenticated' + # platforms: win11 + platform: windows + description: | + This policy setting controls how the RPC server runtime handles unauthenticated RPC clients connecting to RPC servers. + This policy setting impacts all RPC applications. In a domain environment this policy setting should be used with caution as it can impact a wide range of functionality including group policy processing itself. Reverting a change to this policy setting can require manual intervention on each affected machine. This policy setting should never be applied to a Domain Controller. + A client will be considered an authenticated client if it uses a named pipe to communicate with the server or if it uses RPC Security. RPC Interfaces that have specifically requested to be accessible by unauthenticated clients may be exempt from this restriction, depending on the selected value for this policy setting. + -- "None" allows all RPC clients to connect to RPC Servers running on the machine on which the policy setting is applied. + -- "Authenticated" allows only authenticated RPC Clients (per the definition above) to connect to RPC Servers running on the machine on which the policy setting is applied. Exemptions are granted to interfaces that have requested them. + -- "Authenticated without exceptions" allows only authenticated RPC Clients (per the definition above) to connect to RPC Servers running on the machine on which the policy setting is applied. No exceptions are allowed. This value has the potential to cause serious problems and is not recommended. + Note: This policy setting will not be applied until the system is rebooted. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Authenticated': + 'Computer Configuration\Policies\Administrative Templates\System\Remote Procedure Call\Restrict Unauthenticated RPC clients' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Rpc\RestrictRemoteClients' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Microsoft Support Diagnostic Tool: Turn on MSDT interactive communication with support provider' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures Microsoft Support Diagnostic Tool (MSDT) interactive communication with the support provider. MSDT gathers diagnostic data for analysis by support professionals. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Troubleshooting and Diagnostics\Microsoft Support Diagnostic Tool\Microsoft Support Diagnostic Tool: Turn on MSDT interactive communication with support provider + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template MSDT.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\ScriptedDiagnosticsProvider\\Policy\DisableQueryRemoteServer' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable/Disable PerfTrack' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether to enable or disable tracking of responsiveness events. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Troubleshooting and Diagnostics\Windows Performance PerfTrack\Enable/Disable PerfTrack' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PerformancePerftrack.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\Windows\\WDI\\{9c5a40da-b965-4fc3-8781-88dd50a6299d}\ScenarioExecutionEnabled' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the advertising ID' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting turns off the advertising ID, preventing apps from using the ID for experiences across apps. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\User Profiles\Turn off the advertising ID' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template UserProfiles.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\Windows\\AdvertisingInfo\DisabledByGroupPolicy' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable Windows NTP Client' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the Windows NTP Client is enabled. Enabling the Windows NTP Client allows your computer to synchronize its computer clock with other NTP servers. You might want to disable this service if you decide to use a third-party time provider. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\System\Windows Time Service\Time Providers\Enable Windows NTP Client' + Note: This Group Policy path is provided by the Group Policy template W32Time.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\W32Time\\TimeProviders\\NtpClient\Enabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable Windows NTP Server' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify whether the Windows NTP Server is enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Windows Time Service\Time Providers\Enable Windows NTP Server' + Note: This Group Policy path is provided by the Group Policy template W32Time.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\W32Time\\TimeProviders\\NtpServer' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure the behavior of the sudo command' is set to 'Enabled: Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures the use of the sudo.exe command line tool. The sudo + feature in Windows allows users to run elevated commands (as an administrator) + directly from an unelevated console session. + The recommended state for this setting is: Enabled: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Configure the behavior of the sudo command' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'Sudo.admx' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Sudo\Enabled' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Turn off API Sampling' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines if API data sampling is sent to Microsoft. API sampling + monitors the sampled collection of APIs used during system runtime to help diagnose + compatibility problems in Windows. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App and Device Inventory\Turn off API Sampling' + Note: This Group Policy path is provided by the Group Policy template + 'AppDeviceInventory.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat\DisableAPISamping' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Turn off Application Footprint' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines if Application Footprint data is sent to Microsoft. + Application Footprint monitors a sampled collection of registry and file activity to help + diagnose compatibility problems. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App and Device Inventory\Turn off Application Footprint' + Note: This Group Policy path is provided by the Group Policy template + 'AppDeviceInventory.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat\DisableApplicationFootprint' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Turn off Install Tracing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines if Install Tracing data is sent to Microsoft. Install Tracing + tracks application installs to help diagnose compatibility problems. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App and Device Inventory\Turn off Install Tracing' + Note: This Group Policy path is provided by the Group Policy template + 'AppDeviceInventory.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat\DisableInstallTracing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: CIS - Ensure 'Allow a Windows app to share application data between users' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy manages a Windows app's ability to share data between users who have installed the + app. Data is shared through the SharedLocal folder. This folder is available through the + Windows.Storage API. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Package Deployment\Allow a Windows app to share application data between users' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CurrentVersion\\AppModel\\StateManager\\AllowSharedLocalAppData' AND data == 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Not allow per-user unsigned packages to install by default (requires explicitly allow per install)' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting manages a user's ability to install unsigned Windows App packages. + The recommended state for this setting is: Enabled. + Note: Unsigned Windows App packages will require an explicit allow per install if this setting is disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Package Deployment\Not allow per-user unsigned packages to install by default (requires explicitly allow per install)' + Note: This Group Policy path is provided by the Group Policy template + 'AppxPackageManager.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Appx\DisablePerUserUnsignedPackagesByDefault' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: CIS - Ensure 'Prevent non-admin users from installing packaged Windows apps' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting manages non-Administrator users' ability to install Windows app packages. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Package Deployment\Prevent non-admin users from installing packaged Windows apps' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Appx\\BlockNonAdminUserInstall' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Let Windows apps activate with voice while the system is locked' is set to 'Enabled Force Deny' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Windows apps can be activated by voice (apps and Cortana) while the system is locked. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled Force Deny': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App Privacy\Let Windows apps activate with voice while the system is locked' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppPrivacy\\LetAppsActivateWithVoiceAboveLock' AND data == 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Allow Microsoft accounts to be optional' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting lets you control whether Microsoft accounts are optional for Windows Store + apps that require an account to sign in. This policy only affects Windows Store apps that support it. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App runtime\Allow Microsoft accounts to be optional' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\MSAOptional' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Block launching Universal Windows apps with Windows Runtime API access from hosted content' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Microsoft Store apps with Windows Runtime API access directly from web content can be launched. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\App runtime\Block launching Universal Windows apps with Windows Runtime API access from hosted content' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\BlockHostedAppAccessWinRT' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: CIS - Ensure 'Disallow Autoplay for non-volume devices' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting disallows AutoPlay for MTP devices like cameras or phones. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\AutoPlay Policies\Disallow Autoplay for non-volume devices' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\\NoAutoplayfornonVolume' AND data != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Set the default behavior for AutoRun' is set to 'Enabled Do not execute any autorun commands' + # platforms: win11 + platform: windows + description: | + This policy setting sets the default behavior for Autorun commands. Autorun commands are + generally stored in autorun.inf files. They often launch the installation program or other routines. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled Do not execute any autorun commands': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\AutoPlay Policies\Set the default behavior for AutoRun' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoAutorun' AND data == 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: CIS - Ensure 'Turn off Autoplay' is set to 'Enabled All drives' + # platforms: win11 + platform: windows + description: | + This policy setting sets the default behavior for Autorun commands. Autorun commands are + generally stored in autorun.inf files. They often launch the installation program or other routines. + resolution: | + Automatic method: + Ask your system administrator to establish the recommended configuration via GP, set the following UI path to 'Enabled All drives': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\AutoPlay Policies\Turn off Autoplay' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoDriveTypeAutoRun' AND data == 255); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure enhanced anti-spoofing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether enhanced anti-spoofing is configured for devices which support it. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Biometrics\Facial Features\Configure enhanced anti-spoofing' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Biometrics.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Biometrics\\FacialFeatures\EnhancedAntiSpoofing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow access to BitLocker-protected fixed data drives from earlier versions of Windows' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures whether or not fixed data drives formatted with the FAT file system can be unlocked and viewed on computers running Windows Server 2008 (non-R2), Windows Vista, Windows XP with Service Pack 3 (SP3), or Windows XP with Service Pack 2 (SP2) operating systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Allow access to BitLocker-protected fixed data drives from earlier versions of Windows' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVDiscoveryVolumeType' AND data = ''); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected fixed data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for fixed data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for fixed data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRecovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Allow data recovery agent' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected fixed data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)'': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker-protected fixed drives can be recovered: Allow data recovery agent' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\FVE\FDVManageDRA' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Recovery Password' is set to 'Enabled: Allow 48-digit recovery password' or higher + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + The recommended state for this setting is: Enabled: Allow 48-digit recovery password or Enabled: Require 48-digit recovery password. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Allow 48-digit recovery password or Enabled: Require 48-digit recovery password: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker-protected fixed drives can be recovered: Recovery Password' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRecoveryPassword' AND data in (1,2)); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Recovery Key' is set to 'Enabled: Allow 256-bit recovery key or higher' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Allow 256-bit recovery key' or 'Enabled: Require 256-bit recovery key': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Recovery Key' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRecoveryKey' AND data in (1,2)); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Omit recovery options from the BitLocker setup wizard' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)'': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Omit recovery options from the BitLocker setup wizard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVHideRecoveryPage' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Save BitLocker recovery information to AD DS for fixed data drives' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for fixed data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Save BitLocker recovery information to AD DS for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Configure storage of BitLocker recovery information to AD DS' is set to 'Enabled: Backup recovery passwords and key packages' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for fixed data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Backup recovery passwords and key packages': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVActiveDirectoryInfoToStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected fixed drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for fixed data drives' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for fixed data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)'': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Choose how BitLocker- protected fixed drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVRequireActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of hardware-based encryption for fixed data drives' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage BitLocker's use of hardware-based encryption on fixed data drives and specify which encryption algorithms it can use with hardware-based encryption. Using hardware-based encryption can improve performance of drive operations that involve frequent reading or writing of data to the drive. + You can specify additional options that control whether BitLocker software-based encryption is used instead of hardware-based encryption on computers that do not support hardware-based encryption and whether you want to restrict the encryption algorithms and cipher suites used with hardware-based encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of hardware-based encryption for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVHardwareEncryption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of passwords for fixed data drives' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether a password is required to unlock BitLocker-protected fixed data drives. + Note: This setting is enforced when turning on BitLocker, not when unlocking a volume. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of passwords for fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVPassphrase' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on fixed data drives' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify whether smart cards can be used to authenticate user access to the BitLocker-protected fixed data drives on a computer. Smart cards can be used to authenticate user access to the drive. You can require smart card authentication by selecting the "Require use of smart cards on fixed data drives" check box. + Note: This setting is enforced when turning on BitLocker, not when unlocking a drive. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of smart cards on fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\Microsoft\\FVE\FDVAllowUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on fixed data drives: Require use of smart cards on fixed data drives' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify whether smart cards must be used to authenticate user access to the BitLocker-protected fixed data drives on a computer. Smart cards can be used to authenticate user access to the drive. You can require a smart card authentication by selecting the "Require use of smart cards on fixed data drives" check box. + Note: This setting is enforced when turning on BitLocker, not when unlocking a drive. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: True (checked): + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Fixed Data Drives\Configure use of smart cards on fixed data drives: Require use of smart cards on fixed data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\FDVEnforceUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow enhanced PINs for startup' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure whether or not enhanced startup PINs are used with BitLocker. + Enhanced startup PINs permit the use of characters including uppercase and lowercase letters, symbols, numbers, and spaces. This policy setting is applied when you turn on BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Allow enhanced PINs for startup' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\UseEnhancedPin' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Secure Boot for integrity validation' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure whether Secure Boot will be allowed as the platform integrity provider for BitLocker operating system drives. Secure Boot ensures that the PC's pre-boot environment only loads firmware that is digitally signed by authorized software publishers. Secure Boot also provides more flexibility for managing pre-boot configuration than legacy BitLocker integrity checks. Secure Boot requires a system that meets the UEFI 2.3.1 Specifications for Class 2 and Class 3 computers. + When this policy is enabled and the hardware is capable of using Secure Boot for BitLocker scenarios, the "Use enhanced Boot Configuration Data validation profile" group policy setting is ignored and Secure Boot verifies BCD settings according to the Secure Boot policy setting, which is configured separately from BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Allow Secure Boot for integrity validation' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSAllowSecureBootForIntegrity' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + The "Allow certificate-based data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected operating system drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + In "Save BitLocker recovery information to Active Directory Domain Services", choose which BitLocker recovery information to store in AD DS for operating system drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for operating system drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRecovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Allow data recovery agent' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + The "Allow certificate-based data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected operating system drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Allow data recovery agent' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSManageDRA' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Recovery Password' is set to 'Enabled: Require 48-digit recovery password' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Require 48-digit recovery password': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Recovery Password' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRecoveryPassword' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Recovery Key' is set to 'Enabled: Do not allow 256-bit recovery key' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Do not allow 256-bit recovery key': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Recovery Key' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRecoveryKey' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Omit recovery options from the BitLocker setup wizard' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Omit recovery options from the BitLocker setup wizard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSHideRecoveryPage' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Save BitLocker recovery information to AD DS for operating system drives' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services", choose which BitLocker recovery information to store in AD DS for operating system drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Save' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSActiveDirectoryBackup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' is set to 'Enabled: Store recovery passwords and key packages' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services", choose which BitLocker recovery information to store in AD DS for operating system drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. Storing the key package supports recovering data from a drive that has been physically corrupted. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Store recovery passwords and key packages': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSActiveDirectoryInfoToStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected operating system drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for operating system drives' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected operating system drives are recovered in the absence of the required startup key information. This policy setting is applied when you turn on BitLocker. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for operating system drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Choose how BitLocker-protected operating system drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for operating system drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSRequireActiveDirectoryBackup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of hardware-based encryption for operating system drives' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage BitLocker's use of hardware-based encryption on operating system drives and specify which encryption algorithms it can use with hardware-based encryption. Using hardware-based encryption can improve performance of drive operations that involve frequent reading or writing of data to the drive. + You can specify additional options that control whether BitLocker software-based encryption is used instead of hardware-based encryption on computers that do not support hardware-based encryption and whether you want to restrict the encryption algorithms and cipher suites used with hardware-based encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Configure use of hardware-based encryption for operating system drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSHardwareEncryption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of passwords for operating system drives' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the constraints for passwords used to unlock BitLocker-protected operating system drives. + Note: This setting is enforced when turning on BitLocker, not when unlocking a volume. BitLocker will allow unlocking a drive with any of the protectors available on the drive. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Configure use of passwords for operating system drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\OSPassphrase' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require additional authentication at startup' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure whether BitLocker requires additional authentication each time the computer starts and whether you are using BitLocker with or without a Trusted Platform Module (TPM). This policy setting is applied when you turn on BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Require additional authentication at startup' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\UseAdvancedStartup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require additional authentication at startup: Allow BitLocker without a compatible TPM' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure whether you can use BitLocker without a Trusted Platform Module (TPM), instead using a password or startup key on a USB flash drive. This policy setting is applied when you turn on BitLocker. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Require additional authentication at startup: Allow BitLocker without a compatible TPM' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\EnableBDEWithNoTPM' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow access to BitLocker-protected removable data drives from earlier versions of Windows' is set to 'Disabled' (Automated) + # platforms: win11 + platform: windows + description: | + This policy setting configures whether or not removable data drives formatted with the FAT file system can be unlocked and viewed on computers running Windows Server 2008 (non-R2), Windows Vista, Windows XP with Service Pack 3 (SP3), or Windows XP with Service Pack 2 (SP2) operating systems. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Allow access to BitLocker-protected removable data drives from earlier versions of Windows' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVDiscoveryVolumeType' AND data = ''); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected removable data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for removable data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for removable data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRecovery' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Allow data recovery agent' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + The "Allow data recovery agent" check box is used to specify whether a Data Recovery Agent can be used with BitLocker-protected removable data drives. Before a Data Recovery Agent can be used it must be added from the Public Key Policies item in either the Group Policy Management Console or the Local Group Policy Editor. Consult the BitLocker Drive Encryption Deployment Guide on Microsoft TechNet for more information about adding Data Recovery Agents. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Allow data recovery agent' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVManageDRA' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Recovery Password' is set to 'Enabled: Do not allow 48- digit recovery password' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Do not allow 48-digit recovery password': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Recovery Password' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRecoveryPassword' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Recovery Key' is set to 'Enabled: Do not allow 256-bit recovery key' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Configure user storage of BitLocker recovery information" select whether users are allowed, required, or not allowed to generate a 48-digit recovery password or a 256-bit recovery key. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Do not allow 256-bit recovery key': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Recovery Key' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRecoveryKey' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Omit recovery options from the BitLocker setup wizard' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select "Omit recovery options from the BitLocker setup wizard" to prevent users from specifying recovery options when they enable BitLocker on a drive. This means that you will not be able to specify which recovery option to use when you enable BitLocker, instead BitLocker recovery options for the drive are determined by the policy setting. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Omit recovery options from the BitLocker setup wizard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVHideRecoveryPage' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Save BitLocker recovery information to AD DS for removable data drives' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for removable data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Save BitLocker recovery information to AD DS for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' is set to 'Enabled: Backup recovery passwords and key packages' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + In "Save BitLocker recovery information to Active Directory Domain Services" choose which BitLocker recovery information to store in AD DS for removable data drives. If you select "Backup recovery password and key package", both the BitLocker recovery password and key package are stored in AD DS. If you select "Backup recovery password only", only the recovery password is stored in AD DS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Backup recovery passwords and key packages': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Configure storage of BitLocker recovery information to AD DS:' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVActiveDirectoryInfoToStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Choose how BitLocker-protected removable drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for removable data drives' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control how BitLocker-protected removable data drives are recovered in the absence of the required credentials. This policy setting is applied when you turn on BitLocker. + Select the "Do not enable BitLocker until recovery information is stored in AD DS for removable data drives" check box if you want to prevent users from enabling BitLocker unless the computer is connected to the domain and the backup of BitLocker recovery information to AD DS succeeds. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Choose how BitLocker-protected removable drives can be recovered: Do not enable BitLocker until recovery information is stored to AD DS for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVRequireActiveDirectoryBackup' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of hardware-based encryption for removable data drives' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage BitLocker's use of hardware-based encryption on removable data drives and specify which encryption algorithms it can use with hardware- based encryption. Using hardware-based encryption can improve performance of drive operations that involve frequent reading or writing of data to the drive. + You can specify additional options that control whether BitLocker software-based encryption is used instead of hardware-based encryption on computers that do not support hardware-based encryption and whether you want to restrict the encryption algorithms and cipher suites used with hardware-based encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of hardware-based encryption for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVHardwareEncryption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of passwords for removable data drives' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify whether a password is required to unlock BitLocker-protected removable data drives. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of passwords for removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVPassphrase' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on removable data drives' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether smart cards can be used to authenticate user access to BitLocker-protected removable data drives on a computer. + Smart cards can be used to authenticate user access to the drive. You can require smart card authentication by selecting the "Require use of smart cards on removable data drives" check box. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of smart cards on removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVAllowUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure use of smart cards on removable data drives: Require use of smart cards on removable data drives' is set to 'Enabled: True' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether smart cards must be used to authenticate user access to BitLocker-protected removable data drives on a computer. + Smart cards can be used to authenticate user access to the drive. You can require smart card authentication by selecting the "Require use of smart cards on removable data drives" check box. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: True (checked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Configure use of smart cards on removable data drives: Require use of smart cards on removable data drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVEnforceUserCert' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Deny write access to removable drives not protected by BitLocker' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures whether BitLocker protection is required for a computer to be able to write data to a removable data drive. + All removable data drives that are not BitLocker-protected will be mounted as read-only. If the drive is protected by BitLocker, it will be mounted with read and write access. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Deny write access to removable drives not protected by BitLocker' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Policies\\Microsoft\\FVE\RDVDenyWriteAccess' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Deny write access to removable drives not protected by BitLocker: Do not allow write access to devices configured in another organization' is set to 'Enabled: False' + # platforms: win11 + platform: windows + description: | + This policy setting configures whether the computer will be able to write data to BitLocker- protected removable drives that were configured in another organization. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: False (unchecked)': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Removable Data Drives\Deny write access to removable drives not protected by BitLocker: Do not allow write access to devices configured in another organization' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\RDVDenyCrossOrg' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disable new DMA devices when this computer is locked' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to block direct memory access (DMA) for all hot pluggable PCI downstream ports until a user logs into Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\BitLocker Drive Encryption\Disable new DMA devices when this computer is locked' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template VolumeEncryption.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\FVE\DisableExternalDMAUnderLock' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_BitLocker + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Use of Camera' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the use of Camera devices on the machine are + permitted. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Camera\Allow Use of Camera' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Camera\AllowCamera' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off cloud consumer account state content' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether cloud consumer account state content is allowed in all Windows experiences. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off cloud consumer account state content' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\\Windows\\CloudContent\DisableConsumerAccountStateContent' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off cloud optimized content' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting turns off cloud optimized content in all Windows experiences. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off cloud optimized content' + query: | + Select 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent\DisableCloudOptimizedContent' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Microsoft consumer experiences' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting turns off experiences that help consumers make the most of their devices and Microsoft account. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off Microsoft consumer experiences' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent\DisableWindowsConsumerFeatures' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Require pin for pairing' is set to 'Enabled: First Time' OR 'Enabled: Always' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether or not a PIN is required for pairing to a wireless display device. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: First Time' OR 'Enabled: Always': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Connect\Require pin for pairing' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\Windows\\Connect\RequirePinForPairing' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not display the password reveal button' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure the display of the password reveal button in password entry user experiences. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Credential User Interface\Do not display the password reveal button' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CredUI\DisablePasswordReveal' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enumerate administrator accounts on elevation' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether administrator accounts are displayed when a user attempts to elevate a running application. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Credential User Interface\Enumerate administrator accounts on elevation' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\CredUI\EnumerateAdministrators' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent the use of security questions for local accounts' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether security questions can be used to reset local account passwords. The security question feature does not apply to domain accounts, only local accounts on the workstation. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Credential User Interface\Prevent the use of security questions for local accounts' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\NoLocalPasswordResetQuestions' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Diagnostic Data' is set to 'Enabled: Diagnostic data off (not recommended)' or 'Enabled: Send required diagnostic data' + # platforms: win11 + platform: windows + description: | + This policy setting determines the amount of diagnostic and usage data reported to Microsoft: + - A value of (0) Diagnostic data off (not recommended). Using this value, no diagnostic data is sent from the device. This value is only supported on Enterprise, Education, and Server editions. If you choose this setting, devices in your organization will still be secure. + - A value of (1) Send required diagnostic data. This is the minimum diagnostic data necessary to keep Windows secure, up to date, and performing as expected. Using this value disables the Optional diagnostic data control in the Settings app. + - A value of (3)Send optional diagnostic data. Additional diagnostic data is collected that helps us to detect, diagnose and fix issues, as well as make product improvements. Required diagnostic data will always be included when you choose to send optional diagnostic data. Optional diagnostic data can also include diagnostic log files and crash dumps. Use the Limit Dump Collection and the Limit Diagnostic Log Collection policies for more granular control of what optional diagnostic data is sent. + Windows telemetry settings apply to the Windows operating system and some first party apps. This setting does not apply to third party apps running on Windows 10/11. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 'Diagnostic data off (not recommended)' or Enabled: 'Send required diagnostic data': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Allow Telemetry' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\AllowTelemetry' AND (data = 0 OR data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Authenticated Proxy usage for the Connected User Experience and Telemetry service' is set to 'Enabled: Disable Authenticated Proxy usage' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the Connected User Experience and Telemetry service can automatically use an authenticated proxy to send data back to Microsoft. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable Authenticated Proxy usage': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Configure Authenticated Proxy usage for the Connected User Experience and Telemetry service' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\DisableEnterpriseAuthProxy' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disable OneSettings Downloads' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting controls whether Windows attempts to connect with the OneSettings service to download configuration settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Disable OneSettings Downloads' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\\DisableOneSettingsDownloads' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Do not show feedback notifications' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows an organization to prevent its devices from showing feedback questions from Microsoft. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Do not show feedback notifications' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\DoNotShowFeedbackNotifications' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable OneSettings Auditing' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting controls whether Windows records attempts to connect with the OneSettings service to the Operational EventLog. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Enable OneSettings Auditing' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\\EnableOneSettingsAuditing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Limit Diagnostic Log Collection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting controls whether additional diagnostic logs are collected when more information is needed to troubleshoot a problem on the device. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Limit Diagnostic Log Collection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection\\LimitDiagnosticLogCollection' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Limit Dump Collection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting limits the type of dumps that can be collected when more information is needed to troubleshoot a problem. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled. + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Data Collection and Preview Builds\Limit Dump Collection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection\LimitDumpCollection' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Download Mode' is NOT set to 'Enabled: Internet' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the download method that Delivery Optimization can use in downloads of Windows Updates, Apps and App updates. The following methods are supported: + 0 = HTTP only, no peering. + 1 = HTTP blended with peering behind the same NAT. + 2 = HTTP blended with peering across a private group. Peering occurs on devices in the same Active Directory Site (if exist) or the same domain by default. When this option is selected, peering will cross NATs. To create a custom group use Group ID in combination with Mode 2. + 3 = HTTP blended with Internet Peering. + 99 = Simple download mode with no peering. Delivery Optimization downloads using HTTP only and does not attempt to contact the Delivery Optimization cloud services. + 100 = Bypass mode. Do not use Delivery Optimization and use BITS instead. + resolution: | + To establish the recommended configuration via GP, set the following UI path to any value other than Enabled: Internet (3): + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Delivery Optimization\Download Mode' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DeliveryOptimization.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeliveryOptimization\DODownloadMode' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow Custom SSPs and APs to be loaded into LSASS' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the configuration under which the Local Security Authority Subsystem Service (LSASS) will load custom Security Support Provider/Authentication Package (SSP/AP). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\System\Local Security Authority\Allow Custom SSPs and APs to be loaded into LSASS' + + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\Policies\\Microsoft\\Windows\\System\\AllowCustomSSPsAPs' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configures LSASS to run as a protected process' is set to 'Enabled: Enabled with UEFI Lock' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the Local Security Authority Subservice Service + (LSASS) runs in protected mode and also has the option to lock in protected mode with + Unified Extensible Firmware Interface (UEFI). The Local Security Authority (LSA), which + includes the LSASS process, validates users for local and remote sign-ins and enforces + local security policies. + The recommended state for this setting is: Enabled: Enabled with UEFI Lock. + Note: This additional protection to prevent reading memory and code injection by non- + protected processes is supported by Windows 8.1 (or newer). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: Enabled with UEFI Lock: + 'Computer Configuration\Policies\Administrative Templates\System\Local Security Authority\Configures LSASS to run as a protected process' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template LocalSecurityAuthority.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates v1.0 (or newer). + Note 2: In the Microsoft Windows 11 Release 23H2 Administrative Templates, the + registry location of 'HKLM\SYSTEM\CurrentControlSet\Control\Lsa:RunAsPPL' was set + for Configures LSASS to run as a protected process. This same registry location and + value was also created if the setting Ensure 'LSA Protection' is set to 'Enabled' was also + applied. This appears to have been a mistake in the ADMX/ADML Templates for that release. + Starting with the Microsoft Windows 11 Release 24H2 Administrative Templates, the + setting Configures LSASS to run as a protected process has a new registry location of + 'HKLM\Software\Policies\Microsoft\Windows\System'. In addition, the setting LSA + Protection will be displayed by GPME when this setting (Configures LSASS to run as a protected process) is configured. + If Configures LSASS to run as a protected process was configured using an older + version of the ADML/ADML templates, the new registry location will not auto-apply to + the system, and assessment scans using the latest benchmark might fail. To fix this + issue, the ADMX/ADML templates must be updated to the latest version, the setting + removed from the GPO, and then added back in. + If the Microsoft Windows 10 Benchmark is applied, LSA Protection is configured via a + separate recommendation for older versions of the Windows 10 Operating System + using the SecGuide.admx/adml templates. That configuration is checked for separately + from this recommendation. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Application: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Application\Control Event Log behavior when the log file reaches its maximum size' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Retain old events, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\Policies\\Microsoft\\Windows\\EventLog\\Application\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Application: Specify the maximum log file size (KB)' is set to 'Enabled: 32,768 or greater' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 32,768 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Application\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Application\\MaxSize' AND data >= 32768 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Security: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Security\Control Event Log behavior when the log file reaches its maximum size' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Retain old events, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Security\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Security: Specify the maximum log file size (KB)' is set to 'Enabled: 196,608 or greater' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 196,608 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Security\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Security\MaxSize' AND data >= 196608 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Setup: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Setup\Control Event Log behavior when the log file reaches its maximum size + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Retain old events, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Setup\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Setup: Specify the maximum log file size (KB)' is set to 'Enabled: 32,768 or greater' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 32,768 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\Setup\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\Setup\MaxSize' AND data >= 32768); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'System: Control Event Log behavior when the log file reaches its maximum size' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls Event Log behavior when the log file reaches its maximum size. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\System\Control Event Log behavior when the log file reaches its maximum size' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\System\Retention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'System: Specify the maximum log file size (KB)' is set to 'Enabled: 32,768 or greater' + # platforms: win11 + platform: windows + description: | + This policy setting specifies the maximum size of the log file in kilobytes. The maximum log file size can be configured between 1 megabyte (1,024 kilobytes) and 4 terabytes (4,194,240 kilobytes) in kilobyte increments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 32,768 or greater: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Event Log Service\System\Specify the maximum log file size (KB)' + Note: This Group Policy path is provided by the Group Policy template EventLog.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Maximum Log Size (KB), but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\EventLog\\System\MaxSize' AND data >= 32768 ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Data Execution Prevention for Explorer' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Disabling Data Execution Prevention can allow certain legacy plug-in applications to function without terminating Explorer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off Data Execution Prevention for Explorer' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Explorer.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\NoDataExecutionPrevention' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not apply the Mark of the Web tag to files copied from insecure sources' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether files that are sourced from insecure locations are tagged with Mark of the Web (MOTW). + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Do not apply the Mark of the Web tag to files copied from insecure sources' + Note: This Group Policy path is provided by the Group Policy template + 'Explorer.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer\DisableMotWOnInsecurePathCopy' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Turn off account-based insights, recent, favorite, and recommended files in File Explorer' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether or not File Explorer will request files from the cloud and display them in Quick access view. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off account-based insights, recent, favorite, and recommended files in File Explorer' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\\DisableGraphRecentItems' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Turn off heap termination on corruption' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + Without heap termination on corruption, legacy plug-in applications may continue to function when a File Explorer session has become corrupt. Ensuring that heap termination on corruption is active will prevent this. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off heap termination on corruption' + Note: This Group Policy path is provided by the Group Policy template Explorer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer\NoHeapTerminationOnCorruption' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off shell protocol protected mode' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure the amount of functionality that the shell protocol can have. When using the full functionality of this protocol, applications can open folders and launch files. The protected mode reduces the functionality of this protocol allowing applications to only open a limited set of folders. Applications are not able to open files with this protocol when it is in the protected mode. It is recommended to leave this protocol in the protected mode to increase the security of Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\File Explorer\Turn off shell protocol protected mode' + Note: This Group Policy path is provided by the Group Policy template WindowsExplorer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\PreXPSP2ShellProtocolBehavior' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent the computer from joining a homegroup' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + By default, users can add their computer to a HomeGroup on a home network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\HomeGroup\Prevent the computer from joining a homegroup' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Sharing.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\HomeGroup\DisableHomeGroup' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off location' is set to 'Enabled + # platforms: win11 + platform: windows + description: | + This policy setting turns off the location feature for the computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Location and Sensors\Turn off location' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Sensors.admx/adml that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\LocationAndSensors\DisableLocation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Block all consumer Microsoft account user authentication' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting determines whether applications and services on the device can utilize new consumer Microsoft account authentication via the Windows OnlineID and WebAccountManager APIs. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft accounts\Block all consumer Microsoft account user authentication' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template MSAPolicy.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\MicrosoftAccount\\DisableUserAuth' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Enable EDR in block mode' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Microsoft Defender Antivirus Endpoint Detection and Response (EDR) is enabled in block mode (passive remediation). + The recommended state for this setting is: Enabled. + Note: EDR in block mode is only available in Microsoft Defender for Endpoint Plan 2. + Note 2: This setting is available with Microsoft Defender Antivirus platform release v4.18.2202.X and newer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Features\Enable EDR in block mode' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Features\PassiveRemediation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Configure local setting override for reporting to Microsoft MAPS' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures a local override for the configuration to join Microsoft Active Protection Service, which Microsoft renamed to Windows Defender Antivirus Cloud Protection Service and then Microsoft Defender Antivirus Cloud Protection Service. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\MAPS\Configure local setting override for reporting to Microsoft MAPS' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet\\LocalSettingOverrideSpynetReporting' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Join Microsoft MAPS' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to join Microsoft Active Protection Service (MAPS), which Microsoft renamed to Windows Defender Antivirus Cloud Protection Service and then Microsoft Defender Antivirus Cloud Protection Service. + Microsoft MAPS / Microsoft Defender Antivirus Cloud Protection Service is the online community that helps you choose how to respond to potential threats. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\MAPS\Join Microsoft MAPS' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + -- The registry key is not present when policy is disabled, so query below is returning 1 when policy is disabled and registry value does not exist. It also return 1 in case policy is enabled and its registry value is 1 or 2 + SELECT 1 WHERE ( + NOT EXISTS ( SELECT 1 FROM registry WHERE key = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet' COLLATE NOCASE AND name = 'SpynetReporting' ) + ) OR ( + NOT EXISTS ( SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet\\SpynetReporting' COLLATE NOCASE AND data != 0 ) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Attack Surface Reduction Rules' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the state for the Attack Surface Reduction (ASR) rules. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Microsoft Defender Exploit Guard\Attack Surface Reduction\Configure Attack Surface Reduction rules' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\ExploitGuard_ASR_Rules' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Attack Surface Reduction rules: Set the state for each ASR rule' is configured + # platforms: win11 + platform: windows + description: | + This policy setting sets the Attack Surface Reduction rules. + resolution: | + To establish the recommended configuration via GP, set the following UI path so that + 26190899-1602-49e8-8b27-eb1d0a1ce869, + 3b576869-a4ec-4529-8536-b80a7769e899, + 5beb7efe-fd9a-4556-801d-275e5ffc04cc, + 75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84, + 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c, + 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b, + 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2, + b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4, + be9ba2d9-53ea-4cdc-84e5-9b1eeee46550, + d3e037e1-3eb8-44c8-a917-57927947596d, + d4f940ab-401b-4efc-aadc-ad5f3c50688a, and + e6db77e5-3df2-4cf1-b95a-636979351e5b are each set to a value of 1: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Microsoft Defender Exploit Guard\Attack Surface Reduction\Configure Attack Surface Reduction rules: Set the state for each ASR rule' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 + WHERE EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\ExploitGuard_ASR_Rules' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\26190899-1602-49e8-8b27-eb1d0a1ce869' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\3b576869-a4ec-4529-8536-b80a7769e899' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\5beb7efe-fd9a-4556-801d-275e5ffc04cc' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\be9ba2d9-53ea-4cdc-84e5-9b1eeee46550' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\d3e037e1-3eb8-44c8-a917-57927947596d' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\d4f940ab-401b-4efc-aadc-ad5f3c50688a' AND data = 1 + ) AND EXISTS ( + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\ASR\\Rules\\e6db77e5-3df2-4cf1-b95a-636979351e5b' AND data = 1 + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent users and apps from accessing dangerous websites' is set to 'Enabled: Block' + # platforms: win11 + platform: windows + description: | + This policy setting controls Microsoft Defender Exploit Guard network protection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Block' + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender Antivirus\Windows Defender Exploit Guard\Network Protection\Prevent users and apps from accessing dangerous websites' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender Exploit Guard\\Network Protection\\EnableNetworkProtection' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Message Service Cloud Sync' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows backup and restore of cellular text messages to Microsoft's cloud services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Messaging\Allow Message Service Cloud Sync' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Messaging.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Messaging\AllowMessageSync' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable file hash computation feature' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting determines whether hash values are computed for files scanned by Microsoft Defender. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\MpEngine\Enable file hash computation feature' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\MpEngine\\EnableFileHashComputation' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Convert warn verdict to block' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Microsoft Defender Antivirus network protection will display a warning, or block network traffic. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Network Inspection System\Convert warn verdict to block' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\NIS\EnableConvertWarnToBlock' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Configure real-time protection and Security Intelligence Updates during OOBE' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures whether Real-time Protection and Security Intelligence Updates are enabled during the Out of Box experience (OOBE). + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Configure real-time protection and Security Intelligence Updates during OOBE' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection\OobeEnableRtpAndSigUpdate' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Scan all downloaded files and attachments' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures scanning for all downloaded files and attachments. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Scan all downloaded files and attachments' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableIOAVProtection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn off real-time protection' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures real-time protection prompts for known malware detection. + Microsoft Defender Antivirus alerts you when malware or potentially unwanted software attempts to install itself or to run on your computer. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Turn off real- time protection' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableRealtimeMonitoring' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn on behavior monitoring' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure behavior monitoring for Microsoft Defender Antivirus. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Turn on behavior monitoring' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableBehaviorMonitoring' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn on script scanning' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows script scanning to be turned on/off. Script scanning intercepts scripts then scans them before they are executed on the system. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Real-Time Protection\Turn on script scanning' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\\DisableScriptScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Brute-Force Protection aggressiveness' is set to 'Enabled: Medium' or higher + # platforms: win11 + platform: windows + description: | + This policy setting configures whether Brute-Force Protection in Microsoft Defender Antivirus is enabled. + Brute-force protection can detect and block attempts to forcibly sign in to a system. + The recommended state for this setting is: Enabled: Medium. Configuring this setting to High also conforms to the benchmark. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Medium' or higher: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Remediation\Behavioral Network Blocks\Brute-Force Protection\Configure Brute-Force Protection aggressiveness' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Remediation\Behavioral Network Blocks\Brute Force Protection\BruteForceProtectionAggressiveness' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Configure Remote Encryption Protection Mode' is set to 'Enabled: Audit' or higher + # platforms: win11 + platform: windows + description: | + This policy setting configures the Brute-Force Protection feature in Microsoft Defender Antivirus. + Brute-Force Protection can detect and block attempts to forcibly initiate sign-ins and sessions. + The recommended state for this setting is: 'Enabled: Audit'. Configuring this setting to Block also conforms to the benchmark. + Note: Configuring the value to either Default or Off does not conform to this benchmark. + Note 2: This setting's name is duplicated in the 'Remote Encryption Protection' section, but they configure two different behaviors. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Audit' or higher: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Remediation\Behavioral Network Blocks\Brute-Force Protection\Configure Remote Encryption Protection Mode' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Remediation\Behavioral Network Blocks\Brute Force Protection\BruteForceProtectionConfiguredState' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Configure how aggressively Remote Encryption Protection blocks threats' is set to 'Enabled: Medium' or higher + # platforms: win11 + platform: windows + description: | + This policy setting configures how aggressively Remote Encryption Prevention Protection blocks malicious IP addresses. + The recommended state for this setting is: 'Enabled: Medium' or higher. Configuring this setting to High also conforms to the benchmark + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Medium' or higher: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Remediation\Behavioral Network Blocks\Remote Encryption Protection\Configure how aggressively Remote Encryption Protection blocks threats' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Remediation\Behavioral Network Blocks\Remote Encryption Protection\RemoteEncryptionProtectionAggressiveness' AND data IN (1, 2)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Configure Watson events' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure whether or not Watson events are sent. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Reporting\Configure Watson events' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Reporting\\DisableGenericRePorts' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Scan excluded files and directories during quick scans' is set to 'Enabled: 1' + # platforms: win11 + platform: windows + description: | + This policy setting manages whether or not Microsoft Defender Antivirus scans excluded files and directories when running a Quick Scan. + The recommended state for this setting is: Enabled: 1. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 1': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Scan excluded files and directories during quick scans' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Scan\QuickScanIncludeExclusions' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Scan removable drives' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether or not to scan for malicious software and unwanted software in the contents of removable drives, such as USB flash drives, when running a full scan. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Scan removable drives' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Scan\\DisableRemovableDriveScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Trigger a quick scan after X days without any scans' is set to 'Enabled: 7' + # platforms: win11 + platform: windows + description: | + This policy setting configures the number of days after the last scan (of any type) before an aggressive Quick Scan is automatically triggered. + The recommended state for this setting is: 'Enabled: 7 days'. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 7 days': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Trigger a quick scan after X days without any scans' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Scan\DaysUntilAggressiveCatchupQuickScan' AND data = 7); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Turn on e-mail scanning' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure e-mail scanning. When e-mail scanning is enabled, the engine will parse the mailbox and mail files, according to their specific format, in order to analyze the mail bodies and attachments. Several e-mail formats are currently supported, for example: pst (Outlook), dbx, mbx, mime (Outlook Express), binhex (Mac). + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Scan\Turn on e-mail scanning' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Scan\\DisableEmailScanning' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Configure detection for potentially unwanted applications' is set to 'Enabled: Block' + # platforms: win11 + platform: windows + description: | + This policy setting controls detection and action for Potentially Unwanted Applications (PUA), which are sneaky unwanted application bundlers or their bundled applications, that can deliver adware or malware. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Block': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Configure detection for potentially unwanted applications' + Note: This Group Policy path is provided by the Group Policy template WindowsDefender.admx/adml that is included with the Microsoft Windows 10 Release 1809 & Server 2019 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\PUAProtection' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Control whether exclusions are visible to local users' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Microsoft Defender Antivirus exclusions are visible to local users on the system. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Antivirus\Control whether exclusions are visible to local users' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsDefender.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\HideExclusionsFromLocalUsers' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Allow auditing events in Microsoft Defender Application Guard' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to decide whether auditing events can be collected from Microsoft Defender Application Guard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow auditing events in Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AuditApplicationGuard' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow camera and microphone access in Microsoft Defender Application Guard' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + The policy allows you to determine whether applications inside Microsoft Defender Application Guard can access the device’s camera and microphone. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow camera and microphone access in Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1809 & Server 2019 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AllowCameraMicrophoneRedirection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow data persistence for Microsoft Defender Application Guard' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to decide whether data should persist across different sessions in Microsoft Defender Application Guard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow data persistence for Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AllowPersistence' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow files to download and save to the host operating system from Microsoft Defender Application Guard' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether to save downloaded files to the host operating system from the Microsoft Defender Application Guard container. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Allow files to download and save to the host operating system from Microsoft Defender Application Guard' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1803 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\SaveFilesToHost' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Microsoft Defender Application Guard clipboard settings: Clipboard behavior setting' is set to 'Enabled: Enable clipboard operation from an isolated session to the host' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to decide how the clipboard behaves while in Microsoft Defender Application Guard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Enable clipboard operation from an isolated session to the host': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Configure Microsoft Defender Application Guard clipboard settings: Clipboard behavior setting' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AppHVSIClipboardSettings' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on Microsoft Defender Application Guard in Managed Mode' is set to 'Enabled: 1' + # platforms: win11 + platform: windows + description: | + This policy setting enables application isolation through Microsoft Defender Application Guard (Application Guard). + There are 4 options available: + - 0. Disable Microsoft Defender Application Guard + - 1. Enable Microsoft Defender Application Guard for Microsoft Edge ONLY + - 2. Enable Microsoft Defender Application Guard for Microsoft Office ONLY + - 3. Enable Microsoft Defender Application Guard for Microsoft Edge AND Microsoft Office + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 1': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft Defender Application Guard\Turn on Microsoft Defender Application Guard in Managed Mode' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AppHVSI.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\AppHVSI\AllowAppHVSI_ProviderSet' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_LEVEL1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable news and interests on the taskbar' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the news and interests feature is allowed on the device. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\News and interests\Enable news and interests on the taskbar' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Messaging.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Feeds\\EnableFeeds' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Prevent the usage of OneDrive for file storage' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting lets you prevent apps and features from working with files on OneDrive using the Next Generation Sync Client. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\OneDrive\Prevent the usage of OneDrive for file storage' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template SkyDrive.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). However, we strongly recommend you only use the version included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). Older versions of the templates had conflicting settings in different template files for both OneDrive & SkyDrive, until it was cleaned up properly in the above version. + Note #2: In older Microsoft Windows Administrative Templates, this setting was named Prevent the usage of SkyDrive for file storage, but it was renamed starting with the Windows 10 RTM (Release 1507) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\OneDrive\\DisableFileSyncNGSC' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn off Push To Install service' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether users can push Apps to the device from the Microsoft Store App running on other devices or the web. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Push to Install\Turn off Push To Install service' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PushToInstall.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\PushToInstall\\DisablePushToInstall' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Allow UI Automation redirection' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether User Interface (UI) Automation client applications running on the local computer can access UI elements on the server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\\Administrative Templates\\Windows Components\\Remote Desktop Services\\Remote Desktop Session Host\\Device and Resource Redirection\\Allow UI Automation redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\EnableUiaRedirection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Do not allow location redirection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the redirection of location data to the remote computer in a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow location redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableLocationRedir' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent downloading of enclosures' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting prevents the user from having enclosures (file attachments) downloaded from an RSS feed to the user's computer. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\RSS Feeds\Prevent downloading of enclosures' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Feeds\\DisableEnclosureDownload' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Turn on Basic feed authentication over HTTP' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether RSS feeds can be authenticated using the Basic authentication scheme over an unencrypted HTTP connection. + The recommended state for this setting is: Disabled. + Note: A developer cannot change this setting through the Feed APIs. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Administrative Templates\Windows Components\RSS Feeds\Turn on Basic feed authentication over HTTP' + Note: This Group Policy path is provided by the Group Policy template + 'InetRes.admx/adml' that is included with the Microsoft Windows 7 & Server 2008 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Feeds\AllowBasicAuthInClear' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Allow Cloud Search' is set to 'Enabled: Disable Cloud Search' + # platforms: win11 + platform: windows + description: | + This policy setting allows search and Cortana to search cloud sources like OneDrive and SharePoint. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', then 'Disable Cloud Search': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow Cloud Search' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowCloudSearch' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Cortana' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Cortana is allowed on the device. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow Cortana' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowCortana' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow Cortana above lock screen' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether or not the user can interact with Cortana using speech while the system is locked. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowCortanaAboveLock' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow indexing of encrypted files' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether encrypted items are allowed to be indexed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow indexing of encrypted files' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowIndexingEncryptedStoresOrItems' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Allow search and Cortana to use location' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether search and Cortana can provide location aware search and Cortana results. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow search and Cortana to use location' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\AllowSearchToUseLocation' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Disable Cloud Clipboard integration for server-to-client data transfer' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether data transferred from the remote session to the client using clipboard redirection is added to the client-side cloud clipboard. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Connection Client\Disable Cloud Clipboard integration for server-to-client data transfer' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\Client\\DisableCloudClipboardIntegration' and data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Do not allow passwords to be saved' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting helps prevent Remote Desktop clients from saving passwords on a computer. + The recommended state for this setting is: Enabled. + Note: If this policy setting was previously configured as Disabled or Not configured, any previously saved passwords will be deleted the first time a Remote Desktop client disconnects from any server. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Connection Client\Do not allow passwords to be saved' + Note: This Group Policy path is provided by the Group Policy template TerminalServer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\DisablePasswordSaving' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Allow users to connect remotely by using Remote Desktop Services' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to configure remote access to computers by using Remote Desktop Services. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections\Allow users to connect remotely by using Remote Desktop Services' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDenyTSConnections' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow COM port redirection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether to prevent the redirection of data to client COM ports from the remote computer in a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow COM port redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableCcm' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow drive redirection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting prevents users from sharing the local drives on their client computers to Remote Desktop Servers that they access. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow drive redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableCdm' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow LPT port redirection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether to prevent the redirection of data to client LPT ports during a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow LPT port redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableLPT' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not allow supported Plug and Play device redirection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to control the redirection of supported Plug and Play devices, such as Windows Portable Devices, to the remote computer in a Remote Desktop Services session. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow supported Plug and Play device redirection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisablePNPRedir' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Always prompt for password upon connection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Remote Desktop Services always prompts the client computer for a password upon connection. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Always prompt for password upon connection' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fPromptForPassword' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Require secure RPC communication' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify whether Remote Desktop Services requires secure Remote Procedure Call (RPC) communication with all clients or allows unsecured communication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Require secure RPC communication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fEncryptRPCTraffic' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Require use of specific security layer for remote (RDP) connections' is set to 'Enabled: SSL' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether to require the use of a specific security layer to secure communications between clients and RD Session Host servers during Remote Desktop Protocol (RDP) connections. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: SSL': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Require use of specific security layer for remote (RDP) connections' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\SecurityLayer' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Require user authentication for remote connections by using Network Level Authentication' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify whether to require user authentication for remote connections to the RD Session Host server by using Network Level Authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Require user authentication for remote connections by using Network Level Authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\UserAuthentication' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Set client connection encryption level' is set to 'Enabled: High Level' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether to require the use of a specific encryption level to secure communications between client computers and RD Session Host servers during Remote Desktop Protocol (RDP) connections. + This policy only applies when you are using native RDP encryption. + However, native RDP encryption (as opposed to SSL encryption) is not recommended. + This policy does not apply to SSL encryption. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', then 'High Level': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security\Set client connection encryption level' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\MinEncryptionLevel' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Set time limit for active but idle Remote Desktop Services sessions' is set to 'Enabled: 15 minutes or less, but not Never (0)' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to specify the maximum amount of time that an active Remote Desktop Services session can be idle (without user input) before it is automatically disconnected. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled', then '15 minutes': + `Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits\Set time limit for active but idle Remote Desktop Services sessions` + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\MaxIdleTime' AND CAST(data AS INTEGER) <= 900000 AND CAST(data AS + INTEGER) != 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Set time limit for disconnected sessions' is set to 'Enabled: 1 minute' + # platforms: win11 + platform: windows + description: | + This setting helps to prevent active Remote Desktop sessions from tying up the computer for long periods of time while not in use, preventing computing resources from being consumed by large numbers of disconnected but still active sessions. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled' and then '1 minute': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits\Set time limit for disconnected sessions' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\MaxDisconnectionTime' AND data = 60000); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Do not delete temp folders upon exit' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether Remote Desktop Services retains a user's per-session temporary folders at logoff. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Temporary Folders\Do not delete temp folders upon exit' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\DeleteTempDirsOnExit' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: artemist-work + +- name: > + CIS - Ensure 'Turn off KMS Client Online AVS Validation' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + The Key Management Service (KMS) is a Microsoft license activation method that entails setting up a local server to store the software licenses. The KMS server itself needs to connect to Microsoft to activate the KMS service, but subsequent on-network clients can activate Microsoft Windows OS and/or their Microsoft Office via the KMS server instead of connecting directly to Microsoft. This policy setting lets you opt-out of sending KMS client activation data to Microsoft automatically. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Software Protection Platform\Turn off KMS Client Online AVS Validation' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template AVSValidationGP.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\CurrentVersion\\Software Protection Platform\NoGenTicket' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Disable all apps from Microsoft Store' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting configures the launch of all apps from the Microsoft Store that came pre-installed or were downloaded. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Disable all apps from Microsoft Store' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\DisableStoreApps' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Automatic Download and Install of updates' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting enables or disables the automatic download and installation of Microsoft Store app updates. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Turn off Automatic Download and Install of updates' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinStoreUI.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates, or by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\AutoDownload' AND data = 4); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the offer to update to the latest version of Windows' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + Enables or disables the Microsoft Store offer to update to the latest version of Windows. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Turn off the offer to update to the latest version of Windows' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinStoreUI.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates, or by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\DisableOSUpgrade' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off the Store application' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting denies or allows access to the Store application. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Store\Turn off the Store application' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinStoreUI.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates, or by the Group Policy template WindowsStore.admx/adml that is included with the Microsoft Windows 10 Release 1511 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsStore\RemoveWindowsStore' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow widgets' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether the widgets feature is allowed on the device. The widgets feature provides information such as, weather, news, sports, stocks, traffic, and entertainment (not an inclusive list). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Widgets\Allow Widgets' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template NewsAndInterests.admx/adml that is actually NOT included with the Microsoft Windows 10 Release 21H2 Administrative Templates (more info on missing settings on Windows 10 21H2: https://4sysops.com/archives/group-policies-for-windows-11-and-10-21h2-compared/) but is included in Windows 11 2022 Update (22H2). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Dsh\AllowNewsAndInterests' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Notify Malicious' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Enhanced Phishing Protection in Microsoft Defender SmartScreen warns users if they type their work or school password into one of the following malicious scenarios: into a reported phishing site, into a Microsoft login URL with an invalid certificate, or into an application connecting to either a reported phishing site or a Microsoft login URL with an invalid certificate. The recommended state for this setting is: Enabled. + Note: This setting only applies to Microsoft Accounts (computer or browser login) while using Microsoft Windows 11 and not on prem domain-joined accounts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Enhanced Phishing Protection\Notify Malicious' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WTDS\\Components\\NotifyMalicious' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Notify Password Reuse' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Enhanced Phishing Protection in Microsoft Defender SmartScreen warns users if they reuse their work or school password. + The recommended state for this setting is: Enabled. + Note: This setting only applies to Microsoft Accounts (computer or browser login) while using Microsoft Windows 11 and not on prem domain-joined accounts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Enhanced Phishing Protection\Notify Password Reuse' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WTDS\\Components\\NotifyPasswordReuse' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Notify Unsafe App' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Enhanced Phishing Protection in Microsoft Defender SmartScreen warns users if they type their work or school passwords in Notepad, WordPad, or M365 Office apps like OneNote, Word, Excel, etc. + The recommended state for this setting is: Enabled. + Note: This setting only applies to Microsoft Accounts (computer or browser login) while using Microsoft Windows 11 and not on prem domain-joined accounts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Enhanced Phishing Protection\Notify Unsafe App' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WTDS\\Components\\NotifyUnsafeApp' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Service Enabled' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Enhanced Phishing Protection is in audit mode. This allows notifications to be sent to users regarding unsafe password events. Additionally, Enhanced Phishing Protection captures unsafe password entry events and sends diagnostic data through Microsoft Defender. + The recommended state for this setting is: Enabled. + Note: This setting only applies to Microsoft accounts (computer or browser login) while using Microsoft Windows 11 and not on-prem domain-joined accounts + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Enhanced Phishing Protection\Service Enabled' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WTDS\\Components\\ServiceEnabled' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Configure Windows Defender SmartScreen' is set to 'Enabled: Warn and prevent bypass' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage the behavior of Windows Defender SmartScreen. Windows Defender SmartScreen helps keep PCs safer by warning users before running unrecognized programs downloaded from the Internet. Some information is sent to Microsoft about files and programs run on PCs with this feature enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Warn and prevent bypass': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Defender SmartScreen\Explorer\Configure Windows Defender SmartScreen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsExplorer.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\EnableSmartScreen' AND data = 1) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\ShellSmartScreenLevel' AND data = 'Block') + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enables or disables Windows Game Recording and Broadcasting' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting enables or disables the Windows Game Recording and Broadcasting features. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Game Recording and Broadcasting\Enables or disables Windows Game Recording and Broadcasting' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template GameDVR.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\GameDVR\AllowGameDVR' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Enable ESS with Supported Peripherals' is set to 'Enabled: 1' + # platforms: win11 + platform: windows + description: | + Enhanced Sign-in Security isolates Windows Hello biometric (face and fingerprint) template data and matching operations to trusted hardware or specified memory regions. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: 1 (Enhanced Sign-in Security Enabled): + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Hello for Business\Enable ESS with Supported Peripherals' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Policies\\PassportForWork\\Biometrics\\EnableESSwithSupportedPeripherals' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Allow suggested apps in Windows Ink Workspace' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether suggested apps in Windows Ink Workspace are allowed. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Ink Workspace\Allow suggested apps in Windows Ink Workspace' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsInkWorkspace.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsInkWorkspace\AllowSuggestedAppsInWindowsInkWorkspace' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Allow user control over installs' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting controls whether users are permitted to change installation options that typically are available only to system administrators. The security features of Windows Installer normally prevent users from changing installation options that are typically reserved for system administrators, such as specifying the directory to which files are installed. If Windows Installer detects that an installation package has permitted the user to change a protected option, it stops the installation and displays a message. These security features operate only when the installation program is running in a privileged security context in which it has access to directories denied to the user. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Allow user control over installs' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was named Enable user control over installs, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\EnableUserControl' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Always install with elevated privileges' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This setting controls whether or not Windows Installer should use system permissions when it installs any program on the system. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Always install with elevated privileges' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\AlwaysInstallElevated' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent Internet Explorer security prompt for Windows Installer scripts' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Web-based programs are allowed to install software on the computer without notifying the user. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Prevent Internet Explorer security prompt for Windows Installer scripts' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Disable IE security prompt for Windows Installer scripts, but it was renamed starting with the Windows 8.0 & Server 2012 (non-R2) Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer\SafeForScripting' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure the transmission of the user's password in the content of MPR notifications sent by winlogon.' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether winlogon includes a user's password in the content + of Multiple Provider Router (MPR) notifications. MPR handles communication between + the Windows operating system and the installed network providers. MPR checks the + registry to determine which providers are installed on the system and the order they are + cycled through. The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Logon Options\Configure the transmission of the user's password in the content of MPR notifications sent by winlogon.' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template WinLogon.admx/adml that is included with the Microsoft Windows 11 Release + 22H2 Administrative Templates v1.0 (or newer). + Note #2: This setting was initially released with the Windows 11 Release 22H2 + Administrative Templates, named Enable MPR notifications for the system. It was + renamed starting with the Windows 11 Release 24H2 Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableMPR' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Sign-in and lock last interactive user automatically after a restart' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether a device will automatically sign-in the last interactive user after Windows Update restarts the system. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Logon Options\Sign-in and lock last interactive user automatically after a restart' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WinLogon.admx/adml that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + Note #2: In older Microsoft Windows Administrative Templates, this setting was initially named Sign-in last interactive user automatically after a system-initiated restart, but it was renamed starting with the Windows 10 Release 1903 Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\System\DisableAutomaticRestartSignOn' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on PowerShell Script Block Logging' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting enables logging of all PowerShell script input to the Applications and Services Logs\Microsoft\Windows\PowerShell\Operational Event Log channel. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on PowerShell Script Block Logging' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PowerShellExecutionPolicy.admx that is included with the Microsoft Windows 8.1 & Server 2012 R2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ScriptBlockLogging\\EnableScriptBlockLogging' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Basic authentication' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) client uses Basic authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Client\Allow Basic authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Client\\AllowBasic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow unencrypted traffic' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) client sends and receives unencrypted messages over the network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Client\Allow unencrypted traffic' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Client\\AllowUnencryptedTraffic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Disallow Digest authentication' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) client will not use Digest authentication. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Client\Disallow Digest authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Client\\AllowDigest' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Basic authentication' in WinRM service is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service accepts Basic authentication from a remote client. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Allow Basic authentication' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\AllowBasic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow remote server management through WinRM' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service + automatically listens on the network for requests on the HTTP transport over the default HTTP + port. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Allow remote server management through WinRM' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\AllowAutoConfig' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow unencrypted traffic' in WinRM service is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service sends and receives unencrypted messages over the network. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Allow unencrypted traffic' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\AllowUnencryptedTraffic' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Disallow WinRM from storing RunAs credentials' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether the Windows Remote Management (WinRM) service will allow RunAs credentials to be stored for any plug-ins. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\Disallow WinRM from storing RunAs credentials' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsRemoteManagement.admx that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer) + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\DisableRunAs' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow Remote Shell Access' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage configuration of remote access to all supported shells to execute scripts and commands. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Remote Shell\Allow Remote Shell Access' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WinRM\\Service\\WinRS\\AllowRemoteShellAccess' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow clipboard sharing with Windows Sandbox' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting enables or disables clipboard sharing with the Windows sandbox. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Sandbox\Allow clipboard sharing with Windows Sandbox' + Note: This Group Policy section is provided by the Group Policy template WindowsSandbox.admx/adml that is included with the Microsoft Windows 11 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Sandbox\\AllowClipboardRedirection' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Allow mapping folders into Windows Sandbox' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether folders are allowed to be mapped into Windows Sandbox. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Sandbox\Allow mapping folders into Windows Sandbox' + Note: This Group Policy path is provided by the Group Policy template + 'WindowsSandbox.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Sandbox\AllowWriteToMappedFolders' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Allow networking in Windows Sandbox' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting enables or disables networking in the Windows Sandbox. Networking is achieved by creating a virtual switch on the host, and connecting the Windows Sandbox to it via a virtual Network Interface Card (NIC). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Sandbox\Allow networking in Windows Sandbox' + Note: This Group Policy section is provided by the Group Policy template WindowsSandbox.admx/adml that is included with the Microsoft Windows 11 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Sandbox\\AllowNetworking' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent users from modifying settings' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting prevent users from making changes to the Exploit protection settings area in the Windows Security settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\\Windows Security\App and browser protection\Prevent users from modifying settings' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsDefenderSecurityCenter.admx/adml that is included with the Microsoft Windows 10 Release 1709 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender Security Center\\App and Browser protection\\DisallowExploitProtectionOverride' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'No auto-restart with logged on users for scheduled automatic updates installations' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies that Automatic Updates will wait for computers to be restarted by the users who are logged on to them to complete a scheduled installation. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Legacy Policies\No auto-restart with logged on users for scheduled automatic updates installations' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\NoAutoRebootWithLoggedOnUsers' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Automatic Updates' is set to 'Enabled: 3' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether computers in your environment will receive security updates from Windows Update or WSUS. If you configure this policy setting to Enabled, the operating system will recognize when a network connection is available and then use the network connection to search Windows Update or your designated intranet site for updates that apply to them. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 3': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Configure Automatic Updates' + query: | + SELECT EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\NoAutoUpdate' AND data = 0) + ) AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\AUOptions' AND data = 3) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Configure Automatic Updates: Scheduled install day' is set to '0 - Every day' + # platforms: win11 + platform: windows + description: | + This policy setting specifies when computers in your environment will receive security updates from Windows Update or WSUS. + resolution: | + To establish the recommended configuration via GP, set the following UI path to '0 - Every day': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Configure Automatic Updates: Scheduled install day' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\NoAutoUpdate' AND data = 0) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\\ScheduledInstallDay' AND data = 0) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Remove access to "Pause updates" feature' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy removes access to "Pause updates" feature. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage end user experience\Remove access to "Pause updates" feature' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\SetDisablePauseUXAccess' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Manage preview builds' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting manage which updates that are receive prior to the update being released. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage updates offered from Windows Update\Manage preview builds' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\ManagePreviewBuildsPolicyValue' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Select when Preview Builds and Feature Updates are received' is set to 'Enabled: 180 or more days' + # platforms: win11 + platform: windows + description: | + This policy setting determines when Preview Build or Feature Updates are received. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 180 or more days': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Manage updates offered from Windows Update\Windows Update for Business\Select when Preview Builds and Feature Updates are received' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferFeatureUpdates' AND CAST(data AS INTEGER) = 1) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferFeatureUpdatesPeriodInDays' AND CAST(data AS INTEGER) >= 180) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Select when Quality Updates are received' is set to 'Enabled: 0 days' + # platforms: win11 + platform: windows + description: | + This settings controls when Quality Updates are received. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: 0 days': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Update\Windows Update for Business\Select when Quality Updates are received' + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferQualityUpdates' AND data = 1) + AND EXISTS ( + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\DeferQualityUpdatesPeriodInDays' AND data = 0) + ); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Enable App Installer' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether user have access to the Windows Package Manager. Windows Package Manager is a package manager solution that consists of a command line tool and set of services for installing applications on Microsoft Windows 10 and 11. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableAppInstaller' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable App Installer Experimental Features' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether users can enable experimental features in the Windows Package Manager. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer Experimental Features' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableExperimentalFeatures' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable App Installer Hash Override' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether or not users can override the SHA256 security validation in the Windows Package Manager settings. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer Hash Override' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableHashOverride' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable App Installer Local Archive Malware Scan Override' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the ability to override malware scans when the following conditions are true: + 1. installing an archive file + 2. using a local manifest + 3. via command line arguments + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer Local Archive Malware Scan Override' + Note: This Group Policy path is provided by the Group Policy template + 'DesktopAppInstaller.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller\EnableLocalArchiveMalwareScanOverride' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Enable App Installer Microsoft Store Source Certificate Validation Bypass' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether Windows Package Manager validates the Microsoft + Store certificate hash to match a known Microsoft Store certificate when it initiates a + connection to the Microsoft Store source. + The recommended state for this setting is: Disabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Enable App Installer Microsoft Store Source Certificate Validation Bypass' + Note: This Group Policy path is provided by the Group Policy template + 'DesktopAppInstaller.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller\EnableBypassCertificatePinningForMicrosoftStore' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Enable App Installer ms-appinstaller protocol' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether users can install packages from a website that is using the ms-appinstaller protocol. The ms-appinstaller protocol allows users to install an application by clicking a link on a website. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable App Installer ms-appinstaller protocol' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template DesktopAppInstaller.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\AppInstaller\\EnableMSAppInstallerProtocol' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Enable Windows Package Manager command line interfaces' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether a user can perform actions using the Windows Package Manager through a command line interface (Windows CLI or PowerShell). + The recommended state for this setting is: Disabled. + Note: This policy does not override the Enable App Installer policy, which is set to Disabled in the L2 profile of the CIS Windows Operating System Benchmarks. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Desktop App Installer\Enable Windows Package Manager command line interfaces' + Note: This Group Policy path is provided by the Group Policy template + 'DesktopAppInstaller.admx/adml' that is included with the Microsoft Windows 11 Release 24H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppInstaller\EnableWindowsPackageManagerCommandLineInterfaces' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Do not allow WebAuthn redirection' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls the redirection of web authentication (WebAuthn) requests from a Remote Desktop session to the local device. This redirection enables users to authenticate to resources inside the Remote Desktop session using their local authenticator (e.g. Windows Hello for Business, security key, or other). + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Do not allow WebAuthn redirection + Note: This Group Policy path is provided by the Group Policy template TerminalServer.admx/adml that is included with the Microsoft Windows 11 Release 22H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services\\fDisableWebAuthn' AND (data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Restrict clipboard transfer from server to client' is set to 'Enabled: Disable clipboard transfers from server to client' + # platforms: win11 + platform: windows + description: | + This policy setting controls whether the clipboard can be used to transfer data from the Remote Desktop session to the client. + The recommended state for this setting is: Enabled: Disable clipboard transfers from server to client. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: Disable clipboard transfers from server to client': + 'Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection\Restrict clipboard transfer from server to client' + Note: This Group Policy path is provided by the Group Policy template + 'TerminalServer.admx/adml' that is included with the Microsoft Windows 11 Release 23H2 v2.0 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\SCClipLevel' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + +- name: > + CIS - Ensure 'Allow search highlights' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting controls search highlights in the start menu search box and in search home. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Disabled': + Computer Configuration\Policies\Administrative Templates\Windows Components\Search\Allow search highlights + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template Search.admx/adml that is included with the Microsoft Windows 10 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\EnableDynamicContentInWSB' AND (data = 0)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: DefensiveDepth + +- name: > + CIS - Ensure 'Allow Windows Ink Workspace' is set to 'Enabled: On, but disallow access above lock' OR 'Enabled: Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Windows Ink items are allowed above the lock screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled: On, but disallow access above lock' OR 'Enabled: Disabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Ink Workspace\Allow Windows Ink Workspace' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WindowsInkWorkspace.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\WindowsInkWorkspace\AllowWindowsInkWorkspace' AND (data = 0 OR data = 1)); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1, CIS_group_policy_template_required + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn on PowerShell Transcription' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This Policy setting lets you capture the input and output of Windows PowerShell commands into text-based transcripts. + resolution: | + To establish the recommended configuration via GP, set the following UI path to 'Enabled': + 'Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on PowerShell Transcription' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template PowerShellExecutionPolicy.admx/adml that is included with the Microsoft Windows 10 RTM (Release 1507) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\Transcription\\EnableTranscripting' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2, CIS_group_policy_template_required + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Turn off toast notifications on the lock screen' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting turns off toast notifications on the lock screen. + The recommended state for this setting is Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Start Menu and Taskbar\Notifications\Turn off toast notifications on the lock screen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template WPN.admx/adml that is included with the Microsoft Windows 8.0 & Server 2012 (non-R2) Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications\NoToastApplicationNotificationOnLockScreen' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Turn off Help Experience Improvement Program' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting specifies whether users can participate in the Help Experience Improvement program. The Help Experience Improvement program collects information about how customers use Windows Help so that Microsoft can improve it. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication Settings\Turn off Help Experience Improvement Program' + Note: This Group Policy path is provided by the Group Policy template HelpAndSupport.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Assistance\Client\1.0\NoImplicitFeedback' AND data = 1; + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: sharon-fdm + +- name: > + CIS - Ensure 'Do not preserve zone information in file attachments' is set to 'Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting allows you to manage whether Windows marks file attachments with information about their zone of origin (such as restricted, Internet, intranet, local). This requires NTFS in order to function correctly, and will fail without notice on FAT32. By not preserving the zone information, Windows cannot make proper risk assessments. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Attachment Manager\Do not preserve zone information in file attachments' + Note: This Group Policy path is provided by the Group Policy template AttachmentManager.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments\SaveZoneInformation' and data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Notify antivirus programs when opening attachments' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting manages the behavior for notifying registered antivirus programs. If multiple programs are registered, they will all be notified. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Attachment Manager\Notify antivirus programs when opening attachments' + Note: This Group Policy path is provided by the Group Policy template AttachmentManager.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments\ScanWithAntiVirus' AND data = 3); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Configure Windows spotlight on lock screen' is set to Disabled' + # platforms: win11 + platform: windows + description: | + This policy setting lets you configure Windows Spotlight on the lock screen. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Configure Windows spotlight on lock screen' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\ConfigureWindowsSpotlight' AND data = 2); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not suggest third-party content in Windows spotlight' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether Windows will suggest apps and content from third-party software publishers. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Do not suggest third-party content in Windows spotlight' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\DisableThirdPartySuggestions' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Do not use diagnostic data for tailored experiences' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting determines if Windows can use diagnostic data to provide tailored experiences to the user. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Do not use diagnostic data for tailored experiences' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1703 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\DisableTailoredExperiencesWithDiagnosticData' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off all Windows spotlight features' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether the all Windows Spotlight features are turned on/off (together). + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off all Windows spotlight features' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 1607 & Server 2016 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\%\Software\Policies\Microsoft\Windows\CloudContent\DisableWindowsSpotlightFeatures' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Spotlight collection on Desktop' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy is meant for Windows 11. + This policy setting removes the Spotlight collection setting in Personalization, rendering the user unable to select and subsequently download daily images from Microsoft to the system desktop. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Cloud Content\Turn off Spotlight collection on Desktop' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy template CloudContent.admx/adml that is included with the Microsoft Windows 10 Release 21H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Windows\CloudContent\DisableSpotlightCollectionOnDesktop' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: marcosd4h + +- name: > + CIS - Ensure 'Prevent users from sharing files within their profile.' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting determines whether users can share files within their profile. By default, users are allowed to share files within their profile to other users on their network after an administrator opts in the computer. An administrator can opt in the computer by using the sharing wizard to share a file within their profile. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Network Sharing\Prevent users from sharing files within their profile' + Note: This Group Policy path is provided by the Group Policy template Sharing.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoInplaceSharing' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Turn off Windows Copilot' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This policy setting configures the use of Windows Copilot. Windows Copilot is an + artificial intelligence (AI) assistant that's integrated in Microsoft Windows workstation + OSes, beginning with Windows 11 Release 23H2. + The recommended state for this setting is: Enabled. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Windows Copilot\Turn off Windows Copilot' + Note: This Group Policy path may not exist by default. It is provided by the Group Policy + template 'WindowsCopilot.admx/adml' that is included with the Microsoft Windows 11 Release 23H2 Administrative Templates (or newer). + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot\TurnOffWindowsCopilot' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + +- name: > + CIS - Ensure 'Always install with elevated privileges' is set to 'Disabled' (User Configuration) + # platforms: win11 + platform: windows + description: | + This setting controls whether or not Windows Installer should use system permissions when it installs any program on the system. + Note: This setting appears both in the Computer Configuration and User Configuration folders. To make this setting effective, you must enable the setting in both folders. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Disabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Windows Installer\Always install with elevated privileges' + Note: This Group Policy path is provided by the Group Policy template MSI.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\Software\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated' AND data = 0); + # purpose: Informational + # tags: compliance, CIS, CIS_Level1 + # contributors: rachelelysia + +- name: > + CIS - Ensure 'Prevent Codec Download' is set to 'Enabled' + # platforms: win11 + platform: windows + description: | + This setting controls whether Windows Media Player is allowed to download additional codecs for decoding media files it does not already understand. + resolution: | + To establish the recommended configuration via GP, set the following UI path to Enabled: + 'User Configuration\Policies\Administrative Templates\Windows Components\Windows Media Player\Playback\Prevent Codec Download' + Note: This Group Policy path is provided by the Group Policy template WindowsMediaPlayer.admx/adml that is included with all versions of the Microsoft Windows Administrative Templates. + query: | + SELECT 1 FROM registry WHERE (path LIKE 'HKEY_USERS\%\Software\Policies\Microsoft\WindowsMediaPlayer\PreventCodecDownload' AND data = 1); + # purpose: Informational + # tags: compliance, CIS, CIS_Level2 + # contributors: rachelelysia diff --git a/docs/solutions/cis/win-11/scripts/account-and-password-policies.ps1 b/docs/solutions/cis/win-11/scripts/account-and-password-policies.ps1 new file mode 100644 index 0000000000..0b6e507ed3 --- /dev/null +++ b/docs/solutions/cis/win-11/scripts/account-and-password-policies.ps1 @@ -0,0 +1,136 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 11 Enterprise Benchmark v4.0.0 - Account and Password Policy Remediation + +.DESCRIPTION + Configures account lockout and password policies to meet CIS Windows 11 Enterprise Benchmark v4.0.0 + requirements using secedit. This script is idempotent - safe to run multiple times. + +.NOTES + CIS Benchmark Controls Covered: + - 1.1.1 Enforce password history: 24 or more passwords + - 1.1.2 Maximum password age: 365 days or fewer (not 0) + - 1.1.3 Minimum password age: 1 or more days + - 1.1.4 Minimum password length: 14 or more characters + - 1.1.5 Password must meet complexity requirements: Enabled + - 1.1.6 Store passwords using reversible encryption: Disabled + - 1.2.1 Account lockout duration: 15 or more minutes + - 1.2.2 Account lockout threshold: 5 or fewer invalid attempts (not 0) + - 1.2.3 Reset account lockout counter after: 15 or more minutes + + Requires: Administrator privileges + Run as: SYSTEM or local Administrator +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS account and password policy remediation" + +# Export current security policy to a temp file +$cfgFile = Join-Path $env:TEMP "secpol_cis.cfg" +$sdbFile = Join-Path $env:TEMP "secedit_cis.sdb" +$logFile = Join-Path $env:TEMP "secedit_cis.log" + +try { + Write-Status "Exporting current security policy..." + $exportResult = secedit /export /cfg $cfgFile /quiet + if ($LASTEXITCODE -ne 0) { + throw "secedit /export failed with exit code $LASTEXITCODE" + } + + # Read the exported policy + $content = Get-Content $cfgFile -Raw + + # --- Password Policy Settings --- + + # CIS 1.1.1: Enforce password history = 24 (or more) + $content = $content -replace 'PasswordHistorySize\s*=\s*\d+', 'PasswordHistorySize = 24' + if ($content -notmatch 'PasswordHistorySize') { + $content = $content -replace '(\[System Access\])', "`$1`r`nPasswordHistorySize = 24" + } + + # CIS 1.1.2: Maximum password age = 365 days (must not be 0; org may use shorter) + $content = $content -replace 'MaximumPasswordAge\s*=\s*\d+', 'MaximumPasswordAge = 365' + if ($content -notmatch 'MaximumPasswordAge') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMaximumPasswordAge = 365" + } + + # CIS 1.1.3: Minimum password age = 1 day + $content = $content -replace 'MinimumPasswordAge\s*=\s*\d+', 'MinimumPasswordAge = 1' + if ($content -notmatch 'MinimumPasswordAge') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMinimumPasswordAge = 1" + } + + # CIS 1.1.4: Minimum password length = 14 characters + $content = $content -replace 'MinimumPasswordLength\s*=\s*\d+', 'MinimumPasswordLength = 14' + if ($content -notmatch 'MinimumPasswordLength') { + $content = $content -replace '(\[System Access\])', "`$1`r`nMinimumPasswordLength = 14" + } + + # CIS 1.1.5: Password complexity = Enabled (1) + $content = $content -replace 'PasswordComplexity\s*=\s*\d+', 'PasswordComplexity = 1' + if ($content -notmatch 'PasswordComplexity') { + $content = $content -replace '(\[System Access\])', "`$1`r`nPasswordComplexity = 1" + } + + # CIS 1.1.6: Store password using reversible encryption = Disabled (0) + $content = $content -replace 'ClearTextPassword\s*=\s*\d+', 'ClearTextPassword = 0' + if ($content -notmatch 'ClearTextPassword') { + $content = $content -replace '(\[System Access\])', "`$1`r`nClearTextPassword = 0" + } + + # --- Account Lockout Settings --- + + # CIS 1.2.1: Account lockout duration = 15 minutes (0 = until admin unlocks; use 15+) + $content = $content -replace 'LockoutDuration\s*=\s*-?\d+', 'LockoutDuration = 15' + if ($content -notmatch 'LockoutDuration') { + $content = $content -replace '(\[System Access\])', "`$1`r`nLockoutDuration = 15" + } + + # CIS 1.2.2: Account lockout threshold = 5 (invalid logon attempts) + $content = $content -replace 'LockoutBadCount\s*=\s*\d+', 'LockoutBadCount = 5' + if ($content -notmatch 'LockoutBadCount') { + $content = $content -replace '(\[System Access\])', "`$1`r`nLockoutBadCount = 5" + } + + # CIS 1.2.3: Reset lockout counter after = 15 minutes + $content = $content -replace 'ResetLockoutCount\s*=\s*\d+', 'ResetLockoutCount = 15' + if ($content -notmatch 'ResetLockoutCount') { + $content = $content -replace '(\[System Access\])', "`$1`r`nResetLockoutCount = 15" + } + + # Write the modified policy back to disk + Write-Status "Writing updated policy configuration..." + Set-Content -Path $cfgFile -Value $content -Encoding Unicode + + # Apply the updated policy using secedit + Write-Status "Applying updated security policy..." + $applyResult = secedit /configure /db $sdbFile /cfg $cfgFile /areas SECURITYPOLICY /log $logFile /quiet + if ($LASTEXITCODE -ne 0) { + Write-Status "secedit /configure completed with exit code $LASTEXITCODE. Check $logFile for details." 'WARN' + } else { + Write-Status "Security policy applied successfully." + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} finally { + # Clean up temp files + @($cfgFile, $sdbFile, $logFile) | ForEach-Object { + if (Test-Path $_) { Remove-Item $_ -Force -ErrorAction SilentlyContinue } + } +} + +Write-Status "Account and password policy remediation complete." diff --git a/docs/solutions/cis/win-11/scripts/audit-policy.ps1 b/docs/solutions/cis/win-11/scripts/audit-policy.ps1 new file mode 100644 index 0000000000..b459c29c65 --- /dev/null +++ b/docs/solutions/cis/win-11/scripts/audit-policy.ps1 @@ -0,0 +1,145 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 11 Enterprise Benchmark v4.0.0 - Audit Policy Remediation + +.DESCRIPTION + Configures Advanced Audit Policy settings to meet CIS Windows 11 Enterprise Benchmark v4.0.0 + requirements using auditpol.exe. This script is idempotent - safe to run + multiple times. + +.NOTES + CIS Benchmark Controls Covered: + - 17.1.1 Account Logon: Audit Credential Validation -> Success and Failure + - 17.2.1 Account Mgmt: Audit Application Group Management -> Success and Failure + - 17.2.4 Account Mgmt: Audit Security Group Management -> Success + - 17.2.6 Account Mgmt: Audit User Account Management -> Success and Failure + - 17.3.1 Detailed Tracking: Audit PNP Activity -> Success + - 17.3.2 Detailed Tracking: Audit Process Creation -> Success + - 17.5.1 Logon/Logoff: Audit Account Lockout -> Failure + - 17.5.2 Logon/Logoff: Audit Group Membership -> Success + - 17.5.3 Logon/Logoff: Audit Logoff -> Success + - 17.5.4 Logon/Logoff: Audit Logon -> Success and Failure + - 17.5.5 Logon/Logoff: Audit Other Logon/Logoff Events -> Success and Failure + - 17.5.6 Logon/Logoff: Audit Special Logon -> Success + - 17.6.1 Object Access: Audit Detailed File Share -> Failure + - 17.6.2 Object Access: Audit File Share -> Success and Failure + - 17.6.3 Object Access: Audit Other Object Access Events -> Success and Failure + - 17.6.4 Object Access: Audit Removable Storage -> Success and Failure + - 17.7.1 Policy Change: Audit Audit Policy Change -> Success + - 17.7.2 Policy Change: Audit Authentication Policy Change -> Success + - 17.7.3 Policy Change: Audit Authorization Policy Change -> Success + - 17.7.4 Policy Change: Audit MPSSVC Rule-Level Policy Change -> Success and Failure + - 17.7.5 Policy Change: Audit Other Policy Change Events -> Failure + - 17.8.1 Privilege Use: Audit Sensitive Privilege Use -> Success and Failure + - 17.9.1 System: Audit IPsec Driver -> Success and Failure + - 17.9.2 System: Audit Other System Events -> Success and Failure + - 17.9.3 System: Audit Security State Change -> Success + - 17.9.4 System: Audit Security System Extension -> Success + - 17.9.5 System: Audit System Integrity -> Success and Failure + + Requires: Administrator privileges + Note: Uses auditpol.exe which is available on all supported Windows versions. +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +function Set-AuditPolicy { + param( + [string]$Subcategory, + [bool]$Success, + [bool]$Failure + ) + + $successArg = if ($Success) { '/success:enable' } else { '/success:disable' } + $failureArg = if ($Failure) { '/failure:enable' } else { '/failure:disable' } + + $result = auditpol /set /subcategory:"$Subcategory" $successArg $failureArg 2>&1 + if ($LASTEXITCODE -ne 0) { + Write-Status "Failed to set '$Subcategory': $result" 'WARN' + return $false + } + $label = @() + if ($Success) { $label += 'Success' } + if ($Failure) { $label += 'Failure' } + Write-Status " Set '$Subcategory' = $($label -join ' and ')" + return $true +} + +Write-Status "Starting CIS audit policy remediation" + +# Verify auditpol is available +if (-not (Get-Command auditpol -ErrorAction SilentlyContinue)) { + Write-Status "auditpol.exe not found. Cannot configure audit policies." 'ERROR' + exit 1 +} + +$errors = 0 + +# Account Logon +Write-Status "Configuring Account Logon audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Credential Validation' -Success $true -Failure $true)) { $errors++ } + +# Account Management +Write-Status "Configuring Account Management audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Application Group Management' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Security Group Management' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'User Account Management' -Success $true -Failure $true)) { $errors++ } + +# Detailed Tracking +Write-Status "Configuring Detailed Tracking audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Plug and Play Events' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Process Creation' -Success $true -Failure $false)) { $errors++ } + +# Logon/Logoff +Write-Status "Configuring Logon/Logoff audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Account Lockout' -Success $false -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Group Membership' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Logoff' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Logon' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other Logon/Logoff Events' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Special Logon' -Success $true -Failure $false)) { $errors++ } + +# Object Access +Write-Status "Configuring Object Access audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Detailed File Share' -Success $false -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'File Share' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other Object Access Events' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Removable Storage' -Success $true -Failure $true)) { $errors++ } + +# Policy Change +Write-Status "Configuring Policy Change audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Audit Policy Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Authentication Policy Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Authorization Policy Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'MPSSVC Rule-Level Policy Change' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other Policy Change Events' -Success $false -Failure $true)) { $errors++ } + +# Privilege Use +Write-Status "Configuring Privilege Use audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'Sensitive Privilege Use' -Success $true -Failure $true)) { $errors++ } + +# System +Write-Status "Configuring System audit policies..." +if (-not (Set-AuditPolicy -Subcategory 'IPsec Driver' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Other System Events' -Success $true -Failure $true)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Security State Change' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'Security System Extension' -Success $true -Failure $false)) { $errors++ } +if (-not (Set-AuditPolicy -Subcategory 'System Integrity' -Success $true -Failure $true)) { $errors++ } + +if ($errors -gt 0) { + Write-Status "Audit policy remediation completed with $errors error(s). Review output above." 'WARN' + exit 1 +} else { + Write-Status "Audit policy remediation complete. All policies configured successfully." +} diff --git a/docs/solutions/cis/win-11/scripts/user-rights-assignment.ps1 b/docs/solutions/cis/win-11/scripts/user-rights-assignment.ps1 new file mode 100644 index 0000000000..0a63d0fe01 --- /dev/null +++ b/docs/solutions/cis/win-11/scripts/user-rights-assignment.ps1 @@ -0,0 +1,177 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 11 Enterprise Benchmark v4.0.0 - User Rights Assignment Remediation + +.DESCRIPTION + Configures user rights assignments (privileges) to meet CIS Windows 11 Enterprise Benchmark v4.0.0 + requirements using secedit. This script is idempotent - safe to run multiple times. + +.NOTES + CIS Benchmark Controls Covered (Section 2.2): + - 2.2.1 Access Credential Manager as a trusted caller -> (empty) + - 2.2.2 Access this computer from the network -> Administrators, Remote Desktop Users + - 2.2.3 Act as part of the operating system -> (empty) + - 2.2.5 Allow log on locally -> Administrators, Users + - 2.2.7 Back up files and directories -> Administrators + - 2.2.8 Change the system time -> Administrators, LOCAL SERVICE + - 2.2.11 Create a token object -> (empty) + - 2.2.12 Create global objects -> Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + - 2.2.13 Create permanent shared objects -> (empty) + - 2.2.14 Create symbolic links -> Administrators + - 2.2.15 Debug programs -> Administrators + - 2.2.16 Deny access this computer from the network -> Guests, Local account + - 2.2.19 Deny log on locally -> Guests + - 2.2.20 Deny log on through Remote Desktop Services -> Guests, Local account + - 2.2.21 Enable computer and user accounts for delegation -> (empty) + - 2.2.22 Force shutdown from a remote system -> Administrators + - 2.2.23 Generate security audits -> LOCAL SERVICE, NETWORK SERVICE + - 2.2.24 Impersonate a client after authentication -> Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + - 2.2.25 Increase scheduling priority -> Administrators + - 2.2.26 Load and unload device drivers -> Administrators + - 2.2.27 Lock pages in memory -> (empty) + - 2.2.30 Manage auditing and security log -> Administrators + - 2.2.31 Modify an object label -> (empty) + - 2.2.32 Modify firmware environment values -> Administrators + - 2.2.34 Profile single process -> Administrators + - 2.2.37 Restore files and directories -> Administrators + - 2.2.39 Take ownership of files or other objects -> Administrators + + SID Reference used in secedit [Privilege Rights]: + - *S-1-5-6 = SERVICE + - *S-1-5-19 = LOCAL SERVICE + - *S-1-5-20 = NETWORK SERVICE + - *S-1-5-32-544 = Administrators + - *S-1-5-32-545 = Users + - *S-1-5-32-546 = Guests + - *S-1-5-32-555 = Remote Desktop Users + + Requires: Administrator privileges +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS user rights assignment remediation" + +$cfgFile = Join-Path $env:TEMP "secpol_ura.cfg" +$sdbFile = Join-Path $env:TEMP "secedit_ura.sdb" +$logFile = Join-Path $env:TEMP "secedit_ura.log" + +# Define the desired user rights (secedit format: privilege = SID list) +# Empty value means "No One" - the right is granted to no accounts +$userRights = [ordered]@{ + # CIS 2.2.1: No One + 'SeTrustedCredManAccessPrivilege' = '' + # CIS 2.2.2: Administrators, Remote Desktop Users + 'SeNetworkLogonRight' = '*S-1-5-32-544,*S-1-5-32-555' + # CIS 2.2.3: No One + 'SeTcbPrivilege' = '' + # CIS 2.2.5: Administrators, Users + 'SeInteractiveLogonRight' = '*S-1-5-32-544,*S-1-5-32-545' + # CIS 2.2.7: Administrators + 'SeBackupPrivilege' = '*S-1-5-32-544' + # CIS 2.2.8: Administrators, LOCAL SERVICE + 'SeSystemtimePrivilege' = '*S-1-5-32-544,*S-1-5-19' + # CIS 2.2.11: No One + 'SeCreateTokenPrivilege' = '' + # CIS 2.2.12: Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + 'SeCreateGlobalPrivilege' = '*S-1-5-32-544,*S-1-5-19,*S-1-5-20,*S-1-5-6' + # CIS 2.2.13: No One + 'SeCreatePermanentPrivilege' = '' + # CIS 2.2.14: Administrators + 'SeCreateSymbolicLinkPrivilege' = '*S-1-5-32-544' + # CIS 2.2.15: Administrators + 'SeDebugPrivilege' = '*S-1-5-32-544' + # CIS 2.2.16: Guests, Local account + 'SeDenyNetworkLogonRight' = '*S-1-5-32-546,*S-1-5-113' + # CIS 2.2.19: Guests + 'SeDenyInteractiveLogonRight' = '*S-1-5-32-546' + # CIS 2.2.20: Guests, Local account + 'SeDenyRemoteInteractiveLogonRight' = '*S-1-5-32-546,*S-1-5-113' + # CIS 2.2.21: No One + 'SeEnableDelegationPrivilege' = '' + # CIS 2.2.22: Administrators + 'SeRemoteShutdownPrivilege' = '*S-1-5-32-544' + # CIS 2.2.23: LOCAL SERVICE, NETWORK SERVICE + 'SeAuditPrivilege' = '*S-1-5-19,*S-1-5-20' + # CIS 2.2.24: Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE + 'SeImpersonatePrivilege' = '*S-1-5-32-544,*S-1-5-19,*S-1-5-20,*S-1-5-6' + # CIS 2.2.25: Administrators + 'SeIncreaseBasePriorityPrivilege' = '*S-1-5-32-544' + # CIS 2.2.26: Administrators + 'SeLoadDriverPrivilege' = '*S-1-5-32-544' + # CIS 2.2.27: No One + 'SeLockMemoryPrivilege' = '' + # CIS 2.2.30: Administrators + 'SeSecurityPrivilege' = '*S-1-5-32-544' + # CIS 2.2.31: No One + 'SeRelabelPrivilege' = '' + # CIS 2.2.32: Administrators + 'SeSystemEnvironmentPrivilege' = '*S-1-5-32-544' + # CIS 2.2.34: Administrators + 'SeProfileSingleProcessPrivilege' = '*S-1-5-32-544' + # CIS 2.2.37: Administrators + 'SeRestorePrivilege' = '*S-1-5-32-544' + # CIS 2.2.39: Administrators + 'SeTakeOwnershipPrivilege' = '*S-1-5-32-544' +} + +try { + Write-Status "Exporting current security policy..." + $null = secedit /export /cfg $cfgFile /quiet + if ($LASTEXITCODE -ne 0) { + throw "secedit /export failed with exit code $LASTEXITCODE" + } + + $content = Get-Content $cfgFile -Raw + + # Ensure [Privilege Rights] section exists + if ($content -notmatch '\[Privilege Rights\]') { + $content += "`r`n[Privilege Rights]`r`n" + } + + # Update each user right + foreach ($right in $userRights.GetEnumerator()) { + $key = $right.Key + $value = $right.Value + + if ($content -match "(?m)^$key\s*=") { + # Replace existing entry + $content = $content -replace "(?m)^$key\s*=.*", "$key = $value" + } else { + # Add new entry in [Privilege Rights] section + $content = $content -replace '(\[Privilege Rights\])', "`$1`r`n$key = $value" + } + Write-Status " Set $key = $value" + } + + Set-Content -Path $cfgFile -Value $content -Encoding Unicode + + Write-Status "Applying user rights configuration..." + $null = secedit /configure /db $sdbFile /cfg $cfgFile /areas USER_RIGHTS /log $logFile /quiet + if ($LASTEXITCODE -ne 0) { + Write-Status "secedit /configure exit code: $LASTEXITCODE. Check $logFile for details." 'WARN' + } else { + Write-Status "User rights applied successfully." + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} finally { + @($cfgFile, $sdbFile, $logFile) | ForEach-Object { + if (Test-Path $_) { Remove-Item $_ -Force -ErrorAction SilentlyContinue } + } +} + +Write-Status "User rights assignment remediation complete." diff --git a/docs/solutions/cis/win-11/scripts/windows-firewall.ps1 b/docs/solutions/cis/win-11/scripts/windows-firewall.ps1 new file mode 100644 index 0000000000..aa0bd7aa27 --- /dev/null +++ b/docs/solutions/cis/win-11/scripts/windows-firewall.ps1 @@ -0,0 +1,96 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 11 Enterprise Benchmark v4.0.0 - Windows Firewall Remediation + +.DESCRIPTION + Configures Windows Firewall settings to meet CIS Windows 11 Enterprise Benchmark v4.0.0 + requirements using Set-NetFirewallProfile. This script is idempotent. + +.NOTES + CIS Benchmark Controls Covered: + - 9.1.1 Windows Firewall: Domain: Firewall state -> On + - 9.1.2 Windows Firewall: Domain: Inbound connections -> Block + - 9.1.3 Windows Firewall: Domain: Outbound connections -> Allow + - 9.1.4 Windows Firewall: Domain: Settings: Display notification -> No + - 9.2.1 Windows Firewall: Private: Firewall state -> On + - 9.2.2 Windows Firewall: Private: Inbound connections -> Block + - 9.2.3 Windows Firewall: Private: Outbound connections -> Allow + - 9.2.4 Windows Firewall: Private: Settings: Display notification -> No + - 9.3.1 Windows Firewall: Public: Firewall state -> On + - 9.3.2 Windows Firewall: Public: Inbound connections -> Block + - 9.3.3 Windows Firewall: Public: Outbound connections -> Allow + - 9.3.4 Windows Firewall: Public: Settings: Display notification -> No + - 9.x.5 Windows Firewall: Log dropped packets -> Yes + - 9.x.6 Windows Firewall: Log max file size -> 16384 KB + + Requires: Administrator privileges, Windows Firewall service running +#> + +[CmdletBinding(SupportsShouldProcess)] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +Write-Status "Starting CIS Windows Firewall remediation" + +# Verify the Windows Firewall service is running +$fwService = Get-Service -Name 'MpsSvc' -ErrorAction SilentlyContinue +if ($null -eq $fwService) { + Write-Status "Windows Firewall service (MpsSvc) not found." 'ERROR' + exit 1 +} +if ($fwService.Status -ne 'Running') { + Write-Status "Starting Windows Firewall service..." + Start-Service -Name 'MpsSvc' +} + +try { + $profiles = @('Domain', 'Private', 'Public') + + foreach ($profile in $profiles) { + Write-Status "Configuring $profile firewall profile..." + + $params = @{ + Name = $profile + Enabled = $true # Firewall state: On + DefaultInboundAction = 'Block' # Block inbound connections by default + DefaultOutboundAction = 'Allow' # Allow outbound connections by default + NotifyOnListen = $false # Do not display notifications + AllowUnicastResponseToMulticast = $true # Allow unicast response (recommended) + LogAllowed = $false + LogBlocked = $true # Log dropped packets (CIS 9.x.5) + LogMaxSizeKilobytes = 16384 # CIS 9.x.6: minimum 16384 KB + } + + # Public profile: also disable local policy merge (CIS L2 hardening) + if ($profile -eq 'Public') { + $params['AllowLocalFirewallRules'] = $false + $params['AllowLocalIPsecRules'] = $false + } + + Set-NetFirewallProfile @params + Write-Status "$profile profile configured." + } + + # Verify settings were applied + Write-Status "Verifying firewall configuration..." + foreach ($profile in $profiles) { + $fw = Get-NetFirewallProfile -Name $profile + $status = if ($fw.Enabled) { 'ON' } else { 'OFF' } + Write-Status " $profile : State=$status, Inbound=$($fw.DefaultInboundAction), Outbound=$($fw.DefaultOutboundAction)" + } + +} catch { + Write-Status "ERROR: $_" 'ERROR' + exit 1 +} + +Write-Status "Windows Firewall remediation complete." diff --git a/docs/solutions/cis/win-11/scripts/windows-settings.ps1 b/docs/solutions/cis/win-11/scripts/windows-settings.ps1 new file mode 100644 index 0000000000..e9cdd649e8 --- /dev/null +++ b/docs/solutions/cis/win-11/scripts/windows-settings.ps1 @@ -0,0 +1,265 @@ +#Requires -RunAsAdministrator +<# +.SYNOPSIS + CIS Windows 11 Enterprise Benchmark v4.0.0 - Security Registry Settings Remediation + +.DESCRIPTION + Configures common security registry settings to meet CIS Windows 11 Enterprise Benchmark v4.0.0 + requirements. This script is idempotent - safe to run multiple times. + +.NOTES + CIS Benchmark Controls Covered (registry-based, Section 2-19): + - 2.3.1.4 Block Microsoft accounts -> 3 + - 2.3.1.5 Limit blank password use to console logon only -> 1 (Enabled) + - 2.3.2.1 Audit: Force audit policy subcategory settings -> 1 (Enabled) + - 2.3.4.1 Devices: Prevent users from installing printer drivers -> 1 (Enabled) + - 2.3.7.1 Interactive logon: Do not require CTRL+ALT+DEL -> 0 (Disabled) + - 2.3.7.2 Interactive logon: Don't display last username -> 1 (Enabled) + - 2.3.10.1 Network access: Allow anonymous SID/name translation -> 0 (Disabled) + - 2.3.10.2 Network access: Do not allow anonymous enum of SAM -> 1 (Enabled) + - 2.3.10.3 Network access: Do not allow anonymous enum of SAM and shares -> 1 (Enabled) + - 2.3.11.4 Network security: Do not store LAN Manager hash -> 1 (Enabled) + - 2.3.17.1 UAC: Admin approval mode for Built-in Administrator -> 1 (Enabled) + - 2.3.17.2 UAC: Behavior of elevation prompt for admins -> 2 (Prompt for credentials) + - 2.3.17.5 UAC: Behavior of elevation prompt for standard users -> 0 (Auto-deny) + - 2.3.17.6 UAC: Run all administrators in Admin Approval Mode -> 1 (Enabled) + - 18.1.1.1 Prevent enabling lock screen camera -> 1 (Enabled) + - 18.1.1.2 Prevent enabling lock screen slide show -> 1 (Enabled) + - 18.3.3 Configure SMB v1 client driver -> Disabled + - 18.3.4 Configure SMB v1 server -> Disabled + - 18.4.1 MSS: AutoAdminLogon -> "0" (Disabled) + - 18.9.3 Autoplay: DisableAutoplay -> 1 (Enabled) + - 18.9.4 AutoRun: NoDriveTypeAutoRun -> 255 (All drives) + - 18.9.48 Windows Installer: AlwaysInstallElevated -> 0 (Disabled) + - 18.9.75 WinRM: AllowUnencryptedTraffic -> 0 (Disabled) + + Requires: Administrator privileges + Note: Changes take effect immediately for registry settings. Some may require + a reboot or Group Policy update to fully apply. +#> + +[CmdletBinding()] +param() + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Write-Status { + param([string]$Message, [string]$Level = 'INFO') + $timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Write-Output "[$timestamp] [$Level] $Message" +} + +function Set-RegistryValue { + param( + [string]$Path, + [string]$Name, + [object]$Value, + [string]$Type = 'DWord', + [string]$Description = '' + ) + + try { + # Create registry key if it does not exist + if (-not (Test-Path $Path)) { + $null = New-Item -Path $Path -Force + Write-Status " Created key: $Path" + } + + $current = Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue + if ($null -ne $current -and $current.$Name -eq $Value) { + Write-Status " [OK] $Path\$Name = $Value (already set)" + return + } + + Set-ItemProperty -Path $Path -Name $Name -Value $Value -Type $Type -Force + Write-Status " [SET] $Path\$Name = $Value $Description" + } catch { + Write-Status " [FAIL] $Path\$Name : $_" 'WARN' + } +} + +Write-Status "Starting CIS Windows security registry settings remediation" + +# --- Section 2.3: Security Options --- + +# 2.3.1.4: Block Microsoft accounts = 3 (Users can't add or log on with Microsoft accounts) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'NoConnectedUser' ` + -Value 3 ` + -Description '(CIS 2.3.1.4)' + +# 2.3.1.5: Limit blank password use to console logon only = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'LimitBlankPasswordUse' ` + -Value 1 ` + -Description '(CIS 2.3.1.5)' + +# 2.3.2.1: Audit: Force audit policy subcategory settings = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'SCENoApplyLegacyAuditPolicy' ` + -Value 1 ` + -Description '(CIS 2.3.2.1)' + +# 2.3.4.1: Devices: Prevent users from installing printer drivers = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers' ` + -Name 'AddPrinterDrivers' ` + -Value 1 ` + -Description '(CIS 2.3.4.1)' + +# 2.3.7.1: Interactive logon: Do not require CTRL+ALT+DEL = 0 (Disabled = CTRL+ALT+DEL required) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'DisableCAD' ` + -Value 0 ` + -Description '(CIS 2.3.7.1)' + +# 2.3.7.2: Interactive logon: Don't display last username = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'DontDisplayLastUserName' ` + -Value 1 ` + -Description '(CIS 2.3.7.2)' + +# 2.3.10.1: Network access: Allow anonymous SID/Name translation = 0 (Disabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'TurnOffAnonymousBlock' ` + -Value 0 ` + -Description '(CIS 2.3.10.1)' + +# 2.3.10.2: Network access: Do not allow anonymous enumeration of SAM accounts = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'RestrictAnonymousSAM' ` + -Value 1 ` + -Description '(CIS 2.3.10.2)' + +# 2.3.10.3: Network access: Do not allow anonymous enumeration of SAM accounts and shares = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'RestrictAnonymous' ` + -Value 1 ` + -Description '(CIS 2.3.10.3)' + +# 2.3.11.4: Network security: Do not store LAN Manager hash on next password change = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' ` + -Name 'NoLMHash' ` + -Value 1 ` + -Description '(CIS 2.3.11.4)' + +# --- Section 2.3.17: UAC Settings --- + +# 2.3.17.1: UAC: Admin Approval Mode for Built-in Administrator = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'FilterAdministratorToken' ` + -Value 1 ` + -Description '(CIS 2.3.17.1)' + +# 2.3.17.2: UAC: Behavior of elevation prompt for administrators = 2 (Prompt for credentials on the secure desktop) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'ConsentPromptBehaviorAdmin' ` + -Value 2 ` + -Description '(CIS 2.3.17.2)' + +# 2.3.17.5: UAC: Behavior of elevation prompt for standard users = 0 (Automatically deny elevation requests) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'ConsentPromptBehaviorUser' ` + -Value 0 ` + -Description '(CIS 2.3.17.5)' + +# 2.3.17.6: UAC: Run all administrators in Admin Approval Mode = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' ` + -Name 'EnableLUA' ` + -Value 1 ` + -Description '(CIS 2.3.17.6)' + +# --- Section 18: Administrative Templates --- + +# 18.1.1.1: Prevent enabling lock screen camera = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization' ` + -Name 'NoLockScreenCamera' ` + -Value 1 ` + -Description '(CIS 18.1.1.1)' + +# 18.1.1.2: Prevent enabling lock screen slide show = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization' ` + -Name 'NoLockScreenSlideshow' ` + -Value 1 ` + -Description '(CIS 18.1.1.2)' + +# 18.3.3: SMBv1 Client Driver = Disabled (4 = Disabled) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\MrxSmb10' ` + -Name 'Start' ` + -Value 4 ` + -Description '(CIS 18.3.3 - SMBv1 client disabled)' + +# 18.3.4: SMBv1 Server = Disabled (0) +Set-RegistryValue ` + -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters' ` + -Name 'SMB1' ` + -Value 0 ` + -Description '(CIS 18.3.4 - SMBv1 server disabled)' + +# 18.4.1: MSS: Disable AutoAdminLogon (REG_SZ value) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' ` + -Name 'AutoAdminLogon' ` + -Value '0' ` + -Type 'String' ` + -Description '(CIS 18.4.1 - Disable AutoAdminLogon)' + +# 18.9.3: Disable Autoplay for all drives = 1 (Enabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' ` + -Name 'NoDriveTypeAutoRun' ` + -Value 255 ` + -Description '(CIS 18.9.3/4 - Disable AutoRun all drives)' + +# 18.9.4: AutoRun commands are disabled +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' ` + -Name 'NoAutorun' ` + -Value 1 ` + -Description '(CIS 18.9.4 - Disable AutoRun commands)' + +# 18.9.48: Windows Installer: Always install with elevated privileges = 0 (Disabled) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer' ` + -Name 'AlwaysInstallElevated' ` + -Value 0 ` + -Description '(CIS 18.9.48 - Disable AlwaysInstallElevated)' + +# 18.9.75: WinRM: Disallow unencrypted traffic = 0 (Disabled = encryption required) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' ` + -Name 'AllowUnencryptedTraffic' ` + -Value 0 ` + -Description '(CIS 18.9.75 - WinRM client encryption required)' + +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Service' ` + -Name 'AllowUnencryptedTraffic' ` + -Value 0 ` + -Description '(CIS 18.9.75 - WinRM service encryption required)' + +# Enable Windows Defender real-time protection (basic check/set) +Set-RegistryValue ` + -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection' ` + -Name 'DisableRealtimeMonitoring' ` + -Value 0 ` + -Description '(CIS - Enable Defender real-time monitoring)' + +Write-Status "Windows security registry settings remediation complete."