Fleet versions
- Discovered: 4.86.2
- Reproduced: 4.86.2
Web browser and operating system: macOS 26.5.1
π₯ Actual behavior
Three CIS benchmark policies on macOS 26 fail or produce incorrect results:
5.1.3 β nvram_info always reports AMFI as enabled on macOS 26
nvram_info returns amfi_enabled = 1 even when AMFI is disabled via sudo nvram boot-args="amfi_get_out_of_my_way=0x1". The CIS 5.1.3 policy always passes regardless of actual AMFI state. Root cause: nvram_info.go:37 checks strings.Contains(res, "amfi_get_out_of_my_way=1") β macOS 26 preserves the hex prefix (0x1), so the substring match silently fails.
5.7 β Default macOS 26 screensaver rule use-login-window-ui causes false FAIL
On macOS 26, the default system.login.screensaver rule is ["use-login-window-ui"] β a new screensaver authorization mechanism. The CIS 5.7 policy treats this as a FAIL on all freshly enrolled, unconfigured macOS 26 hosts.
5.11 β sudo_info Fleetd extension stores boolean flags as null, breaking sudo logging policy
The sudo_info extension stores boolean sudo flags (e.g., Defaults log_allowed) as null in the JSON blob. This makes it impossible to distinguish "flag is enabled" from "flag is absent." The query workaround in PR #48282 (json_type IS NOT NULL) mitigates the symptom but the extension itself is incorrect.
π οΈ Expected behavior
- 5.1.3: When AMFI is disabled (
amfi_get_out_of_my_way=0x1 in NVRAM), nvram_info should return amfi_enabled = 0 and the CIS 5.1.3 policy should FAIL. Fix: also check strings.Contains(res, "amfi_get_out_of_my_way=0x1") in orbit/pkg/table/nvram_info/nvram_info.go.
- 5.7:
use-login-window-ui needs security team review to determine if it provides equivalent protection to authenticate-session-owner. If it does, the query should accept it as a passing state: OR rule LIKE '%use-login-window-ui%'.
- 5.11: When
Defaults log_allowed is configured in sudoers, sudo_info should store the key as "true" so callers can distinguish enabled from absent. Fix in orbit/pkg/table/sudo_info/: detect lines with no = value and store as "true" instead of null.
π§βπ» Steps to reproduce
These steps:
5.1.3 β nvram_info hex prefix mismatch
- Enroll a macOS 26 host in Fleet.
- Boot into Recovery and run
csrutil disable, then reboot.
- Run
sudo nvram boot-args="amfi_get_out_of_my_way=0x1" and reboot.
- Run live query:
SELECT * FROM nvram_info; β observe amfi_enabled = 1 (incorrect).
- Confirm raw NVRAM:
SELECT value FROM nvram WHERE name = 'boot-args'; β returns amfi_get_out_of_my_way=0x1.
- Run CIS 5.1.3 policy β observe it passes (false positive).
5.7 β use-login-window-ui false FAIL
- Enroll a freshly enrolled macOS 26 host with no custom screensaver authdb configuration.
- Run live query:
SELECT JSON_EXTRACT(json_result, '$.rule') FROM authdb WHERE right_name = 'system.login.screensaver'; β observe ["use-login-window-ui"].
- Run the CIS 5.7 policy β observe it returns no rows (FAIL) on an unconfigured host.
5.11 β sudo_info null boolean flags
- Enroll a macOS 26 host in Fleet.
- Add
Defaults log_allowed to /etc/sudoers.d/.
- Confirm the setting is active:
sudo sudo -V | grep -i "log when a command is allowed" β key appears.
- Run live query:
SELECT JSON_EXTRACT(json_result, '$.Log when a command is allowed by sudoers') FROM sudo_info; β observe null instead of "true".
π―οΈ More info
For context on what we were doing refer to #35120
Fleet versions
Web browser and operating system: macOS 26.5.1
π₯ Actual behavior
Three CIS benchmark policies on macOS 26 fail or produce incorrect results:
5.1.3 β
nvram_infoalways reports AMFI as enabled on macOS 26nvram_inforeturnsamfi_enabled = 1even when AMFI is disabled viasudo nvram boot-args="amfi_get_out_of_my_way=0x1". The CIS 5.1.3 policy always passes regardless of actual AMFI state. Root cause:nvram_info.go:37checksstrings.Contains(res, "amfi_get_out_of_my_way=1")β macOS 26 preserves the hex prefix (0x1), so the substring match silently fails.5.7 β Default macOS 26 screensaver rule
use-login-window-uicauses false FAILOn macOS 26, the default
system.login.screensaverrule is["use-login-window-ui"]β a new screensaver authorization mechanism. The CIS 5.7 policy treats this as a FAIL on all freshly enrolled, unconfigured macOS 26 hosts.5.11 β
sudo_infoFleetd extension stores boolean flags asnull, breaking sudo logging policyThe
sudo_infoextension stores boolean sudo flags (e.g.,Defaults log_allowed) asnullin the JSON blob. This makes it impossible to distinguish "flag is enabled" from "flag is absent." The query workaround in PR #48282 (json_type IS NOT NULL) mitigates the symptom but the extension itself is incorrect.π οΈ Expected behavior
amfi_get_out_of_my_way=0x1in NVRAM),nvram_infoshould returnamfi_enabled = 0and the CIS 5.1.3 policy should FAIL. Fix: also checkstrings.Contains(res, "amfi_get_out_of_my_way=0x1")inorbit/pkg/table/nvram_info/nvram_info.go.use-login-window-uineeds security team review to determine if it provides equivalent protection toauthenticate-session-owner. If it does, the query should accept it as a passing state:OR rule LIKE '%use-login-window-ui%'.Defaults log_allowedis configured in sudoers,sudo_infoshould store the key as"true"so callers can distinguish enabled from absent. Fix inorbit/pkg/table/sudo_info/: detect lines with no=value and store as"true"instead ofnull.π§βπ» Steps to reproduce
These steps:
5.1.3 β nvram_info hex prefix mismatch
csrutil disable, then reboot.sudo nvram boot-args="amfi_get_out_of_my_way=0x1"and reboot.SELECT * FROM nvram_info;β observeamfi_enabled = 1(incorrect).SELECT value FROM nvram WHERE name = 'boot-args';β returnsamfi_get_out_of_my_way=0x1.5.7 β use-login-window-ui false FAIL
SELECT JSON_EXTRACT(json_result, '$.rule') FROM authdb WHERE right_name = 'system.login.screensaver';β observe["use-login-window-ui"].5.11 β sudo_info null boolean flags
Defaults log_allowedto/etc/sudoers.d/.sudo sudo -V | grep -i "log when a command is allowed"β key appears.SELECT JSON_EXTRACT(json_result, '$.Log when a command is allowed by sudoers') FROM sudo_info;β observenullinstead of"true".π―οΈ More info
For context on what we were doing refer to #35120