Skip to content

Add macOS Security Overview#270

Open
friadev wants to merge 151 commits intoPrivSec-dev:mainfrom
friadev:macos
Open

Add macOS Security Overview#270
friadev wants to merge 151 commits intoPrivSec-dev:mainfrom
friadev:macos

Conversation

@friadev
Copy link

@friadev friadev commented Aug 8, 2024

Want to cover FileVault, App Sandbox, Hardened Runtime, XProtect, Gatekeeper, Notarization, threat models for each

Disclosure: I copied/used parts of https://github.com/drduh/macOS-Security-and-Privacy-Guide?tab=readme-ov-file#app-sandbox but I wrote those parts so I'm only plagiarizing myself. I also copied parts of official Apple documentation, didn't want to change them for the sake of accurate information. Wherever I do I link back to the source.

@netlify
Copy link

netlify bot commented Aug 8, 2024

Deploy Preview for privsec-dev ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit c6150d2
🔍 Latest deploy log https://app.netlify.com/sites/privsec-dev/deploys/67d7dde2ca64d4000832aa6c
😎 Deploy Preview https://deploy-preview-270--privsec-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@friadev friadev marked this pull request as ready for review August 10, 2024 04:17
@friadev friadev marked this pull request as draft August 10, 2024 04:29
@friadev friadev marked this pull request as ready for review August 10, 2024 04:37
@nihil-admirari
Copy link

NIST offers configuration profiles and scripts for automatic configuration: https://github.com/usnistgov/macos_security/tree/sequoia. Can some of them be recommended?


