Full Metal Mac FullMetalMac.com
macOS Security intermediate XProtect malware MRT YARA

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

Published: Feb 14, 2026 10 min read

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

AspectAdmin Control
Signature updatesCannot be disabled; arrive via Software Update
XProtect Remediator scansCannot be disabled or scheduled by admins
Gatekeeper integrationCan be managed via MDM configuration profiles
Update deferralSoftware Update deferrals may delay signature updates
MonitoringAdmins can read logs and check versions
Custom signaturesNot 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:

  1. Compare installed XProtect versions against the latest available version from the SOFA feed
  2. Monitor XProtect Remediator logs for scan failures or malware detections
  3. Alert on stale signatures – if a Mac has not received an XProtect update in more than 7 days, investigate
  4. 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.

Related Articles