Siguza -- iOS/macOS Kernel Research
Siguza is an independent security researcher specializing in the iOS/macOS kernel. Siguzaβs write-ups are renowned for being deep, detailed, and written in a narrative style that is easy to follow. Especially strong in IOKit exploitation and kernel internals documentation.
Why Siguza Matters
- v0rtex (2017): IOSurface exploit β tfp0 for iOS 10.x β foundation for many jailbreaks
- IOHIDeous (2017): macOS kernel 0-day β IOHIDFamily exploit, brilliant write-up
- psychicpaper (2020): sandbox escape + entitlement bypass 0-day β extremely elegant
- cl0ver (2016): iOS 9 exploit β early work but very instructive write-up
- Kernel research articles: PAC internals, APRR, PPL deep dives
- Collaboration: Contributed to many jailbreak projects
Exploits in Chronological Order
1. cl0ver (October 2016) β iOS 9.0-9.3.4
| Field | Detail |
|---|---|
| Target | iOS 9.0-9.3.4 |
| Goal | tfp0 (kernel task port) |
| Technique | OSUnserializeXML heap manipulation + UAF |
| Blog | blog.siguza.net/cl0ver |
Lesson: OSUnserializeXML = controlled kernel heap allocation primitive. Widely used before being hardened (iOS 12+).
2. v0rtex (December 2017) β iOS 10.x
| Field | Detail |
|---|---|
| CVE | CVE-2017-13861 (same bug class as async_wake) |
| Target | iOS 10.0-10.3.3, 64-bit devices only (A7-A10) |
| Component | IOSurfaceRootUserClient |
| Technique | Mach port reference count bug β UAF β fake port β tfp0 |
| Blog | siguza.github.io/v0rtex |
Why this matters:
- 64-bit devices only (A7-A10); 32-bit port was done separately by tihmstar (h3lix jailbreak)
- Write-up βTurning the IOSurface inside outβ β one of the best exploitation tutorials
- Used by Meridian jailbreak (iOS 10.x)
3. IOHIDeous (December 2017) β macOS <= 10.13.1
| Field | Detail |
|---|---|
| Target | macOS <= 10.13.1 (High Sierra) |
| Component | IOHIDFamily (HID β Human Interface Device drivers) |
| Type | Kernel read/write from any unprivileged user |
| Blog | blog.siguza.net/IOHIDeous |
Lessons:
- IOKit race conditions: IOKit drivers are inherently multi-threaded β a rich source of bugs
- IOHIDFamily specifically: complex, many handlers, shared state between UserClients
- macOS exploitation β directly applicable concepts to iOS (same kernel)
4. psychicpaper (May 2020) β iOS < 13.5
| Field | Detail |
|---|---|
| CVE | CVE-2020-9842 |
| Target | iOS < 13.5 beta 3 |
| Type | Sandbox escape + entitlement bypass (0-day at disclosure) |
| Name meaning | βPsychic paperβ (Doctor Who) β shows whatever credentials you need |
| Blog | siguza.net/psychicpaper |
Vulnerability:
AMFI/amfid had FOUR different entitlement parsers that disagreed:
1. amfid (userspace daemon) β parses entitlements as plist
2. AMFI (kernel extension) β parses entitlements differently
3. Sandbox β has its own entitlement check
4. Provisioning profile validation β another parser
Parser disagreement = confusion about what entitlements a binary has
Result:
β Binary gets ANY entitlements (private, restricted, platform)
β Escape sandbox: claim com.apple.private.security.no-sandbox
β Get task-for-pid: claim task_for_pid-allow
β Become platform binary: claim platform-application
β ALL without an actual Apple certificate!
Why this is the most elegant exploit:
- No memory corruption needed β pure logic bug
- No kernel exploit needed β works entirely in userspace
- Deterministic β works 100% of the time, no races
- Any entitlement β unrestricted capabilities
- Simple β once understood, the exploit code is trivial
Siguzaβs Approach β What to Learn
1. Deep Source Code Reading
Siguza reads XNU source code thoroughly:
- Not just finding bugs β understanding entire subsystems
- Documenting behavior that Apple does not document
- Finding inconsistencies between documentation and code
β Bugs often lie in gaps between intended and actual behavior
2. Finding Logic Bugs
psychicpaper = pure logic bug, no memory corruption
- Find parser disagreements
- Find inconsistent state handling
- Find assumption mismatches between components
β Often more reliable and powerful than memory corruption
3. IOKit Expertise
v0rtex, IOHIDeous: both target IOKit drivers
- Understand IOKit object lifecycle
- Understand UserClient patterns
- Understand race conditions in driver callbacks
β IOKit = largest kernel attack surface
4. Write-Up Quality
Siguza's blog posts:
- Narrative style: tell a story
- Explain WHY decisions were made
- Show failed approaches before the successful one
- Include enough detail to reproduce
β Read these write-ups as tutorials, not just reports
Resources β Read in This Order
- cl0ver (2016) β First exploit, introduces OSUnserializeXML technique
- v0rtex (2017) β IOSurface exploitation masterclass
- IOHIDeous (2017) β IOKit race condition hunting
- psychicpaper (2020) β Logic bug artistry
- Siguzaβs GitHub β Source code for all exploits
- Siguzaβs Blog β All research articles