macOS Kernel Vulnerabilities

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

Pwning OTA

์ด ๋ณด๊ณ ์„œ์—์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์†์ƒ์‹œ์ผœ ์ปค๋„์„ ์นจํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ทจ์•ฝ์ ์ด ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
PoC.


2024: In-the-wild Kernel 0-days (CVE-2024-23225 & CVE-2024-23296)

Apple์€ 2024๋…„ 3์›”์— iOS ๋ฐ macOS์— ๋Œ€ํ•ด ์ ๊ทน์ ์œผ๋กœ ์•…์šฉ๋œ ๋‘ ๊ฐœ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ ๋ฒ„๊ทธ๋ฅผ ํŒจ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค (macOS 14.4/13.6.5/12.7.4์—์„œ ์ˆ˜์ •๋จ).

  • CVE-2024-23225 โ€“ Kernel โ€ข XNU ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์„œ๋ธŒ์‹œ์Šคํ…œ์—์„œ์˜ ๊ฒฝ๊ณ„ ์ดˆ๊ณผ ์“ฐ๊ธฐ๋กœ ์ธํ•ด ๋น„ํŠน๊ถŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ PAC/KTRR๋ฅผ ์šฐํšŒํ•˜์—ฌ ์ปค๋„ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ์ž„์˜์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข libxpc์˜ ๋ฒ„ํผ๋ฅผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐํ•˜๋Š” ์กฐ์ž‘๋œ XPC ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฉฐ, ๋ฉ”์‹œ์ง€๊ฐ€ ๊ตฌ๋ฌธ ๋ถ„์„๋  ๋•Œ ์ปค๋„๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • CVE-2024-23296 โ€“ RTKit โ€ข Apple Silicon RTKit(์‹ค์‹œ๊ฐ„ ๋ณด์กฐ ํ”„๋กœ์„ธ์„œ)์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ. โ€ข ๊ด€์ฐฐ๋œ ์•…์šฉ ์ฒด์ธ์€ ์ปค๋„ R/W๋ฅผ ์œ„ํ•ด CVE-2024-23225๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , PAC๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋ณด์•ˆ ๋ณด์กฐ ํ”„๋กœ์„ธ์„œ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ํƒˆ์ถœํ•˜๊ธฐ ์œ„ํ•ด CVE-2024-23296์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Patch level detection:

sw_vers                 # ProductVersion 14.4 or later is patched
authenticate sudo sysctl kern.osversion  # 23E214 or later for Sonoma

์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ์ทจ์•ฝํ•œ ์„œ๋น„์Šค๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์™„ํ™”ํ•˜์‹ญ์‹œ์˜ค:

launchctl disable system/com.apple.analyticsd
launchctl disable system/com.apple.rtcreportingd

2023: MIG ์œ ํ˜• ํ˜ผ๋™ โ€“ CVE-2023-41075

mach_msg() ์š”์ฒญ์ด ๊ถŒํ•œ์ด ์—†๋Š” IOKit ์‚ฌ์šฉ์ž ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก๋˜๋ฉด MIG์—์„œ ์ƒ์„ฑ๋œ ๊ธ€๋ฃจ ์ฝ”๋“œ์—์„œ ์œ ํ˜• ํ˜ผ๋™์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ๋ฉ”์‹œ์ง€๊ฐ€ ์›๋ž˜ ํ• ๋‹น๋œ ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ์™ธ๋ถ€ ์„ค๋ช…์ž๋กœ ์žฌํ•ด์„๋  ๋•Œ, ๊ณต๊ฒฉ์ž๋Š” ์ปค๋„ ํž™ ์˜์—ญ์— ์ œ์–ด๋œ OOB ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ตญ root๋กœ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›์‹œ ๊ฐœ์š” (Sonoma 14.0-14.1, Ventura 13.5-13.6):

// userspace stub
typed_port_t p = get_user_client();
uint8_t spray[0x4000] = {0x41};
// heap-spray via IOSurfaceFastSetValue
io_service_open_extended(...);
// malformed MIG message triggers confusion
mach_msg(&msg.header, MACH_SEND_MSG|MACH_RCV_MSG, ...);

๊ณต์‹ ์ต์Šคํ”Œ๋กœ์ž‡์€ ๋ฒ„๊ทธ๋ฅผ ๋ฌด๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค:

  1. ํ™œ์„ฑ ํฌ์ธํ„ฐ๋กœ ipc_kmsg ๋ฒ„ํผ๋ฅผ ์Šคํ”„๋ ˆ์ดํ•ฉ๋‹ˆ๋‹ค.
  2. ๋Œ•๊ธ€๋ง ํฌํŠธ์˜ ip_kobject๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค.
  3. mprotect()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PAC-์œ„์กฐ ์ฃผ์†Œ์— ๋งคํ•‘๋œ ์…ธ์ฝ”๋“œ๋กœ ์ ํ”„ํ•ฉ๋‹ˆ๋‹ค.

