Macos security bypass
Skill ShulkwiSEC/bb-huge/skills/curated/macos-security-bypass
bb-huge π€ , Personal bug bounty findings hub and bug bounty orchestration for multiple agents
npx -y skills add ShulkwiSEC/bb-huge --skill macos-security-bypassAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
macOS security bypass playbook. Use when targeting macOS endpoints and need to bypass TCC, Gatekeeper, SIP, sandbox, code signing, or entitlement-based protections during authorized red team or pentest engagements.
SKILL.md
13.3 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it
SKILL: macOS Security Bypass β Expert Attack Playbook
AI LOAD INSTRUCTION: Expert macOS security bypass techniques. Covers TCC bypass, Gatekeeper evasion, SIP restrictions, sandbox escape, and entitlement abuse. Base models miss version-specific bypass nuances and protection interaction effects.
0. RELATED ROUTING
Before going deep, consider loading:
- macos-process-injection when you need dylib injection, XPC exploitation, or Electron abuse after achieving initial access
- linux-privilege-escalation for Unix-layer privesc techniques that also apply to macOS (SUID, cron, writable paths)
- linux-security-bypass for shared Unix security bypass concepts
Advanced Reference
Also load TCC_BYPASS_MATRIX.md when you need:
- Per-macOS-version TCC bypass mapping
- Protection-type-specific techniques (Camera, Microphone, FDA, Automation)
- MDM/configuration profile abuse patterns
1. TCC (TRANSPARENCY, CONSENT, CONTROL) OVERVIEW
TCC is macOS's permission framework controlling access to sensitive resources (camera, microphone, contacts, full disk access, etc.).
1.1 TCC Database Locations
| Database | Path | Controls | Protection |
|---|---|---|---|
| User-level | ~/Library/Application Support/com.apple.TCC/TCC.db | Per-user consent decisions | SIP-protected since Catalina |
| System-level | /Library/Application Support/com.apple.TCC/TCC.db | System-wide consent decisions | SIP-protected |
| MDM-managed | Via configuration profiles | Push PPPC (Privacy Preferences Policy Control) | Device management |
-- Query TCC database (requires FDA or SIP off)
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
"SELECT service, client, allowed FROM access;"
1.2 TCC Bypass Categories
| Category | Mechanism | Typical Prerequisite |
|---|---|---|
| FDA app exploitation | Piggyback on apps already granted Full Disk Access | Write access to FDA app's bundle or plugin dir |
| Direct DB modification | Edit TCC.db to grant consent | SIP disabled or FDA |
| Inherited permissions | Child process inherits parent's TCC grants | Code execution in context of FDA-granted app |
| Automation abuse | Apple Events / osascript to control TCC-granted app | Automation permission (lower bar than direct TCC) |
| Mounting tricks | Mount a crafted disk image containing modified TCC.db | Local access, pre-Ventura |
| SQL injection in TCC | Malformed bundle IDs triggering SQL injection in TCC subsystem | CVE-2023-32364 and similar |
1.3 Known TCC Bypass Patterns
Terminal / iTerm FDA inheritance: Terminal.app granted FDA β any command run inherits FDA β read any file.
# If Terminal has FDA, this reads protected files directly
cat ~/Library/Mail/V*/MailData/Envelope\ Index
cat ~/Library/Messages/chat.db
Finder automation: Automate Finder (lower permission bar) to access files in protected locations.
tell application "Finder"
set f to POSIX file "/Users/target/Library/Mail/V9/MailData/Envelope Index"
duplicate f to desktop
end tell
System Preferences / System Settings injection: Inject into a process that already has TCC permissions by writing to its Application Scripts folder.
MDM profile abuse: PPPC profiles can pre-approve TCC permissions. Rogue MDM enrollment or compromised MDM server β push PPPC payload.
2. GATEKEEPER BYPASS
Gatekeeper blocks unsigned or unnotarized apps from executing. Core enforcement depends on the com.apple.quarantine extended attribute.
2.1 Quarantine Attribute Removal
# Check quarantine attribute
xattr -l /path/to/app
# Output: com.apple.quarantine: 0083;...
# Remove quarantine (requires write access)
xattr -d com.apple.quarantine /path/to/app
# Recursive for app bundles
xattr -rd com.apple.quarantine /path/to/MyApp.app
2.2 Bypass Techniques
| Technique | How It Works | macOS Version |
|---|---|---|
xattr -d removal | Remove quarantine before execution | All (requires local access) |
| App translocation bypass | Apps in certain locations skip translocation | Pre-Catalina |
| Archive tools that strip quarantine | Some unarchiver apps don't propagate quarantine | Varies by tool |
| Unsigned code in signed bundle | Notarized app bundles with unsigned nested helpers | Pre-Ventura (CVE-2022-42821) |
| Safari auto-extract + open | Downloaded ZIP auto-extracted, app opened before quarantine fully applied | Safari-specific, patched |
| ACL abuse | com.apple.quarantine can be blocked by ACLs set before download | Requires pre-positioning |
| Disk image (DMG) tricks | DMG mounted from network share may not carry quarantine | Network share context |
| BOM (Bill of Materials) bypass | Crafted BOM in pkg skips quarantine for extracted files | CVE-2022-22616 |
2.3 Gatekeeper Check Flow
App launched
β
βββ com.apple.quarantine attribute present?
β βββ No β execute (no Gatekeeper check)
β βββ Yes β
β
βββ Code signature valid?
β βββ No β block
β βββ Yes β
β
βββ Notarized (stapled ticket or online check)?
β βββ No β block (Catalina+)
β βββ Yes β execute
β
βββ User override? (right-click β Open β confirm)
βββ Bypasses Gatekeeper once for this app
3. SIP (SYSTEM INTEGRITY PROTECTION)
SIP restricts root from modifying protected system locations, loading unsigned kernel extensions, and debugging system processes.
3.1 SIP-Protected Locations
/System/
/usr/ (except /usr/local/)
/bin/
/sbin/
/var/ (selected subdirs)
/Applications/ (pre-installed Apple apps)
3.2 SIP Status & Configuration
csrutil status # Check SIP status
csrutil disable # Recovery Mode only
csrutil enable --without fs # Partial disable (risky)
3.3 Entitlements That Bypass SIP
| Entitlement | Effect |
|---|---|
com.apple.rootless.install | Write to SIP-protected paths |
com.apple.rootless.install.heritable | Child processes inherit SIP bypass |
com.apple.security.cs.allow-unsigned-executable-memory | JIT/unsigned code in memory |
com.apple.private.security.clear-library-validation | Load unsigned libraries |
3.4 Historical SIP Bypasses
| CVE | macOS | Technique |
|---|---|---|
| CVE-2021-30892 (Shrootless) | Monterey pre-12.0.1 | system_installd + post-install script in signed pkg |
| CVE-2022-22583 | Monterey pre-12.2 | packagekit + mount point manipulation |
| CVE-2022-46689 (MacDirtyCow) | Ventura pre-13.1 | Race condition on copy-on-write, overwrite SIP files |
| CVE-2023-32369 (Migraine) | Ventura pre-13.4 | Migration Assistant TCC/SIP bypass via systemmigrationd |
| CVE-2024-44243 | Sequoia pre-15.2 | StorageKit daemon exploitation |
4. SANDBOX ESCAPE
macOS sandboxing (App Sandbox, via sandbox-exec or entitlements) restricts app access to filesystem, network, and IPC.
4.1 Office Sandbox Escape Patterns
| Vector | Description |
|---|---|
| Open/Save dialog abuse | User grants file access via dialog β macro reads/writes beyond sandbox |
~/Library/LaunchAgents/ persistence | Some sandbox profiles allow writing LaunchAgent plists |
| Login Items manipulation | Add login item pointing to payload outside sandbox |
| Shared container exploitation | Multiple apps sharing the same App Group container |
4.2 IPC-Based Escape
| IPC Mechanism | Escape Vector |
|---|---|
| XPC Services | Connect to privileged XPC service with insufficient client validation |
| Mach Ports | Obtain send right to privileged task port |
| Apple Events | Automate unsandboxed app to perform actions |
| Distributed Notifications | Signal unsandboxed helper to execute payload |
| Pasteboard | Write payload to pasteboard, have unsandboxed app consume it |
4.3 Browser Sandbox
- Chromium: Multi-process model, renderer is sandboxed, browser process is not
- Safari: WebContent process sandboxed, parent Safari process has more privileges
- Exploit chain: renderer RCE β sandbox escape (via IPC bug to browser process) β system access
5. CODE SIGNING & ENTITLEMENTS
5.1 Inspecting Signatures and Entitlements
codesign -dv --verbose=4 /path/to/app # Signature details
codesign -d --entitlements :- /path/to/app # Dump entitlements
security cms -D -i /path/to/mobileprovision # Provisioning profile
# Verify signature validity
codesign --verify --deep --strict /path/to/app
spctl --assess --type execute /path/to/app # Gatekeeper assessment
5.2 Entitlement Abuse for Privilege Escalation
| Entitlement | Abuse Scenario |
|---|---|
com.apple.security.cs.disable-library-validation | Load attacker dylib into entitled process |
com.apple.security.cs.allow-dyld-environment-variables | DYLD_INSERT_LIBRARIES injection |
com.apple.security.get-task-allow | Attach debugger, inject code |
com.apple.security.cs.debugger | Debug any process |
com.apple.private.apfs.revert-to-snapshot | Revert APFS snapshots, bypass modifications |
5.3 Hardened Runtime Bypass
Hardened Runtime prevents: DYLD env vars, debugging, unsigned memory execution. Bypasses:
- Find entitled apps that weaken Hardened Runtime (
disable-library-validation) - Exploit JIT-entitled apps (browsers, VMs) for unsigned code execution
- Use
get-task-allowentitled debug builds left in production
5.4 Library Validation Bypass
Library validation ensures only Apple-signed or same-team-signed dylibs load.
# Find apps with library validation disabled
codesign -d --entitlements :- /Applications/*.app/Contents/MacOS/* 2>/dev/null | \
grep -l "disable-library-validation"
6. PERSISTENCE AFTER BYPASS
| Method | Location | Survives Reboot | Notes |
|---|---|---|---|
| LaunchAgent | ~/Library/LaunchAgents/ | Yes | User-level, runs at login |
| LaunchDaemon | /Library/LaunchDaemons/ | Yes | Root-level, runs at boot |
| Login Items | ~/Library/Application Support/com.apple.backgroundtaskmanagementagent/ | Yes | Visible in System Settings |
| Cron | crontab -e | Yes | Often overlooked by defenders |
| Dylib hijack | Writable dylib search path | Yes | Triggered when target app launches |
| Folder Action | ~/Library/Scripts/Folder Action Scripts/ | Yes | Triggers on folder events |
7. macOS SECURITY BYPASS DECISION TREE
Target is macOS endpoint
β
βββ Need to execute untrusted binary?
β βββ Quarantine attribute present?
β β βββ Yes β xattr -d com.apple.quarantine (Β§2.1)
β β βββ No β execute directly
β βββ Gatekeeper still blocks?
β βββ Signed but not notarized β right-click β Open override
β βββ Unsigned β embed in signed bundle or use archive tricks (Β§2.2)
β
βββ Need access to TCC-protected resources?
β βββ FDA-granted app available?
β β βββ Yes β exploit FDA app context (Β§1.3)
β β βββ No β
β βββ Automation permission obtainable?
β β βββ Yes β Apple Events to TCC-granted app (Β§1.3)
β β βββ No β
β βββ SIP disabled?
β β βββ Yes β direct TCC.db modification (Β§1.2)
β β βββ No β check version-specific TCC bypass (β TCC_BYPASS_MATRIX.md)
β βββ MDM present?
β βββ Compromised MDM β push PPPC profile (Β§1.3)
β
βββ Need to bypass SIP?
β βββ Check macOS version β historical SIP CVE? (Β§3.4)
β βββ Find entitled Apple binary β piggyback SIP-bypass entitlement (Β§3.3)
β βββ Recovery Mode access? β csrutil disable (Β§3.2)
β
βββ Need sandbox escape?
β βββ Office macro context β dialog/LaunchAgent tricks (Β§4.1)
β βββ XPC service with weak validation β IPC escape (Β§4.2)
β βββ Browser context β renderer β sandbox escape chain (Β§4.3)
β
βββ Need to inject into signed process?
β βββ disable-library-validation entitlement? β dylib injection
β βββ allow-dyld-environment-variables? β DYLD_INSERT_LIBRARIES
β βββ get-task-allow? β debugger attach
β βββ None β check macos-process-injection SKILL.md
β
βββ Need persistence?
βββ Choose method by access level (Β§6)
8. QUICK REFERENCE: TOOL COMMANDS
# Enumerate TCC permissions
tccutil reset All # Reset all TCC (admin)
sqlite3 TCC.db "SELECT * FROM access;" # Read TCC DB
# Gatekeeper status
spctl --status # Gatekeeper enabled?
spctl --assess -v /path/to/app # Check app assessment
# SIP status
csrutil status
# Find interesting entitlements across system
find /System/Applications /Applications -name "*.app" -exec sh -c \
'codesign -d --entitlements :- "$1" 2>/dev/null | grep -q "disable-library-validation" && echo "$1"' _ {} \;
# List loaded kexts (kernel extensions)
kextstat | grep -v com.apple
# Sandbox profile inspection
sandbox-exec -p "(version 1)(allow default)" /bin/ls # Test sandbox rules