XProtect: Apple's Built-in Malware Defense
How XProtect, XProtect Remediator, and MRT work together to protect macOS — and what Mac admins need to know about managing them
Overview
XProtect is Apple’s built-in anti-malware framework for macOS. Unlike third-party endpoint protection tools, XProtect operates silently at the system level, scanning files for known malware signatures and remediating threats without user interaction. For Mac admins managing fleets, understanding what XProtect does – and what it does not do – is essential to building a layered security posture.
XProtect Components
Apple’s malware defense is not a single tool. It consists of three distinct components that work together:
XProtect (Signature-Based Detection)
The core XProtect engine uses YARA-based signature rules to detect known malware. When a user downloads a file, opens it for the first time, or when an app is updated, XProtect checks the file against its signature database. If a match is found, the file is blocked and the user is presented with a warning dialog.
XProtect Remediator
Introduced in macOS 12.3 Monterey, XProtect Remediator runs periodic background scans to detect and remove malware that may have already landed on the system. Unlike the original XProtect, which only scans at specific trigger points, Remediator operates on a schedule and can actively remediate infections it finds. Its scan modules target specific malware families and run at defined intervals.
Malware Removal Tool (MRT)
MRT was the predecessor to XProtect Remediator. It ran after system updates and on a periodic schedule to remove known malware. On modern macOS versions, MRT has been effectively replaced by XProtect Remediator, though the binary may still be present on some systems for backward compatibility.
How XProtect Scans Work
XProtect scans are triggered at several key points:
- On first launch of a downloaded application
- When an app is opened after being updated
- When XProtect signatures are updated (a background re-scan of previously known content)
- Periodic background scans via XProtect Remediator
Apple pushes signature updates silently through the Software Update mechanism, independent of full macOS updates. These updates can arrive daily and require no user interaction or restart.
Checking XProtect Versions
Knowing which XProtect version is running across your fleet is critical for compliance and incident response. Use the following commands to check:
# Check XProtect configuration data version
system_profiler SPInstallHistoryDataType | grep -i -A 5 "XProtect"
# Check XProtect framework version directly
defaults read /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Info.plist CFBundleShortVersionString
# Check XProtect Remediator version
defaults read /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Info.plist CFBundleShortVersionString
YARA Rules Location
XProtect’s signature definitions are stored as YARA rules on disk. You can inspect them directly:
# XProtect YARA rules location
ls /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Resources/
The XProtect.yara file contains the human-readable YARA rules that define malware signatures. Reviewing these rules can help you understand exactly what threats Apple is targeting in the current signature set.
XProtect Remediator Scan Details
You can inspect when XProtect Remediator modules last ran using the system log:
# Check XProtect Remediator scan activity
log show --predicate 'subsystem == "com.apple.XProtectFramework.PluginAPI"' --last 24h
# List Remediator scan modules
ls /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/XPCServices/
Each module targets a specific malware family (e.g., Adload, Pirrit, DubRobber) and runs on its own schedule. Understanding these schedules helps you assess whether Remediator is functioning correctly on managed endpoints.
Tracking XProtect with SOFA
The SOFA (Simple Organized Feed for Apple) feed maintained by the Mac Admins community provides a machine-readable JSON feed that tracks the latest XProtect versions alongside macOS and iOS security updates. Mac admins can integrate SOFA into their monitoring workflows to alert when endpoints fall behind on XProtect signatures.
# Query SOFA feed for current XProtect version info
curl -s https://sofa.macadmins.io/v1/macos_data_feed.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
print(json.dumps(data.get('XProtectPayloads', {}), indent=2))
"
What Admins Can and Cannot Control
| Aspect | Admin Control |
|---|---|
| Signature updates | Cannot be disabled; arrive via Software Update |
| XProtect Remediator scans | Cannot be disabled or scheduled by admins |
| Gatekeeper integration | Can be managed via MDM configuration profiles |
| Update deferral | Software Update deferrals may delay signature updates |
| Monitoring | Admins can read logs and check versions |
| Custom signatures | Not supported; Apple controls all YARA rules |
Important: Software Update deferrals configured via MDM can inadvertently delay XProtect signature updates. Ensure your deferral policies account for this. Many MDM platforms allow you to defer macOS upgrades while still permitting security response updates, which include XProtect data.
Monitoring XProtect Health
For fleet management, consider building automated checks that:
- Compare installed XProtect versions against the latest available version from the SOFA feed
- Monitor XProtect Remediator logs for scan failures or malware detections
- Alert on stale signatures – if a Mac has not received an XProtect update in more than 7 days, investigate
- Include XProtect version data in your compliance dashboards alongside OS version and patch status
# Quick health check script for XProtect
xprotect_version=$(defaults read /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Info.plist CFBundleShortVersionString 2>/dev/null)
remediator_version=$(defaults read /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null)
echo "XProtect Config: ${xprotect_version:-NOT FOUND}"
echo "XProtect Remediator: ${remediator_version:-NOT FOUND}"
Key Takeaways
XProtect is a foundational layer of macOS security, but it is not a replacement for a comprehensive endpoint protection strategy. It detects known threats only, has no behavioral analysis or heuristic detection, and offers admins no ability to add custom rules. Treat XProtect as your baseline and layer additional tools – EDR, network monitoring, and user education – on top of it.