Skip to content

macos-mscp-scan v0.3.0

Choose a tag to compare

@r4kh1m r4kh1m released this 09 Aug 11:59
· 1 commit to main since this release
v0.3.0
08e983c

macos-mscp-scan v0.3.0

This release adds a security-posture baseline for personally administered Macs
and a strict AI/user trust boundary around the privileged audit phase.

Included

  • personal, the new default baseline for Macs not enrolled in organizational
    MDM;
  • effective local-state checks for FileVault, Gatekeeper, Firewall, screen
    locking, Internet Sharing, network time, and other selected controls;
  • explicit removal of policy-only rules that cannot produce meaningful results
    outside organizational device management;
  • unchanged opt-in cis_lvl1 and cis_lvl2 baselines;
  • a non-privileged preparation phase and an explicit user-only interactive
    audit phase;
  • reusable dependency caches and isolated per-run reports under $TMPDIR;
  • stable pointers to prepared and completed reports; and
  • profile definitions, custom rules, provenance, and SHA-256 evidence recorded
    with each personal report.

The personal profile is derived from the CIS Level 1 rule selection, but it is
not a CIS Benchmark assessment and does not claim CIS compliance. The scanner
does not enumerate listening ports, test external reachability, inventory
vulnerabilities, or remediate settings.

Compatibility

macOS 14 Sonoma, 15 Sequoia, and 26 Tahoe are supported on Apple Silicon and
Intel. Personal-profile generation and generated-script validation were run for
all three versions. The full privileged audit was run on macOS 26 Apple Silicon.

Safety contract

The generated mSCP audit is invoked only with --check; the wrapper never uses
--fix or --cfc. An AI agent may prepare a run but must stop before the
interactive audit. Only the user reviews the prompt and authorizes macOS
administrator authentication in their normal Terminal.

Download and verify

The release-signing key fingerprint is:

SHA256:Rt9xlHKnOMVeREiwG041268qY0kxu72vYVt+CntuF+4

Download the four release assets, verify the SHA-256 manifest and its detached
SSH signature, then extract the source archive:

set -e
release_dir="$(mktemp -d /private/tmp/macos-mscp-scan-v0.3.0.XXXXXX)"
cd "$release_dir"

curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/macos-mscp-scan-v0.3.0.tar.gz
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/SHA256SUMS
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/SHA256SUMS.sig
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/r4kh1m-release-signing-key.pub

shasum -a 256 -c SHA256SUMS
{
  printf 'r4kh1m-release namespaces="file" '
  cat r4kh1m-release-signing-key.pub
} > allowed_signers
ssh-keygen -Y verify \
  -f allowed_signers \
  -I r4kh1m-release \
  -n file \
  -s SHA256SUMS.sig < SHA256SUMS

tar -xzf macos-mscp-scan-v0.3.0.tar.gz
cd macos-mscp-scan-v0.3.0

To use an AI agent, give it the extracted directory and ask it to follow
AGENTS.md. To prepare the scan yourself:

zsh ./scan_cis.zsh

In either workflow, the script stops after preparation and prints the one
--run-prepared command that the user must run in a normal interactive
Terminal.

Feedback

Use Discussions for questions and compatibility experience, Issues for
reproducible bugs, and GitHub private vulnerability reporting for security
findings. Never post an unredacted audit report.