macOS comes with a built-in [firewall](https://support.apple.com/guide/mac-help/change-firewall-settings-on-mac-mh11783/mac). Make sure it's enabled at the very least, but you can block all incoming connections for the best security/privacy.

Avoid third-party firewalls like LittleSnitch or LuLu that require you to install a system extension. They don't cover DNS so data exfiltration is still possible.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. LittleSnitch and LuLu block outgoing connections; built-in firewall – only incoming. There's no built-in replacement for these tools.
  2. Latest version of LittleSnitch does cover DNS. With LuLu, it's possible to use dnscrypt-proxy locally.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are other bypasses. This should be updated with the empty TCP connection bypass - that one is trivial


All encryption keys are handled by the Secure Enclave. Swap space is also [encrypted](https://support.apple.com/en-euro/guide/mac-help/mh11852/mac).

Your Mac is at its most secure when it's fully off and the data is at rest. Depending on your threat model, it might behoove you to turn your Mac off completely whenever you're not using it, especially since Macs do not have memory encryption.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS can be forced to clear FileVault keys from memory when hibernating by executing:

sudo pmset -a hibernatemode 25

and installing DestroyFVKeyOnStandby profile.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually documented anywhere by apple or nah?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

man pmset, online version e.g. at https://www.unix.com/man_page/osx/1/pmset/

hibernatemode = 25 (binary 0001 1001) is only settable via pmset. The system will store a copy of memory to persistent storage (the disk), and will remove power to memory. The system will restore from disk image. If you want "hibernation" - slower sleeps, slower wakes, and better battery life, you should use this setting.

Configuration profiles documentation: https://developer.apple.com/documentation/devicemanagement/fdefilevaultoptions.

All configuration profiles in an official Git repository; check new commits after every system update to see the difference between releases: https://github.com/apple/device-management/tree/release/mdm/profiles.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hibernatemode = 25 makes fingerprint unlock useless. Everytime you trying to wake Mac from sleep you have to wait for 10 seconds and input your password.

@nihil-admirari
Copy link

nihil-admirari commented Jan 16, 2025

May be worth adding:

Compared to Linuxes, macOS doesn't sanitise $HOME when executing sudo: https://scriptingosx.com/2024/03/zsh-scripts-and-root-escalations/. It means that the entire content of shell init scripts is executed as root when elevating.

HOME can be removed from the following line in /etc/sudoers to mitigate it:

Defaults  env_keep += "HOME MAIL"

It may also be worthwhile to mark shell init scripts as immutable as the link suggests.

@TommyTran732
Copy link
Member

@friadev @nihil-admirari is right on the point about schg - it is not bypassable like chattr -i on Linux. This is quite interesting. We 100% should mention this. And we gotta somehow word it so that its clear this mitigates attacks against the shell but still will not stop other scenarios of unsandboxed apps attacking each other

@oppressor1761
Copy link

oppressor1761 commented Mar 20, 2025

I suggest to use configuration profiles instead of command line to alter system settings.
It's easier to keep track of settings you made and settings in profiles cannot be overwritten. There is a specific payload for you to make custom changes.
Configuration Profiles also gives user additional control over macOS functions. It allows users to turn off a bunch of functions to further reduce attack surface. For example I have the following profile for my Mac

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>PayloadDisplayName</key>
			<string>SystemPolicyControl</string>
			<key>PayloadType</key>
			<string>com.apple.systempolicy.control</string>
			<key>PayloadUUID</key>
			<string>**********************************</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.systempolicy.control.**********************************</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>EnableAssessment</key>
			<true/>
			<key>AllowIdentifiedDevelopers</key>
			<false/>
		</dict>
		<dict>
			<key>PayloadDisplayName</key>
			<string>EnergySaver</string>
			<key>PayloadType</key>
			<string>com.apple.MCX</string>
			<key>PayloadUUID</key>
			<string>**********************************</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.MCX.**********************************</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>DestroyFVKeyOnStandby</key>
			<true/>
			<key>com.apple.EnergySaver.portable.BatteryPower</key>
			<dict>
				<key>Hibernate Mode</key>
				<integer>3</integer>
			</dict>
			<key>com.apple.EnergySaver.portable.BatteryPower-ProfileNumber</key>
            <integer>-1</integer>
			<key>com.apple.EnergySaver.portable.ACPower</key>
			<dict>
				<key>Hibernate Mode</key>
				<integer>3</integer>
			</dict>
			<key>com.apple.EnergySaver.portable.ACPower-ProfileNumber</key>
            <integer>-1</integer>
		</dict>
		<dict>
			<key>PayloadDisplayName</key>
			<string>ManagedPreferences</string>
			<key>PayloadType</key>
			<string>com.apple.ManagedClient.preferences</string>
			<key>PayloadUUID</key>
			<string>**********************************</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.ManagedClient.preferences.**********************************</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>PayloadContent</key>
			<dict>
                <key>com.apple.finder</key>
                <dict>
					<key>Forced</key>
					<array>
						<dict>
							<key>mcx_preference_settings</key>
							<dict>
								<key>AppleShowAllFiles</key>
								<string>true</string>
							</dict>
						</dict>
					</array>
                </dict>
            </dict>
		</dict>
		<dict>
			<key>PayloadDisplayName</key>
			<string>Restrictions</string>
			<key>PayloadType</key>
			<string>com.apple.applicationaccess</string>
			<key>PayloadUUID</key>
			<string>**********************************</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.applicationaccess.**********************************</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>forceOnDeviceOnlyDictation</key>
			<true/>
			<key>allowAssistant</key>
			<false/>
			<key>allowCloudFreeform</key>
			<false/>
			<key>allowApplePersonalizedAdvertising</key>
			<false/>
			<key>allowActivityContinuation</key>
			<false/>
			<key>allowPasswordProximityRequests</key>
			<false/>
			<key>allowPasswordSharing</key>
			<false/>
			<key>allowDiagnosticSubmission</key>
			<false/>
			<key>allowDiagnosticSubmissionModification</key>
			<false/>
			<key>allowCloudPhotoLibrary</key>
			<false/>
			<key>allowMusicService</key>
			<false/>
			<key>allowPersonalizedHandwritingResults</key>
			<false/>
			<key>allowPodcasts</key>
			<false/>
			<key>allowSpellCheck</key>
			<false/>
			<key>allowProximitySetupToNewDevice</key>
			<false/>
			<key>allowRadioService</key>
			<false/>
			<key>allowPredictiveKeyboard</key>
			<false/>
			<key>allowNotesTranscriptionSummary</key>
			<false/>
			<key>allowSafariSummary</key>
			<false/>
			<key>allowUnpairedExternalBootToRecovery</key>
			<false/>
			<key>allowVideoConferencing</key>
			<false/>
			<key>allowVisualIntelligenceSummary</key>
			<false/>
			<key>allowSharedDeviceTemporarySession</key>
			<false/>
			<key>allowSharedStream</key>
			<false/>
			<key>allowAutoCorrection</key>
			<false/>
			<key>allowRemoteAppPairing</key>
			<false/>
			<key>allowPairedWatch</key>
			<false/>
			<key>allowPassbookWhileLocked</key>
			<false/>
			<key>allowCloudMail</key>
			<false/>
			<key>allowNews</key>
			<false/>
			<key>allowNFC</key>
			<false/>
			<key>allowCloudAddressBook</key>
			<false/>
			<key>allowCloudBackup</key>
			<false/>
			<key>allowCloudCalendar</key>
			<false/>
			<key>allowCloudNotes</key>
			<false/>
			<key>allowCloudBookmarks</key>
			<false/>
			<key>allowCloudKeychainSync</key>
			<false/>
			<key>allowCloudDocumentSync</key>
			<false/>
			<key>allowSpotlightInternetResults</key>
			<false/>
			<key>allowContentCaching</key>
			<false/>
			<key>allowCloudDesktopAndDocuments</key>
			<false/>
			<key>allowGenmoji</key>
			<false/>
			<key>allowMultiplayerGaming</key>
			<false/>
			<key>allowImageWand</key>
			<false/>
			<key>allowMailSmartReplies</key>
			<false/>
			<key>allowManagedAppsCloudSync</key>
			<false/>
			<key>allowMailSummary</key>
			<false/>
			<key>allowiPhoneWidgetsOnMac</key>
			<false/>
			<key>allowiTunes</key>
			<false/>
			<key>allowLockScreenControlCenter</key>
			<false/>
			<key>allowLockScreenNotificationsView</key>
			<false/>
			<key>allowLockScreenTodayView</key>
			<false/>
			<key>allowCloudPrivateRelay</key>
			<false/>
			<key>allowCloudReminders</key>
			<false/>
			<key>allowDiagnosticSubmissionModification</key>
			<false/>
			<key>allowEnterpriseBookBackup</key>
			<false/>
			<key>allowEnterpriseBookMetadataSync</key>
			<false/>
			<key>allowFindMyFriendsModification</key>
			<false/>
			<key>allowDefinitionLookup</key>
			<false/>
			<key>allowDictation</key>
			<false/>
			<key>allowUniversalControl</key>
			<false/>
			<key>allowImagePlayground</key>
			<false/>
			<key>allowiPhoneMirroring</key>
			<false/>
			<key>allowWritingTools</key>
			<false/>
			<key>allowBookstore</key>
			<false/>
			<key>allowDefinitionLookup</key>
			<false/>
			<key>allowGameCenter</key>
			<false/>
			<key>allowExternalIntelligenceIntegrations</key>
			<false/>
			<key>allowAccountModification</key>
			<false/>
			<key>allowAutoUnlock</key>
			<false/>
			<key>allowStartupDiskModification</key>
			<false/>
			<key>allowPasswordAutoFill</key>
			<false/>
			<key>forceAuthenticationBeforeAutoFill</key>
			<true/>
			<key>safariAllowAutoFill</key>
			<false/>
			<key>allowFindMyDevice</key>
			<false/>
			<key>allowFindMyFriends</key>
			<false/>
			<key>allowUSBRestrictedMode</key>
			<true/>
			<key>allowChat</key>
			<false/>
			<key>allowExplicitContent</key>
			<true/>
			<key>allowRemoteScreenObservation</key>
			<false/>
			<key>allowBookstoreErotica</key>
			<true/>
			<key>forceAssistantProfanityFilter</key>
			<false/>
			<key>forceClassroomAutomaticallyJoinClasses</key>
			<false/>
			<key>forceClassroomRequestPermissionToLeaveClasses</key>
			<false/>
			<key>forceClassroomUnpromptedAppAndDeviceLock</key>
			<false/>
			<key>forceClassroomUnpromptedScreenObservation</key>
			<false/>
			<key>forceDelayedAppSoftwareUpdates</key>
			<false/>
			<key>forceDelayedMajorSoftwareUpdates</key>
			<false/>
			<key>forceDelayedSoftwareUpdates</key>
			<false/>
			<key>allowAppleIntelligenceReport</key>
			<false/>
			<key>forceAirPlayOutgoingRequestsPairingPassword</key>
			<true/>
			<key>forceAirPlayIncomingRequestsPairingPassword</key>
			<true/>
			<key>forceEncryptedBackup</key>
			<true/>
			<key>forceLimitAdTracking</key>
			<true/>
			<key>forceOnDeviceOnlyTranslation</key>
			<true/>
			<key>forceAirPrintTrustedTLSRequirement</key>
			<true/>
			<key>forceAuthenticationBeforeAutoFill</key>
			<true/>
			<key>allowAddingGameCenterFriends</key>
			<false/>
			<key>allowAirPrint</key>
			<false/>
			<key>allowAirPrintCredentialsStorage</key>
			<false/>
			<key>allowAirPrintiBeaconDiscovery</key>
			<false/>
			<key>allowAssistantUserGeneratedContent</key>
			<false/>
			<key>allowAssistantWhileLocked</key>
			<false/>
		</dict>
	</array>
	<key>PayloadDisplayName</key>
	<string>profile</string>
	<key>PayloadIdentifier</key>
	<string>**********************************</string>
	<key>PayloadRemovalDisallowed</key>
	<true/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadScope</key>
	<string>System</string>
	<key>PayloadUUID</key>
	<string>**********************************</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
	<key>TargetDeviceType</key>
	<integer>5</integer>
</dict>
</plist>

@nihil-admirari
Copy link

Is anyone aware of an in-depth analysis of macOS telemetry?

Germany's Federal Office for Information Security did one for Windows: #287 (comment). Microsoft also provides Diagnostic Data Viewer which allows one to look at the data that was collected.

Doug Leith from Trinity College did analysis on stock Android and iOS: https://www.scss.tcd.ie/doug.leith/pubs/apple_google2.pdf

We find that even when minimally configured and the handset is idle both iOS and Google Android share data with Apple/Google on average every 4.5 mins. The phone IMEI, hardware serial number, SIM serial number and IMSI, handset phone number etc are shared with Apple and Google. Both iOS and Google Android transmit telemetry, despite the user explicitly opting out of this. When a SIM is inserted both iOS and Google Android send details to Apple/Google. iOS sends the MAC addresses of nearby devices, e.g. other handsets and the home gateway, to Apple together with their GPS location. Users have no opt out from this and currently there are few, if any, realistic options for preventing this data sharing.

macOS apparently transmits tons of data to Apple: https://sneak.berlin/20210202/macos-11.2-network-privacy/. There wasn't an attempt to decrypt it to find out what is transmitted exactly, compared to Windows, Android, and iOS.

@friadev
Copy link
Author

friadev commented Apr 9, 2025

Is anyone aware of an in-depth analysis of macOS telemetry?

Germany's Federal Office for Information Security did one for Windows: #287 (comment). Microsoft also provides Diagnostic Data Viewer which allows one to look at the data that was collected.

Doug Leith from Trinity College did analysis on stock Android and iOS: https://www.scss.tcd.ie/doug.leith/pubs/apple_google2.pdf

We find that even when minimally configured and the handset is idle both iOS and Google Android share data with Apple/Google on average every 4.5 mins. The phone IMEI, hardware serial number, SIM serial number and IMSI, handset phone number etc are shared with Apple and Google. Both iOS and Google Android transmit telemetry, despite the user explicitly opting out of this. When a SIM is inserted both iOS and Google Android send details to Apple/Google. iOS sends the MAC addresses of nearby devices, e.g. other handsets and the home gateway, to Apple together with their GPS location. Users have no opt out from this and currently there are few, if any, realistic options for preventing this data sharing.

macOS apparently transmits tons of data to Apple: https://sneak.berlin/20210202/macos-11.2-network-privacy/. There wasn't an attempt to decrypt it to find out what is transmitted exactly, compared to Windows, Android, and iOS.

On iOS you can easily see the analytics it sends in the settings, can't find it on macOS though. It's really nothing of substance, just a bunch of crash reports and random stuff. No personal data or anything from what I can see. It's really very boring. I think if there was anything interesting it definitely would be reported on by now.

@oppressor1761
Copy link

@nihil-admirari
Copy link

nihil-admirari commented Apr 9, 2025

It's really nothing of substance, just a bunch of crash reports and random stuff. No personal data or anything from what I can see. It's really very boring. I think if there was anything interesting it definitely would be reported on by now.

It was found out and reported, please look at the quote:

The phone IMEI, hardware serial number, SIM serial number and IMSI, handset phone number etc are shared with Apple and Google. Both iOS and Google Android transmit telemetry, despite the user explicitly opting out of this. When a SIM is inserted both iOS and Google Android send details to Apple/Google. iOS sends the MAC addresses of nearby devices, e.g. other handsets and the home gateway, to Apple together with their GPS location. Users have no opt out from this and currently there are few, if any, realistic options for preventing this data sharing.

The info was obtained by jailbreaking iPhone, patching SSL library to accept any connection as valid, and then decrypting what iPhone sends to Apple on a MitM proxy, with iPhone thinking that it's talking to genuine Apple servers. It doesn't show up in analytics logs.

Same was done to Android. Windows telemetry components were disassembled (if I'm not mistaken). The question is: does anybody know about similar research done on macOS?

@TommyTran732
Copy link
Member

I suggest to use configuration profiles instead of command line to alter system settings. It's easier to keep track of settings you made and settings in profiles cannot be overwritten. There is a specific payload for you to make custom changes. Configuration Profiles also gives user additional control over macOS functions. It allows users to turn off a bunch of functions to further reduce attack surface.

I'd like to note that this is very annoying to deal with if you have lockdown mode

@pingu-the-penguin
Copy link

Hello,

What's the consensus on "Protect Mail Activity" vs unchecking it and checking "Hide IP Address and Block All Remote Content".

Protect Mail Activity:

Mail Privacy Protection

Emails you receive may include remote content that allows the email’s sender to learn information about you. When you open an email, information about your Mail activity can be collected by the sender without transparency and an ability to control what information is shared. Email senders may learn when and how many times you opened their email, whether you forwarded the email, your Internet Protocol (IP) address, and other data that can be used to build a profile of your behaviour and learn your location.

Protect Mail Activity helps protect your privacy by preventing email senders, including Apple, from learning information about your Mail activity. When you receive an email in the Mail app, rather than downloading remote content when you open an email, Protect Mail Activity downloads remote content in the background by default — regardless of whether you engage with the email. Apple does not learn any information about the content.

In addition, Protect Mail Activity routes all remote content downloaded by Mail through two separate relays operated by different entities. The first knows your IP address, but not the remote Mail content you receive. The second knows the remote Mail content you receive, but not your IP address, instead providing a generalised identity to the destination. This way, no single entity has the information to identify both you and the remote Mail content you receive. Senders can’t use your IP address as a unique identifier to connect your activity across websites or apps to build a profile about you.

You can disable Protect Mail Activity at any time in iOS and iPadOS by going to Settings > Apps > Mail > Privacy Protection, then tapping to turn off Protect Mail Activity. On Mac, go to Mail > Settings > Privacy, then unselect Protect Mail Activity.

If you choose to disable Protect Mail Activity, the Hide IP Address feature will still mask your IP address using the same two-separate-internet-relays design. You can disable Hide IP Address at any time in iOS and iPadOS by going to Settings > Apps > Mail > Privacy Protection, then tapping to turn off Hide IP Address. On Mac, go to Mail > Settings > Privacy, then unselect Hide IP Address.

@Ganwtrs
Copy link
Contributor

Ganwtrs commented Dec 13, 2025

It seems like M5 Macs may have EMTE. Note that Apple’s documentation is misleading.

@mhgtj2x888-lang
Copy link

Why it's not merged

@netlify
Copy link

netlify bot commented Jan 19, 2026

Deploy Preview for privsec-dev ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 860f33c
🔍 Latest deploy log https://app.netlify.com/projects/privsec-dev/deploys/696eb616a1cd230007ce6e45
😎 Deploy Preview https://deploy-preview-270--privsec-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@friadev
Copy link
Author

friadev commented Jan 19, 2026

I think this PR got bogged down in a lot of minutia. It would be easier to get the main points in and then add improvements one by one over individual PRs, it's really hard to focus when there's so many different suggestions in the same PR.

@6c67b9
Copy link

6c67b9 commented Jan 26, 2026

If you need developer tools like Python and git, you can install Xcode and get them with automatic updates without having to install any third-party software. Alternatively, you can use the command xcode-select --install to install the tools without Xcode.

This adds a lot of attack surface to your machine, so it's best to avoid installing developer tools unless you absolutely need them.

Is there any source?

@Ganwtrs
Copy link
Contributor

Ganwtrs commented Jan 27, 2026

@6c67b9
Copy link

6c67b9 commented Jan 31, 2026

@nihil-admirari
Copy link

nothing there is about security

Everything installed on a device can potentially be abused in creative ways, thus increasing the attack surface. If you want a specific example of using developer tools for malicious purposes, see e.g. how to use Python to bypass application whitelisting:

... the Python command interpreter should be whitelisted by most (or maybe all) deployments of Santa, since:

  • It is common for application whitelisting solutions to whitelist all binaries included in the base OS installation.
  • The Python command interpreter provided by the system is signed by Apple.
  • Python is a common dependency for legitimate applications, and failure to whitelist could be very disruptive.

The key point to remember is that the Python ctypes module allows one to call exported functions in unmanaged code.

To be fair, any interpreter can be used for such a purpose, which is one of the reasons why interpreters bundled with macOS were deprecated and Python was actually removed. (Perl and Ruby still remain; shells and awk can't be removed, but they are somewhat limited; I've no idea whether AppleScript or OSA JavaScript can be used to invoke arbitrary syscalls.)

Some references you've been looking for:

GTFOBins is a curated list of Unix-like executables that can be used to bypass local security restrictions in misconfigured systems.

Please note that this is not a list of exploits, and the programs listed here are not vulnerable per se, rather, GTFOBins is a compendium about how to live off the land when you only have certain executables available.

(Windows version of the above: LOLBAS, LOLDrivers, and Applications that can bypass App Control and how to block them)

On top of that, XCode ships with Python 3.9.6, which is not just EoL but the last release was actually 3.9.25. Apple does have a history of shipping unpatched software.


## Other Executables

Gatekeeper, the App Sandbox, and the Hardened Runtime only apply to apps (packaged with the .app extension) and not other types of executables. They also do not apply to CLI utils shipped inside an app if you invoke them directly using the terminal.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS has sandbox-exec for CLI tools: https://igorstechnoclub.com/sandbox-exec/. Despite being deprecated a long time ago, it's still widely used by browsers (Chromium, Firefox), AI agents (OpenAI Codex, Anthropic Sandbox Runtime) and the system itself. According to https://stackoverflow.com/a/61880980:

Internally, it [AppSandbox] makes use of the older sandboxing profile system above by applying the profile /System/Library/Sandbox/Profiles/application.sb during app startup. App Sandbox is much more limited than the full profile system, relying only on a few flags and lists, which can't offer the same flexibility as using profiles directly. As far as I know, there's no way to control this newer system as a user, since you'd needed repackage and resign an app to do so.

As a user, sandboxing profiles for sandbox-exec are still your main and only option on macOS. While it may say deprecated, it doesn't look like they are going away any time soon either, since it's still widely used in both profile form and as an internal layer for the newer App Sandbox feature.


## Securely Erase Your Mac

To completely wipe your Mac securely, use the [Erase All Content and Settings](https://support.apple.com/en-us/102664) option. This will ensure all data is securely wiped and no traces of your ownership are left on the Mac. This is important so that the next owner is able to set it up without running into issues with verification. You'll need to know an Administrator password and Apple Account password to turn off Find My if you've enabled it previously.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

‘Erase All Content and Settings‘ only wipes the data volumes. Full wipe of the entire SSD can only be done by using DFU recovery. Intermediate options include erasing Boot Volume Group and Apple_APFS container. See https://eclecticlight.co/2026/02/19/how-to-erase-your-apple-silicon-mac/ for all the details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[c] new content Pull requests that add an entirely new article

Development

Successfully merging this pull request may close these issues.

9 participants