unc0ver là semi-untethered jailbreak tiêu biểu cho thế hệ “classic” software jailbreaks. Dùng kernel vulnerabilities khác nhau cho từng iOS version.


Overview

Field Detail
Developer Pwn20wnd (Sam Bingner)
iOS range 11.0 — 14.3
Type Semi-untethered
Approach Rootful (remount rootfs)
Kernel exploits Multiple (varies by version)

Exploit Chain (General)

1. App execution
   └─→ unc0ver app sideloaded via AltStore/TrollStore

2. Kernel vulnerability trigger
   └─→ Specific CVE cho từng iOS version:
       - iOS 14.0-14.3: CVE-2021-1782 (voucher_swap variant)
       - iOS 13.x: various IOKit/socket bugs
       - iOS 12.x: voucher_swap, sock_puppet, etc.
       - iOS 11.x: async_wake, empty_list, etc.

3. Kernel read/write primitive
   └─→ Từ vulnerability → fake task port hoặc IOSurface r/w

4. Post-exploitation
   ├─→ Set UID = 0 (root)
   ├─→ Escape sandbox
   ├─→ Patch AMFI / inject trust cache
   ├─→ Remount rootfs read-write
   └─→ Install Cydia/Substrate

5. Persistence
   └─→ Semi-untethered: app survives reboot nhưng jailbreak state lost
       └─→ Re-run unc0ver app after reboot

Key Techniques Used

Fake Task Port (iOS ≤ 13)

1. Trigger UAF hoặc heap overflow → controlled kernel memory
2. Craft fake ipc_port structure
3. Set IKOT_TASK type → point to fake task struct
4. Fake task's map = kernel_map
5. mach_vm_read/write qua fake port → kernel r/w

voucher_swap (iOS 12-13)

1. Exploit mach voucher IPC to create dangling port reference
2. Swap voucher port → replace freed port with controlled data
3. Use swapped port for kernel r/w

Post-Exploitation (Rootful)

1. Find allproc → iterate to find own proc struct
2. Modify p_ucred → root
3. Null sandbox slot → unsandbox
4. Remount rootfs: clear MNT_RDONLY flag on root mount
5. Install bootstrap to /usr, /Library, /etc
6. Start substrate daemon
7. Load tweaks via DYLD_INSERT_LIBRARIES mechanism

Historical Significance

  • Last major rootful jailbreak — iOS 15+ moved to rootless
  • Demonstrated longevity: supported 4 major iOS versions
  • Cydia ecosystem: last jailbreak tightly coupled with Cydia package manager
  • Transition point: after unc0ver, jailbreak community shifted to rootless (Dopamine)

Tài Nguyên

  • unc0ver GitHub
  • Various exploit write-ups for each supported iOS version