2024-2025: ์„œ๋“œํŒŒํ‹ฐ Kext๋ฅผ ํ†ตํ•œ SIP ์šฐํšŒ โ€“ CVE-2024-44243 (์ผ๋ช… โ€œSigmaโ€)

Microsoft์˜ ๋ณด์•ˆ ์—ฐ๊ตฌ์›๋“ค์€ ๊ณ ๊ถŒํ•œ ๋ฐ๋ชฌ storagekitd๊ฐ€ ์„œ๋ช…๋˜์ง€ ์•Š์€ ์ปค๋„ ํ™•์žฅ์„ ๋กœ๋“œํ•˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋”ฐ๋ผ์„œ ์™„์ „ํžˆ ํŒจ์น˜๋œ macOS์—์„œ **์‹œ์Šคํ…œ ๋ฌด๊ฒฐ์„ฑ ๋ณดํ˜ธ(SIP)**๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค(15.2 ์ด์ „). ๊ณต๊ฒฉ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ๊ฐœ์ธ ๊ถŒํ•œ com.apple.storagekitd.kernel-management๋ฅผ ๋‚จ์šฉํ•˜์—ฌ ๊ณต๊ฒฉ์ž ์ œ์–ด ํ•˜์— ํ—ฌํผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ํ—ฌํผ๋Š” ์•…์„ฑ kext ๋ฒˆ๋“ค์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์กฐ์ž‘๋œ ์ •๋ณด ์‚ฌ์ „์„ ์‚ฌ์šฉํ•˜์—ฌ IOService::AddPersonalitiesFromKernelModule์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  3. SIP ์‹ ๋ขฐ ๊ฒ€์‚ฌ๊ฐ€ storagekitd์— ์˜ํ•ด kext๊ฐ€ ์Šคํ…Œ์ด์ง•๋œ ํ›„์— ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒ€์ฆ ์ „์— ๋ง-0์—์„œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  csr_set_allow_all(1)๋กœ SIP๋ฅผ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ์ง€ ํŒ:

kmutil showloaded | grep -v com.apple   # list non-Apple kexts
log stream --style syslog --predicate 'senderImagePath contains "storagekitd"'   # watch for suspicious child procs

์ฆ‰๊ฐ์ ์ธ ์ˆ˜์ •์€ macOS Sequoia 15.2 ์ด์ƒ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋น ๋ฅธ ์—ด๊ฑฐ ์š”์•ฝํ‘œ

uname -a                          # Kernel build
kmutil showloaded                 # List loaded kernel extensions
kextstat | grep -v com.apple      # Legacy (pre-Catalina) kext list
sysctl kern.kaslr_enable          # Verify KASLR is ON (should be 1)
csrutil status                    # Check SIP from RecoveryOS
spctl --status                    # Confirms Gatekeeper state

Fuzzing & Research Tools

  • Luftrauser โ€“ Mach ๋ฉ”์‹œ์ง€ ํผ์ €๋กœ MIG ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ํƒ€๊ฒŸ์œผ๋กœ ํ•จ (github.com/preshing/luftrauser).
  • oob-executor โ€“ CVE-2024-23225 ์—ฐ๊ตฌ์— ์‚ฌ์šฉ๋˜๋Š” IPC ์•„์›ƒ ์˜ค๋ธŒ ๋ฐ”์šด๋“œ ์›์‹œ ์ƒ์„ฑ๊ธฐ.
  • kmutil inspect โ€“ ๋กœ๋”ฉ ์ „์— kext๋ฅผ ์ •์ ์œผ๋กœ ๋ถ„์„ํ•˜๋Š” ๋‚ด์žฅ Apple ์œ ํ‹ธ๋ฆฌํ‹ฐ (macOS 11+): kmutil inspect -b io.kext.bundleID.

References

  • Apple. โ€œmacOS Sonoma 14.4์˜ ๋ณด์•ˆ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•˜์—ฌ.โ€ https://support.apple.com/en-us/120895
  • Microsoft Security Blog. โ€œCVE-2024-44243 ๋ถ„์„, ์ปค๋„ ํ™•์žฅ์„ ํ†ตํ•œ macOS ์‹œ์Šคํ…œ ๋ฌด๊ฒฐ์„ฑ ๋ณดํ˜ธ ์šฐํšŒ.โ€ https://www.microsoft.com/en-us/security/blog/2025/01/13/analyzing-cve-2024-44243-a-macos-system-integrity-protection-bypass-through-kernel-extensions/

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