Detection rules › Sigma
macOS Setuid/Setgid Privilege Escalation
Detects setuid or setgid operations that transition to root (UID 0) from non-root users, which may indicate privilege escalation attempts. These syscalls allow processes to change their effective user ID or group ID, often used by attackers to gain elevated privileges. High-fidelity detection focuses on transitions to root from non-privileged users.
Known false positives
- Legitimate system utilities and services
- Software installation and updates
- Authorized administrative tools
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Rule body
title: macOS Setuid/Setgid Privilege Escalation
id: 0f3109b3-d7e5-4c8a-a082-d8f0fa7be7a1
status: experimental
description: 'Detects setuid or setgid operations that transition to root (UID 0) from
non-root users, which may indicate privilege escalation attempts.
These syscalls allow processes to change their effective user ID or group ID, often
used by attackers to gain elevated privileges. High-fidelity detection focuses on
transitions to root from non-privileged users.
'
author: Eric Brown - Nebulock, Inc.
date: 2025/10/31
modified: 2025/10/31
references:
- https://attack.mitre.org/techniques/T1548/001/
- https://attack.mitre.org/techniques/T1068/
logsource:
product: macos
service: endpointsecurity
detection:
selection_setuid:
esf.event_type: 24
event.action: setuid
selection_setgid:
esf.event_type: 25
event.action: setgid
selection_to_root:
TargetUserId: 0
selection_root_source:
UserId: 0
condition: (selection_setuid or selection_setgid) and selection_to_root and not selection_root_source
falsepositives:
- Legitimate system utilities and services
- Software installation and updates
- Authorized administrative tools
fields:
- event_type
- event_name
- ProcessId
- User
- UserId
- TargetUser
- TargetUserId
tags:
- attack.privilege_escalation
- attack.t1548.001
- attack.t1068
level: high
Stages and Predicates
Stage 0: condition
(selection_setuid or selection_setgid) and selection_to_root and not selection_root_sourceStage 1: selection_setuid
selection_setuid:
esf.event_type: 24
event.action: setuid
Stage 2: selection_setgid
selection_setgid:
esf.event_type: 25
event.action: setgid
Stage 3: selection_to_root
selection_to_root:
TargetUserId: 0
Stage 4: not selection_root_source
selection_root_source:
UserId: 0
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
UserId | eq | 0 | excludes:UserId field:"UserId" value:"0" |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
TargetUserId | eq |
| field:"TargetSid" kind:eq value:"0" |
esf.event_type | eq |
| field:"esf.event_type" kind:eq |
event.action | eq |
| field:"EventType" kind:eq |