Elektrine lite

← Feed

@zhuowei@notnow.dev

2026-07-03 18:18 UTC

Still reading through gracecondition’s DirtySlide writeup (https://gracecondition.github.io/posts/dirtyslide/). The writeup says it’s only usable in a macOS virtual machine - not a physical macOS/iOS device. Has anyone looked further into this? The writeup gives two reasons: Triggering 536 in the vulnerable context needs an application sandbox bypass. iOS does support residing shared caches: https://projectzero.google/2021/01/a-look-at-imessage-in-ios-14.html#:~:text=for%203rd%20party%20apps%20this%20means says that if an app crashes inside the shared region, launchd will re-launch the process next time with _POSIX_SPAWN_RESLIDE.And the shared_region_map_and_slide_2_np syscall exists iOS should allow the syscall, at any rate: https://github.com/Lessica/iOS-Sandbox-Profiles/blob/9bf1164cee918fcbf09bb918ef277d2dccfe8078/profiles/23C55__iPhone12%2C1/builtin_collection/container/container.sb#L9789 (unless you’re in lockdown mode in WebKit?) https://github.com/WebKit/WebKit/blob/30dcf5d1c9402dea5a26158e103f7e4333a7eac2/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in#L1241 It also needs an SPTM (Secure Page Table Monitor) bypass Do you have to spray page tables or can you spray something else that also lands in the physmap? I mean, I doubt anyone will actually look into this, since a kernel r/w isn’t enough for a jailbreak. It can only do kfd-style mods, and we already have those on iOS 26.0 via Darksword.

Replies (1)

  • @siguza@infosec.space 2026-07-03 21:38

    @zhuowei@notnow.dev everything "lands" in the physmap. It's a linear mapping of all DRAM managed by XNU/SPTM. So you should be able to pick any target, the difficulty is just that a whole bunch of page types (page tables, SPTM/TXM/Exclave memory, zalloc_ro, any page with executable code) are gonna have their permissions flipped to readonly, so you'd need a way to reliably avoid those or you'd be likely to panic. In addition, getting into a position where you can spawn a binary on iOS... that's a tall order. And it's possible that, under a release iOS kernel, dyld ignores a bunch of env variables that you need in order to pull this off... but I don't know for sure if this is the case, grep for amfiFlags in dyld src.

    Open ##4158044